|
@@ -150,6 +150,7 @@ class RequestSource(): |
|
@@ -150,6 +150,7 @@ class RequestSource(): |
|
150
|
3: 'profile_friends',
|
150
|
3: 'profile_friends',
|
|
151
|
4: 'group_member_list',
|
151
|
4: 'group_member_list',
|
|
152
|
5: 'hovercard',
|
152
|
5: 'hovercard',
|
|
|
|
153
|
+ 6: 'browse',
|
|
153
|
}
|
154
|
}
|
|
154
|
|
155
|
|
|
155
|
@classmethod
|
156
|
@classmethod
|
|
@@ -779,6 +780,46 @@ class FacebookClient(Client): |
|
@@ -779,6 +780,46 @@ class FacebookClient(Client): |
|
779
|
'ext_data': ext_data,
|
780
|
'ext_data': ext_data,
|
|
780
|
}
|
781
|
}
|
|
781
|
|
782
|
|
|
|
|
783
|
+ def friendsList(self, ext_data=None):
|
|
|
|
784
|
+ if ext_data:
|
|
|
|
785
|
+ data = {'av': self.uid,
|
|
|
|
786
|
+ 'fb_api_caller_class': 'RelayModern',
|
|
|
|
787
|
+ 'fb_api_req_friendly_name': 'ProfileCometAppCollectionListRendererPaginationQuery',
|
|
|
|
788
|
+ 'variables': json.dumps({"count": 20,
|
|
|
|
789
|
+ "cursor": ext_data['cursor'],
|
|
|
|
790
|
+ "search": None, "scale": 2,
|
|
|
|
791
|
+ "privacySelectorRenderLocation": "COMET_PROFILE_COLLECTIONS",
|
|
|
|
792
|
+ "id": ext_data['id']}),
|
|
|
|
793
|
+ 'doc_id': '2773917206008873'}
|
|
|
|
794
|
+ res = self._post('/api/graphql/', data)
|
|
|
|
795
|
+ res = res['data']['node']
|
|
|
|
796
|
+ else:
|
|
|
|
797
|
+ res = self._state._session.get(self._state.page_url + '/friends')
|
|
|
|
798
|
+ res = parse_html.get_frient_div(res.text)
|
|
|
|
799
|
+ edges = res['items']['edges']
|
|
|
|
800
|
+ count = res['items']['count']
|
|
|
|
801
|
+ friends = []
|
|
|
|
802
|
+ for edge in edges:
|
|
|
|
803
|
+ node = edge['node']
|
|
|
|
804
|
+ data = {
|
|
|
|
805
|
+ 'image': node['image']['uri'],
|
|
|
|
806
|
+ 'name': node['title']['text'],
|
|
|
|
807
|
+ 'fbid': node['node']['id'],
|
|
|
|
808
|
+ 'url': node['node']['url']
|
|
|
|
809
|
+ }
|
|
|
|
810
|
+ friends.append(data)
|
|
|
|
811
|
+
|
|
|
|
812
|
+ respone = {
|
|
|
|
813
|
+ 'items': friends,
|
|
|
|
814
|
+ 'count': count,
|
|
|
|
815
|
+ 'ext_data': {
|
|
|
|
816
|
+ 'id': res['id'],
|
|
|
|
817
|
+ 'cursor': res['items']['page_info']['end_cursor']
|
|
|
|
818
|
+ },
|
|
|
|
819
|
+ 'has_next_page': res['items']['page_info']['has_next_page']
|
|
|
|
820
|
+ }
|
|
|
|
821
|
+ return respone
|
|
|
|
822
|
+
|
|
782
|
def changePwd(self, old, new):
|
823
|
def changePwd(self, old, new):
|
|
783
|
data = {
|
824
|
data = {
|
|
784
|
'recommended': False,
|
825
|
'recommended': False,
|
|
@@ -855,3 +896,39 @@ class FacebookClient(Client): |
|
@@ -855,3 +896,39 @@ class FacebookClient(Client): |
|
855
|
}
|
896
|
}
|
|
856
|
res = self._post('/ajax/settings/language/account.php', data)
|
897
|
res = self._post('/ajax/settings/language/account.php', data)
|
|
857
|
return {"success": True}
|
898
|
return {"success": True}
|
|
|
|
899
|
+
|
|
|
|
900
|
+ def inboxMessenger(self, ext_data=0):
|
|
|
|
901
|
+ if ext_data:
|
|
|
|
902
|
+ info = self.fetchThreadList(before=int(ext_data))
|
|
|
|
903
|
+ else:
|
|
|
|
904
|
+ info = self.fetchThreadList()
|
|
|
|
905
|
+ next_data = info[-1].last_message_timestamp if info else 0
|
|
|
|
906
|
+ friends = []
|
|
|
|
907
|
+ for foo in info:
|
|
|
|
908
|
+ if ThreadType.GROUP == foo.type:
|
|
|
|
909
|
+ friends.append({
|
|
|
|
910
|
+ 'type': foo.type.name,
|
|
|
|
911
|
+ 'fbid': foo.uid,
|
|
|
|
912
|
+ 'name': foo.name,
|
|
|
|
913
|
+ 'image': foo.photo,
|
|
|
|
914
|
+ 'url': None,
|
|
|
|
915
|
+ 'gender': None,
|
|
|
|
916
|
+ 'message_count': foo.message_count,
|
|
|
|
917
|
+ 'members': list(foo.participants),
|
|
|
|
918
|
+ })
|
|
|
|
919
|
+ elif ThreadType.USER == foo.type:
|
|
|
|
920
|
+ friends.append({
|
|
|
|
921
|
+ 'type': foo.type.name,
|
|
|
|
922
|
+ 'fbid': foo.uid,
|
|
|
|
923
|
+ 'name': foo.name,
|
|
|
|
924
|
+ 'image': foo.photo,
|
|
|
|
925
|
+ 'url': foo.url,
|
|
|
|
926
|
+ 'gender': 'boy' if foo.gender == 'male_singular' else 'girl',
|
|
|
|
927
|
+ 'message_count': foo.message_count,
|
|
|
|
928
|
+ })
|
|
|
|
929
|
+
|
|
|
|
930
|
+ response = {
|
|
|
|
931
|
+ 'items': friends,
|
|
|
|
932
|
+ 'ext_data': next_data
|
|
|
|
933
|
+ }
|
|
|
|
934
|
+ return response |