作者 陈俊学

2.3.8

增加新版本分组接口,增加可以检索公开,非公开,我的分组,按照城市过滤
增加分组过滤城市检索功能
@@ -4,5 +4,5 @@ SERVER: @@ -4,5 +4,5 @@ SERVER:
4 reconnect_interval: 3 4 reconnect_interval: 3
5 5
6 VERSION: 6 VERSION:
7 - code: 127  
8 - name: 2.3.7  
  7 + code: 128
  8 + name: 2.3.8
@@ -57,7 +57,10 @@ class CallBack(): @@ -57,7 +57,10 @@ class CallBack():
57 def onLoggingIn(self, email, password, cookie, user_agent=None, proxy=None, clear: bool = False): 57 def onLoggingIn(self, email, password, cookie, user_agent=None, proxy=None, clear: bool = False):
58 if clear: 58 if clear:
59 print('清理缓存登录', email) 59 print('清理缓存登录', email)
60 - models.UserList.remove(email=email) 60 + try:
  61 + models.UserList.remove(email=email)
  62 + except:
  63 + pass
61 user_obj = models.UserList.get(email=email) 64 user_obj = models.UserList.get(email=email)
62 if not user_obj: 65 if not user_obj:
63 print('初次登录') 66 print('初次登录')
@@ -886,6 +886,8 @@ class FacebookClient(Client): @@ -886,6 +886,8 @@ class FacebookClient(Client):
886 if not ext_data: 886 if not ext_data:
887 from urllib import parse 887 from urllib import parse
888 filter = 'eyJncm91cHNfc2hvd19vbmx5Ijoie1wibmFtZVwiOlwicHVibGljX2dyb3Vwc1wiLFwiYXJnc1wiOlwiXCJ9In0%3D' 888 filter = 'eyJncm91cHNfc2hvd19vbmx5Ijoie1wibmFtZVwiOlwicHVibGljX2dyb3Vwc1wiLFwiYXJnc1wiOlwiXCJ9In0%3D'
  889 + # filter = 'eyJwdWJsaWNfZ3JvdXBzIjoie1wibmFtZVwiOlwicHVibGljX2dyb3Vwc1wiLFwiYXJnc1wiOlwiXCJ9In0%3D'
  890 + # https://www.facebook.com/search/groups?q=%E5%91%A8%E6%9D%B0%E4%BC%A6&filters=eyJwdWJsaWNfZ3JvdXBzIjoie1wibmFtZVwiOlwicHVibGljX2dyb3Vwc1wiLFwiYXJnc1wiOlwiXCJ9In0%3D
889 r = self._state._session.get( 891 r = self._state._session.get(
890 f'https://www.facebook.com/search/groups/?q={parse.quote(name)}&epa=FILTERS&filters={filter}') 892 f'https://www.facebook.com/search/groups/?q={parse.quote(name)}&epa=FILTERS&filters={filter}')
891 fbid = parse_html.get_all_group(r.text) 893 fbid = parse_html.get_all_group(r.text)
@@ -904,6 +906,46 @@ class FacebookClient(Client): @@ -904,6 +906,46 @@ class FacebookClient(Client):
904 'ext_data': ext_data, 906 'ext_data': ext_data,
905 } 907 }
906 908
  909 + def SearchRenderable(self, name, cursor='', filters=[]):
  910 + """新搜索群组功能"""
  911 + if not cursor:
  912 + cursor = None
  913 + variables = {
  914 + "allow_streaming": False,
  915 + "args": {
  916 + "callsite": "COMET_GLOBAL_SEARCH",
  917 + "config": {"bootstrap_config": None, "exact_match": False, "high_confidence_config": None,
  918 + "watch_config": None},
  919 + "context": {"bsid": "b3e300c-1a0b-4643-91a7-d34a582fbb6b", "tsid": "0.4453413139497706"},
  920 + "experience": {"fbid": None, "grammar_bqf": None, "role": None, "type": "GROUPS_TAB"},
  921 + "filters": filters,
  922 + "text": name}, "cursor": cursor, "feedbackSource": 23,
  923 + "fetch_filters": True, "scale": 2, "stream_initial_count": 0}
  924 + try:
  925 + res = self.graphql_api('CometSearchResultsInitialResultsQuery', '4370093036395458', variables)
  926 + if 'errors' in res:
  927 + return {'success': False, 'errors': res['errors']}
  928 + else:
  929 + return {'success': True, 'data': res['data']}
  930 + except Exception as e:
  931 + return {'success': False, 'errors': str(e)}
  932 +
  933 + def GraphSearchQueryFilter(self, city):
  934 + """搜索分组过滤地区"""
  935 + variables = {"count": 8,
  936 + "filterID": "Z3NxZjp7IjAiOiJicm93c2VfaW5zdGFudF9maWx0ZXIiLCIxIjoia2V5d29yZHNfZ3JvdXBzKFx1MDAyNUU1XHUwMDI1OTFcdTAwMjVBOFx1MDAyNUU2XHUwMDI1OURcdTAwMjVCMFx1MDAyNUU0XHUwMDI1QkNcdTAwMjVBNikiLCIzIjoiNDRiYzM4MTYtOWQwNS00NWQyLTljMDAtN2M0MzMyMGQwMzM1IiwiY3VzdG9tX3ZhbHVlIjoiQnJvd3NlR3JvdXBzQ2l0eUluc3RhbnRGaWx0ZXJDdXN0b21WYWx1ZSJ9",
  937 + "profile_picture_size": None, "query": city}
  938 + try:
  939 + res = self.graphql_api('useCometSearchFilterTypeaheadCompositeNetworkDataSourceQuery', '2065678270223319',
  940 + variables)
  941 + if 'errors' in res:
  942 + return {'success': False, 'errors': res['errors']}
  943 + else:
  944 + return {'success': True, 'data': res['data']}
  945 + except Exception as e:
  946 + return {'success': False, 'errors': str(e)}
  947 + pass
  948 +
907 def searchForPostByPublic(self, keyword, ext_data=None): 949 def searchForPostByPublic(self, keyword, ext_data=None):
908 if not ext_data: 950 if not ext_data:
909 f = furl.furl('https://www.facebook.com/search/posts/') 951 f = furl.furl('https://www.facebook.com/search/posts/')
@@ -166,7 +166,7 @@ class PCState(State): @@ -166,7 +166,7 @@ class PCState(State):
166 'lgnjs': int(time.time()), 166 'lgnjs': int(time.time()),
167 'timezone': '-480' 167 'timezone': '-480'
168 }) 168 })
169 - r = session.post('https://zh-cn.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=110', 169 + r = session.post('https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=110',
170 data=data) 170 data=data)
171 setCookie = r.headers.get('Set-Cookie') or '' 171 setCookie = r.headers.get('Set-Cookie') or ''
172 172