正在显示
1 个修改的文件
包含
13 行增加
和
90 行删除
| @@ -2027,102 +2027,25 @@ class FacebookClient(Client): | @@ -2027,102 +2027,25 @@ class FacebookClient(Client): | ||
| 2027 | res = self.graphql_api('ProfileOverviewContainerQuery', '3218725658179182', data) | 2027 | res = self.graphql_api('ProfileOverviewContainerQuery', '3218725658179182', data) |
| 2028 | return res['data']['user']['timeline_feed_units'] | 2028 | return res['data']['user']['timeline_feed_units'] |
| 2029 | 2029 | ||
| 2030 | - def AllPhotosAppCollectionPagelet(self, cursor=None): | 2030 | + def TimelineAppCollection(self, cursor=None): |
| 2031 | """ | 2031 | """ |
| 2032 | 你的照片 | 2032 | 你的照片 |
| 2033 | """ | 2033 | """ |
| 2034 | # 如果cursor为None,则请求 https://www.facebook.com/ana.sofia.583671/photos_all 获取到 | 2034 | # 如果cursor为None,则请求 https://www.facebook.com/ana.sofia.583671/photos_all 获取到 |
| 2035 | - if cursor is None or cursor == '': | ||
| 2036 | - url = 'https://www.facebook.com/ana.sofia.583671/photos_all' | ||
| 2037 | - try: | ||
| 2038 | - session = self._state.session_factory(self.user_obj.user_agent) | ||
| 2039 | - res = session.get(url, cookies=self._state.get_cookies()) | ||
| 2040 | - html_text = res.text | ||
| 2041 | - html_text2 = html_text.replace('<!-- ', '').replace(' -->', '') | ||
| 2042 | - soup = BeautifulSoup(html_text, 'lxml') | ||
| 2043 | - script = soup.find_all('script') | ||
| 2044 | - for key in script: | ||
| 2045 | - cursor = re.findall(r'{__m:"__elem_559218ec_0_0"},"(.*?)"\]\],\["StarGrid"', key.prettify()) | ||
| 2046 | - if len(cursor): | ||
| 2047 | - break | ||
| 2048 | - cursor = cursor[0] | ||
| 2049 | - for key in script: | ||
| 2050 | - num_list = re.findall(r'pagelet_timeline_app_collection_(.*?):(.*?):(.*?)"', key.prettify()) | ||
| 2051 | - if len(num_list): | ||
| 2052 | - break | ||
| 2053 | - num_list = num_list[0] | ||
| 2054 | - for key in script: | ||
| 2055 | - pagelet_token = re.findall(r'pagelet_token:"(.*?)"', key.prettify()) | ||
| 2056 | - if len(pagelet_token): | ||
| 2057 | - break | ||
| 2058 | - pagelet_token = pagelet_token[0] | ||
| 2059 | - print(cursor, num_list) | ||
| 2060 | - cache.set(f'{self.email}:AllPhotosAppCollectionPagelet', num_list) | ||
| 2061 | - cache.set(f'{self.email}:AllPhotosAppCollectionPagelet:pagelet_token', pagelet_token) | ||
| 2062 | - except Exception as err: | ||
| 2063 | - raise BaseException(f'获取必要参数错误{err}') | ||
| 2064 | - soup = BeautifulSoup(html_text2, 'lxml') | ||
| 2065 | - lis = soup.find_all("li", {"class": "fbPhotoStarGridElement"}) | ||
| 2066 | - data_list = list() | ||
| 2067 | - for li in lis: | ||
| 2068 | - pic_id = li.attrs.get('data-fbid', None) | ||
| 2069 | - url = li.attrs.get('data-starred-src', None) | ||
| 2070 | - label = li.a.attrs.get('aria-label', None) | ||
| 2071 | - set_id = furl.furl(li.a.attrs['href']).args.get('set', None) | ||
| 2072 | - data = { | ||
| 2073 | - 'pic_id': pic_id, | ||
| 2074 | - 'set_id': set_id, | ||
| 2075 | - 'url': url, | ||
| 2076 | - 'label': label | ||
| 2077 | - } | ||
| 2078 | - data_list.append(data) | ||
| 2079 | - res = { | ||
| 2080 | - 'data_list': data_list, | ||
| 2081 | - 'cursor': cursor | ||
| 2082 | - } | ||
| 2083 | - return res | ||
| 2084 | - else: | ||
| 2085 | - num_list = cache.get(f'{self.email}:AllPhotosAppCollectionPagelet') | ||
| 2086 | - pagelet_token = cache.get(f'{self.email}:AllPhotosAppCollectionPagelet:pagelet_token') | ||
| 2087 | - assert num_list is not None, 'cursor失效。' | ||
| 2088 | - get_data = {"collection_token": f"{num_list[0]}:{num_list[1]}:{num_list[2]}", | 2035 | + if not cursor: |
| 2036 | + cursor = None | ||
| 2037 | + variables = {"count": 8, | ||
| 2089 | "cursor": cursor, | 2038 | "cursor": cursor, |
| 2090 | - "disablepager": False, "overview": False, "profile_id": num_list[0], | ||
| 2091 | - "pagelet_token": pagelet_token, | ||
| 2092 | - "tab_key": "photos", "lst": f"{num_list[0]}:{num_list[0]}:{str(int(time.time()))}", | ||
| 2093 | - "order": None, | ||
| 2094 | - "sk": "photos", "importer_state": None} | ||
| 2095 | - data = {'data': json.dumps(get_data), | ||
| 2096 | - 'fb_dtsg_ag': self._state.fb_dtsg_ag, | ||
| 2097 | - 'dpr': 2, | ||
| 2098 | - 'jazoest': self._state.jazoest | ||
| 2099 | - } | 2039 | + "scale": 2, "id": "YXBwX2NvbGxlY3Rpb246MTAwMDAzMTQ5NTE2NDk5OjIzMDUyNzI3MzI6NQ=="} |
| 2100 | try: | 2040 | try: |
| 2101 | - url = furl.furl("https://www.facebook.com/ajax/pagelet/generic.php/AllPhotosAppCollectionPagelet").add( | ||
| 2102 | - data).url | ||
| 2103 | - f = self._state._get(url, {}) | ||
| 2104 | - except Exception as err: | ||
| 2105 | - print(err) | ||
| 2106 | - soup = BeautifulSoup(f['payload'], 'lxml') | ||
| 2107 | - lis = soup.find_all("li", {"class": "fbPhotoStarGridElement"}) | ||
| 2108 | - data_list = list() | ||
| 2109 | - for li in lis: | ||
| 2110 | - pic_id = li.attrs.get('data-fbid', None) | ||
| 2111 | - url = li.attrs.get('data-starred-src', None) | ||
| 2112 | - label = li.a.attrs.get('aria-label', None) | ||
| 2113 | - set_id = furl.furl(li.a.attrs['href']).args.get('set', None) | ||
| 2114 | - data = { | ||
| 2115 | - 'pic_id': pic_id, | ||
| 2116 | - 'set_id': set_id, | ||
| 2117 | - 'url': url, | ||
| 2118 | - 'label': label | ||
| 2119 | - } | ||
| 2120 | - data_list.append(data) | ||
| 2121 | - res = { | ||
| 2122 | - 'data_list': data_list, | ||
| 2123 | - 'cursor': cursor | ||
| 2124 | - } | ||
| 2125 | - return res | 2041 | + res = self.graphql_api('ProfileCometAppCollectionPhotosRendererPaginationQuery', '3217177821672058', |
| 2042 | + variables) | ||
| 2043 | + if 'errors' in res: | ||
| 2044 | + return {'success': False, 'errors': res['errors']} | ||
| 2045 | + else: | ||
| 2046 | + return {'success': True, 'data': res['data']} | ||
| 2047 | + except Exception as e: | ||
| 2048 | + return {'success': False, 'errors': str(e)} | ||
| 2126 | 2049 | ||
| 2127 | def delete_dialog(self, pic_id, set_id): | 2050 | def delete_dialog(self, pic_id, set_id): |
| 2128 | """ | 2051 | """ |
-
请 注册 或 登录 后发表评论