|
...
|
...
|
@@ -886,6 +886,8 @@ class FacebookClient(Client): |
|
|
|
if not ext_data:
|
|
|
|
from urllib import parse
|
|
|
|
filter = 'eyJncm91cHNfc2hvd19vbmx5Ijoie1wibmFtZVwiOlwicHVibGljX2dyb3Vwc1wiLFwiYXJnc1wiOlwiXCJ9In0%3D'
|
|
|
|
# filter = 'eyJwdWJsaWNfZ3JvdXBzIjoie1wibmFtZVwiOlwicHVibGljX2dyb3Vwc1wiLFwiYXJnc1wiOlwiXCJ9In0%3D'
|
|
|
|
# https://www.facebook.com/search/groups?q=%E5%91%A8%E6%9D%B0%E4%BC%A6&filters=eyJwdWJsaWNfZ3JvdXBzIjoie1wibmFtZVwiOlwicHVibGljX2dyb3Vwc1wiLFwiYXJnc1wiOlwiXCJ9In0%3D
|
|
|
|
r = self._state._session.get(
|
|
|
|
f'https://www.facebook.com/search/groups/?q={parse.quote(name)}&epa=FILTERS&filters={filter}')
|
|
|
|
fbid = parse_html.get_all_group(r.text)
|
|
...
|
...
|
@@ -904,6 +906,46 @@ class FacebookClient(Client): |
|
|
|
'ext_data': ext_data,
|
|
|
|
}
|
|
|
|
|
|
|
|
def SearchRenderable(self, name, cursor='', filters=[]):
|
|
|
|
"""新搜索群组功能"""
|
|
|
|
if not cursor:
|
|
|
|
cursor = None
|
|
|
|
variables = {
|
|
|
|
"allow_streaming": False,
|
|
|
|
"args": {
|
|
|
|
"callsite": "COMET_GLOBAL_SEARCH",
|
|
|
|
"config": {"bootstrap_config": None, "exact_match": False, "high_confidence_config": None,
|
|
|
|
"watch_config": None},
|
|
|
|
"context": {"bsid": "b3e300c-1a0b-4643-91a7-d34a582fbb6b", "tsid": "0.4453413139497706"},
|
|
|
|
"experience": {"fbid": None, "grammar_bqf": None, "role": None, "type": "GROUPS_TAB"},
|
|
|
|
"filters": filters,
|
|
|
|
"text": name}, "cursor": cursor, "feedbackSource": 23,
|
|
|
|
"fetch_filters": True, "scale": 2, "stream_initial_count": 0}
|
|
|
|
try:
|
|
|
|
res = self.graphql_api('CometSearchResultsInitialResultsQuery', '4370093036395458', variables)
|
|
|
|
if 'errors' in res:
|
|
|
|
return {'success': False, 'errors': res['errors']}
|
|
|
|
else:
|
|
|
|
return {'success': True, 'data': res['data']}
|
|
|
|
except Exception as e:
|
|
|
|
return {'success': False, 'errors': str(e)}
|
|
|
|
|
|
|
|
def GraphSearchQueryFilter(self, city):
|
|
|
|
"""搜索分组过滤地区"""
|
|
|
|
variables = {"count": 8,
|
|
|
|
"filterID": "Z3NxZjp7IjAiOiJicm93c2VfaW5zdGFudF9maWx0ZXIiLCIxIjoia2V5d29yZHNfZ3JvdXBzKFx1MDAyNUU1XHUwMDI1OTFcdTAwMjVBOFx1MDAyNUU2XHUwMDI1OURcdTAwMjVCMFx1MDAyNUU0XHUwMDI1QkNcdTAwMjVBNikiLCIzIjoiNDRiYzM4MTYtOWQwNS00NWQyLTljMDAtN2M0MzMyMGQwMzM1IiwiY3VzdG9tX3ZhbHVlIjoiQnJvd3NlR3JvdXBzQ2l0eUluc3RhbnRGaWx0ZXJDdXN0b21WYWx1ZSJ9",
|
|
|
|
"profile_picture_size": None, "query": city}
|
|
|
|
try:
|
|
|
|
res = self.graphql_api('useCometSearchFilterTypeaheadCompositeNetworkDataSourceQuery', '2065678270223319',
|
|
|
|
variables)
|
|
|
|
if 'errors' in res:
|
|
|
|
return {'success': False, 'errors': res['errors']}
|
|
|
|
else:
|
|
|
|
return {'success': True, 'data': res['data']}
|
|
|
|
except Exception as e:
|
|
|
|
return {'success': False, 'errors': str(e)}
|
|
|
|
pass
|
|
|
|
|
|
|
|
def searchForPostByPublic(self, keyword, ext_data=None):
|
|
|
|
if not ext_data:
|
|
|
|
f = furl.furl('https://www.facebook.com/search/posts/')
|
...
|
...
|
|