bb-fca 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/deltas/apis/posting/friend.js +368 -52
- package/dist/deltas/apis/posting/friend.js.map +1 -1
- package/dist/deltas/apis/users/changeName.js +134 -0
- package/dist/deltas/apis/users/changeName.js.map +1 -0
- package/dist/index.d.ts +63 -2
- package/dist/types/deltas/apis/posting/friend.d.ts +20 -3
- package/dist/types/deltas/apis/users/changeName.d.ts +15 -0
- package/package.json +1 -1
- package/src/deltas/apis/posting/friend.ts +573 -161
- package/src/deltas/apis/users/changeName.ts +151 -0
- package/src/types/index.d.ts +63 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = default_1;
|
|
4
|
+
const utils = require("../../../utils");
|
|
4
5
|
/**
|
|
5
6
|
* @ChoruOfficial
|
|
6
7
|
* @description A module for managing friend-related actions like listing friends, handling requests, and getting suggestions.
|
|
@@ -26,20 +27,24 @@ function default_1(defaultFuncs, api, ctx) {
|
|
|
26
27
|
else if (type === 'suggestions' && viewer?.people_you_may_know?.edges) {
|
|
27
28
|
edges = viewer.people_you_may_know.edges;
|
|
28
29
|
}
|
|
29
|
-
else if (type === 'list' &&
|
|
30
|
-
|
|
30
|
+
else if (type === 'list' &&
|
|
31
|
+
data?.data?.node?.all_collections?.nodes[0]?.style_renderer?.collection
|
|
32
|
+
?.pageItems?.edges) {
|
|
33
|
+
edges =
|
|
34
|
+
data.data.node.all_collections.nodes[0].style_renderer.collection
|
|
35
|
+
.pageItems.edges;
|
|
31
36
|
}
|
|
32
37
|
else {
|
|
33
38
|
return [];
|
|
34
39
|
}
|
|
35
|
-
return edges.map(edge => {
|
|
40
|
+
return edges.map((edge) => {
|
|
36
41
|
const node = edge.node;
|
|
37
42
|
return {
|
|
38
43
|
userID: node.id || node.node?.id,
|
|
39
44
|
name: node.name || node.title?.text,
|
|
40
45
|
profilePicture: node.profile_picture?.uri || node.image?.uri,
|
|
41
46
|
socialContext: node.social_context?.text || node.subtitle_text?.text,
|
|
42
|
-
url: node.url
|
|
47
|
+
url: node.url,
|
|
43
48
|
};
|
|
44
49
|
});
|
|
45
50
|
}
|
|
@@ -51,83 +56,129 @@ function default_1(defaultFuncs, api, ctx) {
|
|
|
51
56
|
* @author ChoruOfficial
|
|
52
57
|
*/
|
|
53
58
|
/**
|
|
54
|
-
* Fetches the list of incoming friend requests.
|
|
59
|
+
* Fetches the list of incoming friend requests by parsing the /friends/requests page.
|
|
55
60
|
* @async
|
|
56
61
|
* @returns {Promise<Array<Object>>} A promise that resolves to an array of friend request objects.
|
|
57
|
-
* @throws {Error} If the API request fails or
|
|
62
|
+
* @throws {Error} If the API request fails or HTML parsing fails.
|
|
58
63
|
*/
|
|
59
64
|
requests: async function () {
|
|
60
65
|
try {
|
|
66
|
+
const url = 'https://www.facebook.com/friends/requests';
|
|
67
|
+
const resData = await utils.get(url, ctx.jar, {}, ctx.globalOptions, ctx);
|
|
68
|
+
const html = resData.body.toString();
|
|
69
|
+
return extractFriendRequestsFromHTML(html);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
utils.error('friend.requests', err);
|
|
73
|
+
throw err;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
/**
|
|
77
|
+
* Accepts a friend request.
|
|
78
|
+
* @async
|
|
79
|
+
* @param {string} identifier The user ID or name of the person whose friend request is to be accepted. If a name is provided, the function will search through pending requests.
|
|
80
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful acceptance.
|
|
81
|
+
* @throws {Error} If the identifier is missing, the user is not found in requests, or the API call fails.
|
|
82
|
+
*/
|
|
83
|
+
accept: async function (identifier) {
|
|
84
|
+
try {
|
|
85
|
+
if (!identifier)
|
|
86
|
+
throw new Error('A name or user ID is required.');
|
|
87
|
+
let targetUserID = identifier;
|
|
88
|
+
if (isNaN(identifier)) {
|
|
89
|
+
const requests = await friendModule.requests();
|
|
90
|
+
const found = requests.find((req) => req.name.toLowerCase().includes(identifier.toLowerCase()));
|
|
91
|
+
if (!found)
|
|
92
|
+
throw new Error(`Could not find any friend request matching "${identifier}".`);
|
|
93
|
+
targetUserID = found.userID;
|
|
94
|
+
}
|
|
95
|
+
const variables = {
|
|
96
|
+
input: {
|
|
97
|
+
click_correlation_id: Date.now().toString(),
|
|
98
|
+
click_proof_validation_result: '{"validated":true}',
|
|
99
|
+
friend_requester_id: targetUserID,
|
|
100
|
+
friending_channel: 'FRIENDS_HOME_REQUESTS',
|
|
101
|
+
warn_ack: false,
|
|
102
|
+
actor_id: ctx.userID,
|
|
103
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
104
|
+
},
|
|
105
|
+
scale: 1,
|
|
106
|
+
refresh_num: 0,
|
|
107
|
+
should_fix_banner: true,
|
|
108
|
+
};
|
|
61
109
|
const form = {
|
|
62
110
|
av: ctx.userID,
|
|
63
111
|
__user: ctx.userID,
|
|
64
|
-
__a:
|
|
112
|
+
__a: '1',
|
|
65
113
|
fb_dtsg: ctx.fb_dtsg,
|
|
66
114
|
jazoest: ctx.jazoest,
|
|
67
115
|
lsd: ctx.lsd,
|
|
68
|
-
fb_api_caller_class:
|
|
69
|
-
fb_api_req_friendly_name:
|
|
70
|
-
variables: JSON.stringify(
|
|
71
|
-
doc_id:
|
|
116
|
+
fb_api_caller_class: 'RelayModern',
|
|
117
|
+
fb_api_req_friendly_name: 'FriendingCometFriendRequestConfirmMutation',
|
|
118
|
+
variables: JSON.stringify(variables),
|
|
119
|
+
doc_id: '24769943302682670',
|
|
72
120
|
};
|
|
73
|
-
const res = await defaultFuncs.post(
|
|
121
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
74
122
|
if (res.data.errors)
|
|
75
123
|
throw new Error(JSON.stringify(res.data.errors));
|
|
76
|
-
return
|
|
124
|
+
return res.data.data;
|
|
77
125
|
}
|
|
78
126
|
catch (err) {
|
|
127
|
+
if (err.message?.includes('1431004')) {
|
|
128
|
+
throw new Error('I cannot accept this friend request right now. There might be a problem with the account or you need to wait.');
|
|
129
|
+
}
|
|
79
130
|
throw err;
|
|
80
131
|
}
|
|
81
132
|
},
|
|
82
133
|
/**
|
|
83
|
-
*
|
|
134
|
+
* Deletes/rejects a friend request.
|
|
84
135
|
* @async
|
|
85
|
-
* @param {string} identifier The user ID or name of the person whose friend request is to be
|
|
86
|
-
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful
|
|
136
|
+
* @param {string} identifier The user ID or name of the person whose friend request is to be deleted. If a name is provided, the function will search through pending requests.
|
|
137
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful deletion.
|
|
87
138
|
* @throws {Error} If the identifier is missing, the user is not found in requests, or the API call fails.
|
|
88
139
|
*/
|
|
89
|
-
|
|
140
|
+
delete: async function (identifier) {
|
|
90
141
|
try {
|
|
91
142
|
if (!identifier)
|
|
92
|
-
throw new Error(
|
|
143
|
+
throw new Error('A name or user ID is required.');
|
|
93
144
|
let targetUserID = identifier;
|
|
94
145
|
if (isNaN(identifier)) {
|
|
95
146
|
const requests = await friendModule.requests();
|
|
96
|
-
const found = requests.find(req => req.name.toLowerCase().includes(identifier.toLowerCase()));
|
|
147
|
+
const found = requests.find((req) => req.name.toLowerCase().includes(identifier.toLowerCase()));
|
|
97
148
|
if (!found)
|
|
98
149
|
throw new Error(`Could not find any friend request matching "${identifier}".`);
|
|
99
150
|
targetUserID = found.userID;
|
|
100
151
|
}
|
|
101
152
|
const variables = {
|
|
102
153
|
input: {
|
|
154
|
+
click_correlation_id: Date.now().toString(),
|
|
155
|
+
click_proof_validation_result: '{"validated":true}',
|
|
103
156
|
friend_requester_id: targetUserID,
|
|
104
|
-
friending_channel:
|
|
157
|
+
friending_channel: 'FRIENDS_HOME_REQUESTS',
|
|
105
158
|
actor_id: ctx.userID,
|
|
106
|
-
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString()
|
|
159
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
107
160
|
},
|
|
108
|
-
scale:
|
|
161
|
+
scale: 1,
|
|
162
|
+
refresh_num: 0,
|
|
109
163
|
};
|
|
110
164
|
const form = {
|
|
111
165
|
av: ctx.userID,
|
|
112
166
|
__user: ctx.userID,
|
|
113
|
-
__a:
|
|
167
|
+
__a: '1',
|
|
114
168
|
fb_dtsg: ctx.fb_dtsg,
|
|
115
169
|
jazoest: ctx.jazoest,
|
|
116
170
|
lsd: ctx.lsd,
|
|
117
|
-
fb_api_caller_class:
|
|
118
|
-
fb_api_req_friendly_name:
|
|
171
|
+
fb_api_caller_class: 'RelayModern',
|
|
172
|
+
fb_api_req_friendly_name: 'FriendingCometFriendRequestDeleteMutation',
|
|
119
173
|
variables: JSON.stringify(variables),
|
|
120
|
-
doc_id:
|
|
174
|
+
doc_id: '25693816160239288',
|
|
121
175
|
};
|
|
122
|
-
const res = await defaultFuncs.post(
|
|
176
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
123
177
|
if (res.data.errors)
|
|
124
178
|
throw new Error(JSON.stringify(res.data.errors));
|
|
125
179
|
return res.data.data;
|
|
126
180
|
}
|
|
127
181
|
catch (err) {
|
|
128
|
-
if (err.message?.includes("1431004")) {
|
|
129
|
-
throw new Error("I cannot accept this friend request right now. There might be a problem with the account or you need to wait.");
|
|
130
|
-
}
|
|
131
182
|
throw err;
|
|
132
183
|
}
|
|
133
184
|
},
|
|
@@ -146,21 +197,21 @@ function default_1(defaultFuncs, api, ctx) {
|
|
|
146
197
|
scale: 2,
|
|
147
198
|
sectionToken: sectionToken,
|
|
148
199
|
useDefaultActor: false,
|
|
149
|
-
userID: userID
|
|
200
|
+
userID: userID,
|
|
150
201
|
};
|
|
151
202
|
const form = {
|
|
152
203
|
av: ctx.userID,
|
|
153
204
|
__user: ctx.userID,
|
|
154
|
-
__a:
|
|
205
|
+
__a: '1',
|
|
155
206
|
fb_dtsg: ctx.fb_dtsg,
|
|
156
207
|
jazoest: ctx.jazoest,
|
|
157
208
|
lsd: ctx.lsd,
|
|
158
|
-
fb_api_caller_class:
|
|
159
|
-
fb_api_req_friendly_name:
|
|
209
|
+
fb_api_caller_class: 'RelayModern',
|
|
210
|
+
fb_api_req_friendly_name: 'ProfileCometTopAppSectionQuery',
|
|
160
211
|
variables: JSON.stringify(variables),
|
|
161
|
-
doc_id:
|
|
212
|
+
doc_id: '24492266383698794',
|
|
162
213
|
};
|
|
163
|
-
const res = await defaultFuncs.post(
|
|
214
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
164
215
|
if (res.data.errors)
|
|
165
216
|
throw new Error(JSON.stringify(res.data.errors));
|
|
166
217
|
return formatFriends(res.data, 'list');
|
|
@@ -173,6 +224,51 @@ function default_1(defaultFuncs, api, ctx) {
|
|
|
173
224
|
* @namespace api.friend.suggest
|
|
174
225
|
* @description Functions for managing friend suggestions.
|
|
175
226
|
*/
|
|
227
|
+
getCurrentFriends: getCurrentFriends,
|
|
228
|
+
/**
|
|
229
|
+
* Sends a friend request to a user by their ID (via Profile Button channel).
|
|
230
|
+
* @async
|
|
231
|
+
* @param {string} userID The ID of the user to add as a friend.
|
|
232
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data on success.
|
|
233
|
+
* @throws {Error} If the userID is missing or the API request fails.
|
|
234
|
+
*/
|
|
235
|
+
add: async function (userID) {
|
|
236
|
+
try {
|
|
237
|
+
if (!userID)
|
|
238
|
+
throw new Error('userID is required.');
|
|
239
|
+
const variables = {
|
|
240
|
+
input: {
|
|
241
|
+
click_correlation_id: Date.now().toString(),
|
|
242
|
+
click_proof_validation_result: '{"validated":true}',
|
|
243
|
+
friend_requestee_ids: [userID],
|
|
244
|
+
friending_channel: 'PROFILE_BUTTON',
|
|
245
|
+
warn_ack_for_ids: [],
|
|
246
|
+
actor_id: ctx.userID,
|
|
247
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
248
|
+
},
|
|
249
|
+
scale: 1,
|
|
250
|
+
};
|
|
251
|
+
const form = {
|
|
252
|
+
av: ctx.userID,
|
|
253
|
+
__user: ctx.userID,
|
|
254
|
+
__a: '1',
|
|
255
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
256
|
+
jazoest: ctx.jazoest,
|
|
257
|
+
lsd: ctx.lsd,
|
|
258
|
+
fb_api_caller_class: 'RelayModern',
|
|
259
|
+
fb_api_req_friendly_name: 'FriendingCometFriendRequestSendMutation',
|
|
260
|
+
variables: JSON.stringify(variables),
|
|
261
|
+
doc_id: '34974854235435024',
|
|
262
|
+
};
|
|
263
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
264
|
+
if (res.data.errors)
|
|
265
|
+
throw new Error(JSON.stringify(res.data.errors));
|
|
266
|
+
return res.data.data;
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
throw err;
|
|
270
|
+
}
|
|
271
|
+
},
|
|
176
272
|
suggest: {
|
|
177
273
|
/**
|
|
178
274
|
* Fetches a list of suggested friends (People You May Know).
|
|
@@ -186,16 +282,16 @@ function default_1(defaultFuncs, api, ctx) {
|
|
|
186
282
|
const form = {
|
|
187
283
|
av: ctx.userID,
|
|
188
284
|
__user: ctx.userID,
|
|
189
|
-
__a:
|
|
285
|
+
__a: '1',
|
|
190
286
|
fb_dtsg: ctx.fb_dtsg,
|
|
191
287
|
jazoest: ctx.jazoest,
|
|
192
288
|
lsd: ctx.lsd,
|
|
193
|
-
fb_api_caller_class:
|
|
194
|
-
fb_api_req_friendly_name:
|
|
289
|
+
fb_api_caller_class: 'RelayModern',
|
|
290
|
+
fb_api_req_friendly_name: 'FriendingCometPYMKPanelPaginationQuery',
|
|
195
291
|
variables: JSON.stringify({ count: limit, cursor: null, scale: 3 }),
|
|
196
|
-
doc_id:
|
|
292
|
+
doc_id: '9917809191634193',
|
|
197
293
|
};
|
|
198
|
-
const res = await defaultFuncs.post(
|
|
294
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
199
295
|
if (res.data.errors)
|
|
200
296
|
throw new Error(JSON.stringify(res.data.errors));
|
|
201
297
|
return formatFriends(res.data, 'suggestions');
|
|
@@ -214,29 +310,29 @@ function default_1(defaultFuncs, api, ctx) {
|
|
|
214
310
|
request: async function (userID) {
|
|
215
311
|
try {
|
|
216
312
|
if (!userID)
|
|
217
|
-
throw new Error(
|
|
313
|
+
throw new Error('userID is required.');
|
|
218
314
|
const variables = {
|
|
219
315
|
input: {
|
|
220
316
|
friend_requestee_ids: [userID],
|
|
221
|
-
friending_channel:
|
|
317
|
+
friending_channel: 'FRIENDS_HOME_MAIN',
|
|
222
318
|
actor_id: ctx.userID,
|
|
223
|
-
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString()
|
|
319
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
224
320
|
},
|
|
225
|
-
scale: 3
|
|
321
|
+
scale: 3,
|
|
226
322
|
};
|
|
227
323
|
const form = {
|
|
228
324
|
av: ctx.userID,
|
|
229
325
|
__user: ctx.userID,
|
|
230
|
-
__a:
|
|
326
|
+
__a: '1',
|
|
231
327
|
fb_dtsg: ctx.fb_dtsg,
|
|
232
328
|
jazoest: ctx.jazoest,
|
|
233
329
|
lsd: ctx.lsd,
|
|
234
|
-
fb_api_caller_class:
|
|
235
|
-
fb_api_req_friendly_name:
|
|
330
|
+
fb_api_caller_class: 'RelayModern',
|
|
331
|
+
fb_api_req_friendly_name: 'FriendingCometFriendRequestSendMutation',
|
|
236
332
|
variables: JSON.stringify(variables),
|
|
237
|
-
doc_id:
|
|
333
|
+
doc_id: '23982103144788355',
|
|
238
334
|
};
|
|
239
|
-
const res = await defaultFuncs.post(
|
|
335
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
240
336
|
if (res.data.errors)
|
|
241
337
|
throw new Error(JSON.stringify(res.data.errors));
|
|
242
338
|
return res.data.data;
|
|
@@ -244,10 +340,230 @@ function default_1(defaultFuncs, api, ctx) {
|
|
|
244
340
|
catch (err) {
|
|
245
341
|
throw err;
|
|
246
342
|
}
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
};
|
|
346
|
+
/**
|
|
347
|
+
* Gets current user's friends list by fetching the friends/list page
|
|
348
|
+
* and extracting all_friends data from the embedded JSON.
|
|
349
|
+
* @async
|
|
350
|
+
* @param {Function} [callback] - Optional callback function.
|
|
351
|
+
* @returns {Promise<Array<Object>>} A promise that resolves to an array of friend objects.
|
|
352
|
+
*/
|
|
353
|
+
async function getCurrentFriends(callback) {
|
|
354
|
+
let resolveFunc = function () { };
|
|
355
|
+
let rejectFunc = function () { };
|
|
356
|
+
const returnPromise = new Promise(function (resolve, reject) {
|
|
357
|
+
resolveFunc = resolve;
|
|
358
|
+
rejectFunc = reject;
|
|
359
|
+
});
|
|
360
|
+
callback =
|
|
361
|
+
callback ||
|
|
362
|
+
function (err, data) {
|
|
363
|
+
if (err)
|
|
364
|
+
return rejectFunc(err);
|
|
365
|
+
resolveFunc(data);
|
|
366
|
+
};
|
|
367
|
+
try {
|
|
368
|
+
const url = 'https://www.facebook.com/friends/list';
|
|
369
|
+
const resData = await utils.get(url, ctx.jar, {}, ctx.globalOptions, ctx);
|
|
370
|
+
const html = resData.body.toString();
|
|
371
|
+
const friends = extractFriendsFromHTML(html);
|
|
372
|
+
callback(null, friends);
|
|
373
|
+
}
|
|
374
|
+
catch (err) {
|
|
375
|
+
utils.error('getCurrentFriends', err);
|
|
376
|
+
callback(err);
|
|
377
|
+
}
|
|
378
|
+
return returnPromise;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Extracts all_friends data from the friends/list HTML page.
|
|
382
|
+
* Parses embedded <script type="application/json" data-sjs> tags
|
|
383
|
+
* to find the RelayPrefetchedStreamCache containing all_friends.
|
|
384
|
+
* @private
|
|
385
|
+
*/
|
|
386
|
+
function extractFriendsFromHTML(htmlContent) {
|
|
387
|
+
const friends = [];
|
|
388
|
+
try {
|
|
389
|
+
const scriptMatches = htmlContent.match(/<script type="application\/json"\s+data-content-len="\d+"\s+data-sjs>(.*?)<\/script>/gs);
|
|
390
|
+
if (!scriptMatches)
|
|
391
|
+
return friends;
|
|
392
|
+
for (const scriptMatch of scriptMatches) {
|
|
393
|
+
try {
|
|
394
|
+
const jsonMatch = scriptMatch.match(/<script[^>]*>(.*?)<\/script>/s);
|
|
395
|
+
if (!jsonMatch)
|
|
396
|
+
continue;
|
|
397
|
+
const jsonData = JSON.parse(jsonMatch[1]);
|
|
398
|
+
if (!jsonData.require || !Array.isArray(jsonData.require))
|
|
399
|
+
continue;
|
|
400
|
+
for (const req of jsonData.require) {
|
|
401
|
+
if (!Array.isArray(req))
|
|
402
|
+
continue;
|
|
403
|
+
if (req[0] === 'ScheduledServerJS' && req[1] === 'handle') {
|
|
404
|
+
const payload = req[3];
|
|
405
|
+
if (!payload || !Array.isArray(payload))
|
|
406
|
+
continue;
|
|
407
|
+
for (const item of payload) {
|
|
408
|
+
if (!item.__bbox || !item.__bbox.require)
|
|
409
|
+
continue;
|
|
410
|
+
for (const bboxReq of item.__bbox.require) {
|
|
411
|
+
if (!Array.isArray(bboxReq))
|
|
412
|
+
continue;
|
|
413
|
+
if (bboxReq[0] === 'RelayPrefetchedStreamCache' &&
|
|
414
|
+
bboxReq[1] === 'next') {
|
|
415
|
+
const streamData = bboxReq[3];
|
|
416
|
+
if (!streamData ||
|
|
417
|
+
!Array.isArray(streamData) ||
|
|
418
|
+
streamData.length < 2)
|
|
419
|
+
continue;
|
|
420
|
+
const cacheKey = streamData[0];
|
|
421
|
+
if (typeof cacheKey !== 'string' ||
|
|
422
|
+
!cacheKey.includes('FriendingCometAllFriendsRootQuery'))
|
|
423
|
+
continue;
|
|
424
|
+
const bboxData = streamData[1];
|
|
425
|
+
if (!bboxData ||
|
|
426
|
+
!bboxData.__bbox ||
|
|
427
|
+
!bboxData.__bbox.result)
|
|
428
|
+
continue;
|
|
429
|
+
const viewer = bboxData.__bbox.result?.data?.viewer;
|
|
430
|
+
if (!viewer || !viewer.all_friends)
|
|
431
|
+
continue;
|
|
432
|
+
const allFriends = viewer.all_friends;
|
|
433
|
+
const friendCount = viewer.all_friends_data?.friend_count ||
|
|
434
|
+
viewer.all_friends_data?.count ||
|
|
435
|
+
0;
|
|
436
|
+
if (allFriends.edges && Array.isArray(allFriends.edges)) {
|
|
437
|
+
for (const edge of allFriends.edges) {
|
|
438
|
+
if (!edge.node)
|
|
439
|
+
continue;
|
|
440
|
+
const node = edge.node;
|
|
441
|
+
friends.push({
|
|
442
|
+
userID: node.id,
|
|
443
|
+
name: node.name,
|
|
444
|
+
shortName: node.short_name,
|
|
445
|
+
gender: node.gender,
|
|
446
|
+
profilePicture: node.profile_picture?.uri,
|
|
447
|
+
profileUrl: node.url,
|
|
448
|
+
friendshipStatus: node.friendship_status,
|
|
449
|
+
subscribeStatus: node.subscribe_status,
|
|
450
|
+
socialContext: node.social_context?.text,
|
|
451
|
+
mutualFriends: node.social_context_top_mutual_friends || [],
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
// Attach pagination and count info
|
|
456
|
+
friends.totalCount = friendCount;
|
|
457
|
+
friends.pageInfo = allFriends.page_info || null;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
catch (e) {
|
|
465
|
+
continue;
|
|
466
|
+
}
|
|
247
467
|
}
|
|
248
468
|
}
|
|
249
|
-
|
|
469
|
+
catch (error) {
|
|
470
|
+
utils.error('extractFriendsFromHTML', error);
|
|
471
|
+
}
|
|
472
|
+
return friends;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Extracts friending_possibilities data from the friends/requests HTML page.
|
|
476
|
+
* Parses embedded <script type="application/json" data-sjs> tags
|
|
477
|
+
* to find the RelayPrefetchedStreamCache containing friend requests.
|
|
478
|
+
* @private
|
|
479
|
+
*/
|
|
480
|
+
function extractFriendRequestsFromHTML(htmlContent) {
|
|
481
|
+
const requests = [];
|
|
482
|
+
try {
|
|
483
|
+
const scriptMatches = htmlContent.match(/<script type="application\/json"\s+data-content-len="\d+"\s+data-sjs>(.*?)<\/script>/gs);
|
|
484
|
+
if (!scriptMatches)
|
|
485
|
+
return requests;
|
|
486
|
+
for (const scriptMatch of scriptMatches) {
|
|
487
|
+
try {
|
|
488
|
+
const jsonMatch = scriptMatch.match(/<script[^>]*>(.*?)<\/script>/s);
|
|
489
|
+
if (!jsonMatch)
|
|
490
|
+
continue;
|
|
491
|
+
const jsonData = JSON.parse(jsonMatch[1]);
|
|
492
|
+
if (!jsonData.require || !Array.isArray(jsonData.require))
|
|
493
|
+
continue;
|
|
494
|
+
for (const req of jsonData.require) {
|
|
495
|
+
if (!Array.isArray(req))
|
|
496
|
+
continue;
|
|
497
|
+
if (req[0] === 'ScheduledServerJS' && req[1] === 'handle') {
|
|
498
|
+
const payload = req[3];
|
|
499
|
+
if (!payload || !Array.isArray(payload))
|
|
500
|
+
continue;
|
|
501
|
+
for (const item of payload) {
|
|
502
|
+
if (!item.__bbox || !item.__bbox.require)
|
|
503
|
+
continue;
|
|
504
|
+
for (const bboxReq of item.__bbox.require) {
|
|
505
|
+
if (!Array.isArray(bboxReq))
|
|
506
|
+
continue;
|
|
507
|
+
if (bboxReq[0] === 'RelayPrefetchedStreamCache' &&
|
|
508
|
+
bboxReq[1] === 'next') {
|
|
509
|
+
const streamData = bboxReq[3];
|
|
510
|
+
if (!streamData ||
|
|
511
|
+
!Array.isArray(streamData) ||
|
|
512
|
+
streamData.length < 2)
|
|
513
|
+
continue;
|
|
514
|
+
const cacheKey = streamData[0];
|
|
515
|
+
if (typeof cacheKey !== 'string' ||
|
|
516
|
+
!cacheKey.includes('FriendingCometFriendRequestsRootQuery'))
|
|
517
|
+
continue;
|
|
518
|
+
const bboxData = streamData[1];
|
|
519
|
+
if (!bboxData ||
|
|
520
|
+
!bboxData.__bbox ||
|
|
521
|
+
!bboxData.__bbox.result)
|
|
522
|
+
continue;
|
|
523
|
+
const viewer = bboxData.__bbox.result?.data?.viewer;
|
|
524
|
+
if (!viewer || !viewer.friending_possibilities)
|
|
525
|
+
continue;
|
|
526
|
+
const friendingPossibilities = viewer.friending_possibilities;
|
|
527
|
+
const requestCount = friendingPossibilities.count || 0;
|
|
528
|
+
if (friendingPossibilities.edges &&
|
|
529
|
+
Array.isArray(friendingPossibilities.edges)) {
|
|
530
|
+
for (const edge of friendingPossibilities.edges) {
|
|
531
|
+
if (!edge.node)
|
|
532
|
+
continue;
|
|
533
|
+
const node = edge.node;
|
|
534
|
+
requests.push({
|
|
535
|
+
userID: node.id,
|
|
536
|
+
name: node.name,
|
|
537
|
+
profilePicture: node.profile_picture?.uri,
|
|
538
|
+
profileUrl: node.url,
|
|
539
|
+
friendshipStatus: node.friendship_status,
|
|
540
|
+
socialContext: node.social_context?.text,
|
|
541
|
+
mutualFriends: node.social_context_top_mutual_friends || [],
|
|
542
|
+
time: edge.time,
|
|
543
|
+
isSeen: edge.is_seen,
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
// Attach count and pagination info
|
|
548
|
+
requests.totalCount = requestCount;
|
|
549
|
+
requests.pageInfo =
|
|
550
|
+
friendingPossibilities.page_info || null;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
catch (e) {
|
|
558
|
+
continue;
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
catch (error) {
|
|
563
|
+
utils.error('extractFriendRequestsFromHTML', error);
|
|
564
|
+
}
|
|
565
|
+
return requests;
|
|
566
|
+
}
|
|
250
567
|
return friendModule;
|
|
251
568
|
}
|
|
252
|
-
;
|
|
253
569
|
//# sourceMappingURL=friend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"friend.js","sourceRoot":"","sources":["../../../../src/deltas/apis/posting/friend.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"friend.js","sourceRoot":"","sources":["../../../../src/deltas/apis/posting/friend.ts"],"names":[],"mappings":"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"}
|