-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathretimeline.js
56 lines (47 loc) · 1.9 KB
/
retimeline.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(async function () {
'use strict';
let avatar = document.querySelector("button.Button.AppHeader-profileEntry.Button--plain");
avatar.click();
let homeElm = document.querySelector("a.Button.Menu-item.AppHeaderProfileMenu-item.Button--plain");
console.log(homeElm);
let homeLink = homeElm.href;
console.log(homeLink);
let userId = homeLink.match(/(?<=people\/).*/).toString();
console.log("user id:", userId);
avatar.click();
let GET = (url, headers) => {
let xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
headers && Object.keys(headers).forEach((key) => { xhr.setRequestHeader(key, headers[key]) });
xhr.send();
return xhr.response;
};
let followees = [];
let offset = 0;
let batch = null;
do {
let followeesAPI = `https://www.zhihu.com/api/v4/members/${userId}/followees?offset=${offset}&limit=20`;
batch = JSON.parse(GET(followeesAPI));
console.log(`batch ${offset}`, batch);
followees = followees.concat(batch.data);
offset += batch.data.length;
} while (!batch.paging.is_end);
console.log("followees: ", followees);
let authPromise = new Promise((resolve, reject) => {
chrome.runtime.sendMessage({ type: "ask_cookie", url: document.URL }, (response) => {
console.log("cookie:", response.result);
resolve(response.result);
});
});
let authorization = await authPromise;
if (authorization == null) {
console.log("authorization is null");
return;
}
authorization = "Bearer " + authorization;
let activitiesAPI = `https://www.zhihu.com/api/v4/members/${followees[0].url_token}/activities`;
let activities = [];
while (activities.length < 50) {
console.log(JSON.parse(GET(activitiesAPI, { authorization })));
}
})();