|
...
|
...
|
@@ -150,6 +150,7 @@ class RequestSource(): |
|
|
|
3: 'profile_friends',
|
|
|
|
4: 'group_member_list',
|
|
|
|
5: 'hovercard',
|
|
|
|
6: 'browse',
|
|
|
|
}
|
|
|
|
|
|
|
|
@classmethod
|
|
...
|
...
|
@@ -779,6 +780,46 @@ class FacebookClient(Client): |
|
|
|
'ext_data': ext_data,
|
|
|
|
}
|
|
|
|
|
|
|
|
def friendsList(self, ext_data=None):
|
|
|
|
if ext_data:
|
|
|
|
data = {'av': self.uid,
|
|
|
|
'fb_api_caller_class': 'RelayModern',
|
|
|
|
'fb_api_req_friendly_name': 'ProfileCometAppCollectionListRendererPaginationQuery',
|
|
|
|
'variables': json.dumps({"count": 20,
|
|
|
|
"cursor": ext_data['cursor'],
|
|
|
|
"search": None, "scale": 2,
|
|
|
|
"privacySelectorRenderLocation": "COMET_PROFILE_COLLECTIONS",
|
|
|
|
"id": ext_data['id']}),
|
|
|
|
'doc_id': '2773917206008873'}
|
|
|
|
res = self._post('/api/graphql/', data)
|
|
|
|
res = res['data']['node']
|
|
|
|
else:
|
|
|
|
res = self._state._session.get(self._state.page_url + '/friends')
|
|
|
|
res = parse_html.get_frient_div(res.text)
|
|
|
|
edges = res['items']['edges']
|
|
|
|
count = res['items']['count']
|
|
|
|
friends = []
|
|
|
|
for edge in edges:
|
|
|
|
node = edge['node']
|
|
|
|
data = {
|
|
|
|
'image': node['image']['uri'],
|
|
|
|
'name': node['title']['text'],
|
|
|
|
'fbid': node['node']['id'],
|
|
|
|
'url': node['node']['url']
|
|
|
|
}
|
|
|
|
friends.append(data)
|
|
|
|
|
|
|
|
respone = {
|
|
|
|
'items': friends,
|
|
|
|
'count': count,
|
|
|
|
'ext_data': {
|
|
|
|
'id': res['id'],
|
|
|
|
'cursor': res['items']['page_info']['end_cursor']
|
|
|
|
},
|
|
|
|
'has_next_page': res['items']['page_info']['has_next_page']
|
|
|
|
}
|
|
|
|
return respone
|
|
|
|
|
|
|
|
def changePwd(self, old, new):
|
|
|
|
data = {
|
|
|
|
'recommended': False,
|
|
...
|
...
|
@@ -855,3 +896,39 @@ class FacebookClient(Client): |
|
|
|
}
|
|
|
|
res = self._post('/ajax/settings/language/account.php', data)
|
|
|
|
return {"success": True}
|
|
|
|
|
|
|
|
def inboxMessenger(self, ext_data=0):
|
|
|
|
if ext_data:
|
|
|
|
info = self.fetchThreadList(before=int(ext_data))
|
|
|
|
else:
|
|
|
|
info = self.fetchThreadList()
|
|
|
|
next_data = info[-1].last_message_timestamp if info else 0
|
|
|
|
friends = []
|
|
|
|
for foo in info:
|
|
|
|
if ThreadType.GROUP == foo.type:
|
|
|
|
friends.append({
|
|
|
|
'type': foo.type.name,
|
|
|
|
'fbid': foo.uid,
|
|
|
|
'name': foo.name,
|
|
|
|
'image': foo.photo,
|
|
|
|
'url': None,
|
|
|
|
'gender': None,
|
|
|
|
'message_count': foo.message_count,
|
|
|
|
'members': list(foo.participants),
|
|
|
|
})
|
|
|
|
elif ThreadType.USER == foo.type:
|
|
|
|
friends.append({
|
|
|
|
'type': foo.type.name,
|
|
|
|
'fbid': foo.uid,
|
|
|
|
'name': foo.name,
|
|
|
|
'image': foo.photo,
|
|
|
|
'url': foo.url,
|
|
|
|
'gender': 'boy' if foo.gender == 'male_singular' else 'girl',
|
|
|
|
'message_count': foo.message_count,
|
|
|
|
})
|
|
|
|
|
|
|
|
response = {
|
|
|
|
'items': friends,
|
|
|
|
'ext_data': next_data
|
|
|
|
}
|
|
|
|
return response |
...
|
...
|
|