@the-convocation/twitter-scraper 0.1.5 → 0.3.0

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.
Files changed (66) hide show
  1. package/dist/_module.d.ts +1 -1
  2. package/dist/_module.d.ts.map +1 -1
  3. package/dist/api.d.ts +19 -3
  4. package/dist/api.d.ts.map +1 -1
  5. package/dist/api.js +61 -45
  6. package/dist/api.js.map +1 -1
  7. package/dist/auth-user.d.ts +2 -3
  8. package/dist/auth-user.d.ts.map +1 -1
  9. package/dist/auth-user.js +176 -176
  10. package/dist/auth-user.js.map +1 -1
  11. package/dist/auth.d.ts +4 -7
  12. package/dist/auth.d.ts.map +1 -1
  13. package/dist/auth.js +44 -48
  14. package/dist/auth.js.map +1 -1
  15. package/dist/errors.d.ts +3 -4
  16. package/dist/errors.d.ts.map +1 -1
  17. package/dist/errors.js.map +1 -1
  18. package/dist/profile.d.ts.map +1 -1
  19. package/dist/profile.js +56 -67
  20. package/dist/profile.js.map +1 -1
  21. package/dist/requests.d.ts +9 -0
  22. package/dist/requests.d.ts.map +1 -0
  23. package/dist/requests.js +26 -0
  24. package/dist/requests.js.map +1 -0
  25. package/dist/scraper.d.ts +13 -13
  26. package/dist/scraper.d.ts.map +1 -1
  27. package/dist/scraper.js +49 -69
  28. package/dist/scraper.js.map +1 -1
  29. package/dist/search.d.ts +4 -4
  30. package/dist/search.d.ts.map +1 -1
  31. package/dist/search.js +62 -62
  32. package/dist/search.js.map +1 -1
  33. package/dist/timeline-async.d.ts +2 -2
  34. package/dist/timeline-async.d.ts.map +1 -1
  35. package/dist/timeline-async.js +34 -50
  36. package/dist/timeline-async.js.map +1 -1
  37. package/dist/timeline-search.d.ts +20 -0
  38. package/dist/timeline-search.d.ts.map +1 -0
  39. package/dist/timeline-search.js +75 -0
  40. package/dist/timeline-search.js.map +1 -0
  41. package/dist/timeline-tweet-util.d.ts +9 -0
  42. package/dist/timeline-tweet-util.d.ts.map +1 -0
  43. package/dist/timeline-tweet-util.js +102 -0
  44. package/dist/timeline-tweet-util.js.map +1 -0
  45. package/dist/{timeline.d.ts → timeline-v1.d.ts} +36 -9
  46. package/dist/timeline-v1.d.ts.map +1 -0
  47. package/dist/timeline-v1.js +181 -0
  48. package/dist/timeline-v1.js.map +1 -0
  49. package/dist/timeline-v2.d.ts +61 -0
  50. package/dist/timeline-v2.d.ts.map +1 -0
  51. package/dist/timeline-v2.js +194 -0
  52. package/dist/timeline-v2.js.map +1 -0
  53. package/dist/trends.js +31 -42
  54. package/dist/trends.js.map +1 -1
  55. package/dist/tweets.d.ts +12 -6
  56. package/dist/tweets.d.ts.map +1 -1
  57. package/dist/tweets.js +79 -86
  58. package/dist/tweets.js.map +1 -1
  59. package/dist/type-util.d.ts +6 -0
  60. package/dist/type-util.d.ts.map +1 -0
  61. package/dist/type-util.js +14 -0
  62. package/dist/type-util.js.map +1 -0
  63. package/package.json +11 -2
  64. package/dist/timeline.d.ts.map +0 -1
  65. package/dist/timeline.js +0 -280
  66. package/dist/timeline.js.map +0 -1
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@the-convocation/twitter-scraper",
3
- "version": "0.1.5",
3
+ "version": "0.3.0",
4
4
  "main": "dist/_module.js",
5
5
  "repository": "https://github.com/the-convocation/twitter-scraper.git",
6
6
  "author": "karashiiro <49822414+karashiiro@users.noreply.github.com>",
7
7
  "license": "MIT",
8
+ "engines": {
9
+ "node": ">=16"
10
+ },
8
11
  "scripts": {
9
12
  "build": "tsc",
10
13
  "commit": "cz",
@@ -15,14 +18,20 @@
15
18
  "test": "jest"
16
19
  },
17
20
  "dependencies": {
18
- "got-scraping": "^3.2.13",
21
+ "cross-fetch": "^4.0.0-alpha.5",
22
+ "headers-polyfill": "^3.1.2",
23
+ "json-stable-stringify": "^1.0.2",
24
+ "set-cookie-parser": "^2.6.0",
19
25
  "tough-cookie": "^4.1.2",
20
26
  "tslib": "^2.5.2"
21
27
  },
22
28
  "devDependencies": {
23
29
  "@commitlint/cli": "^17.6.3",
24
30
  "@commitlint/config-conventional": "^17.6.3",
31
+ "@tsconfig/node16": "^16.1.0",
25
32
  "@types/jest": "^29.5.1",
33
+ "@types/json-stable-stringify": "^1.0.34",
34
+ "@types/set-cookie-parser": "^2.4.2",
26
35
  "@types/tough-cookie": "^4.0.2",
27
36
  "@typescript-eslint/eslint-plugin": "^5.59.7",
28
37
  "@typescript-eslint/parser": "^5.59.7",
@@ -1 +0,0 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
package/dist/timeline.js DELETED
@@ -1,280 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseUsers = exports.parseTweets = exports.parseTweet = void 0;
4
- const profile_1 = require("./profile");
5
- const reHashtag = /\B(\#\S+\b)/g;
6
- const reTwitterUrl = /https:(\/\/t\.co\/([A-Za-z0-9]|[A-Za-z]){10})/g;
7
- const reUsername = /\B(\@\S{1,15}\b)/g;
8
- function isFieldDefined(key) {
9
- return function (value) {
10
- return isDefined(value[key]);
11
- };
12
- }
13
- function isDefined(value) {
14
- return value != null;
15
- }
16
- function parseTweet(timeline, id) {
17
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
18
- const tweets = (_b = (_a = timeline.globalObjects) === null || _a === void 0 ? void 0 : _a.tweets) !== null && _b !== void 0 ? _b : {};
19
- const tweet = tweets[id];
20
- if ((tweet === null || tweet === void 0 ? void 0 : tweet.user_id_str) == null) {
21
- return {
22
- success: false,
23
- err: new Error(`Tweet "${id}" was not found in the timeline object.`),
24
- };
25
- }
26
- const users = (_d = (_c = timeline.globalObjects) === null || _c === void 0 ? void 0 : _c.users) !== null && _d !== void 0 ? _d : {};
27
- const user = users[tweet.user_id_str];
28
- if ((user === null || user === void 0 ? void 0 : user.screen_name) == null) {
29
- return {
30
- success: false,
31
- err: new Error(`User "${tweet.user_id_str}" has no username data.`),
32
- };
33
- }
34
- const hashtags = (_f = (_e = tweet.entities) === null || _e === void 0 ? void 0 : _e.hashtags) !== null && _f !== void 0 ? _f : [];
35
- const mentions = (_h = (_g = tweet.entities) === null || _g === void 0 ? void 0 : _g.user_mentions) !== null && _h !== void 0 ? _h : [];
36
- const media = (_k = (_j = tweet.extended_entities) === null || _j === void 0 ? void 0 : _j.media) !== null && _k !== void 0 ? _k : [];
37
- const pinnedTweets = new Set((_l = user.pinned_tweet_ids_str) !== null && _l !== void 0 ? _l : []);
38
- const urls = (_o = (_m = tweet.entities) === null || _m === void 0 ? void 0 : _m.urls) !== null && _o !== void 0 ? _o : [];
39
- const { photos, videos, sensitiveContent } = parseMediaGroups(media);
40
- const tw = {
41
- id,
42
- hashtags: hashtags
43
- .filter(isFieldDefined('text'))
44
- .map((hashtag) => hashtag.text),
45
- likes: tweet.favorite_count,
46
- mentions: mentions.filter(isFieldDefined('id_str')).map((mention) => ({
47
- id: mention.id_str,
48
- username: mention.screen_name,
49
- name: mention.name,
50
- })),
51
- name: user.name,
52
- permanentUrl: `https://twitter.com/${user.screen_name}/status/${id}`,
53
- photos,
54
- replies: tweet.reply_count,
55
- retweets: tweet.retweet_count,
56
- text: tweet.full_text,
57
- urls: urls
58
- .filter(isFieldDefined('expanded_url'))
59
- .map((url) => url.expanded_url),
60
- userId: tweet.user_id_str,
61
- username: user.screen_name,
62
- videos,
63
- };
64
- if (tweet.created_at != null) {
65
- tw.timeParsed = new Date(Date.parse(tweet.created_at));
66
- tw.timestamp = Math.floor(tw.timeParsed.valueOf() / 1000);
67
- }
68
- if (((_p = tweet.place) === null || _p === void 0 ? void 0 : _p.id) != null) {
69
- tw.place = tweet.place;
70
- }
71
- if (tweet.quoted_status_id_str != null) {
72
- const quotedStatusResult = parseTweet(timeline, tweet.quoted_status_id_str);
73
- if (quotedStatusResult.success) {
74
- tw.isQuoted = true;
75
- tw.quotedStatus = quotedStatusResult.tweet;
76
- }
77
- }
78
- if (tweet.in_reply_to_status_id_str != null) {
79
- const replyStatusResult = parseTweet(timeline, tweet.in_reply_to_status_id_str);
80
- if (replyStatusResult.success) {
81
- tw.isReply = true;
82
- tw.inReplyToStatus = replyStatusResult.tweet;
83
- }
84
- }
85
- if (tweet.retweeted_status_id_str != null) {
86
- const retweetedStatusResult = parseTweet(timeline, tweet.retweeted_status_id_str);
87
- if (retweetedStatusResult.success) {
88
- tw.isRetweet = true;
89
- tw.retweetedStatus = retweetedStatusResult.tweet;
90
- }
91
- }
92
- const views = parseInt((_r = (_q = tweet.ext_views) === null || _q === void 0 ? void 0 : _q.count) !== null && _r !== void 0 ? _r : '');
93
- if (!isNaN(views)) {
94
- tw.views = views;
95
- }
96
- if (pinnedTweets.has(tweet.conversation_id_str)) {
97
- // TODO: Update tests so this can be assigned at the tweet declaration
98
- tw.isPin = true;
99
- }
100
- if (sensitiveContent) {
101
- // TODO: Update tests so this can be assigned at the tweet declaration
102
- tw.sensitiveContent = true;
103
- }
104
- // HTML parsing with regex :)
105
- let html = (_s = tweet.full_text) !== null && _s !== void 0 ? _s : '';
106
- const foundedMedia = [];
107
- html = html.replace(reHashtag, linkHashtagHtml);
108
- html = html.replace(reUsername, linkUsernameHtml);
109
- html = html.replace(reTwitterUrl, unwrapTcoUrlHtml(tweet, foundedMedia));
110
- for (const { url } of tw.photos) {
111
- if (foundedMedia.indexOf(url) !== -1) {
112
- continue;
113
- }
114
- html += `<br><img src="${url}"/>`;
115
- }
116
- for (const { preview: url } of tw.videos) {
117
- if (foundedMedia.indexOf(url) !== -1) {
118
- continue;
119
- }
120
- html += `<br><img src="${url}"/>`;
121
- }
122
- html = html.replace(/\n/g, '<br>');
123
- tw.html = html;
124
- return { success: true, tweet: tw };
125
- }
126
- exports.parseTweet = parseTweet;
127
- function parseMediaGroups(media) {
128
- const photos = [];
129
- const videos = [];
130
- let sensitiveContent = undefined;
131
- for (const m of media
132
- .filter(isFieldDefined('id_str'))
133
- .filter(isFieldDefined('media_url_https'))) {
134
- if (m.type === 'photo') {
135
- photos.push({
136
- id: m.id_str,
137
- url: m.media_url_https,
138
- });
139
- }
140
- else if (m.type === 'video') {
141
- videos.push(parseVideo(m));
142
- }
143
- const sensitive = m.ext_sensitive_media_warning;
144
- if (sensitive != null) {
145
- sensitiveContent =
146
- sensitive.adult_content ||
147
- sensitive.graphic_violence ||
148
- sensitive.other;
149
- }
150
- }
151
- return { sensitiveContent, photos, videos };
152
- }
153
- function parseVideo(m) {
154
- var _a, _b;
155
- const video = {
156
- id: m.id_str,
157
- preview: m.media_url_https,
158
- };
159
- let maxBitrate = 0;
160
- const variants = (_b = (_a = m.video_info) === null || _a === void 0 ? void 0 : _a.variants) !== null && _b !== void 0 ? _b : [];
161
- for (const variant of variants) {
162
- const bitrate = variant.bitrate;
163
- if (bitrate != null && bitrate > maxBitrate && variant.url != null) {
164
- let variantUrl = variant.url;
165
- const stringStart = 0;
166
- const tagSuffixIdx = variantUrl.indexOf('?tag=10');
167
- if (tagSuffixIdx !== -1) {
168
- variantUrl = variantUrl.substring(stringStart, tagSuffixIdx + 1);
169
- }
170
- video.url = variantUrl;
171
- maxBitrate = bitrate;
172
- }
173
- }
174
- return video;
175
- }
176
- function linkHashtagHtml(hashtag) {
177
- return `<a href="https://twitter.com/hashtag/${hashtag.replace('#', '')}">${hashtag}</a>`;
178
- }
179
- function linkUsernameHtml(username) {
180
- return `<a href="https://twitter.com/${username[0].replace('@', '')}">${username[0]}</a>`;
181
- }
182
- function unwrapTcoUrlHtml(tweet, foundedMedia) {
183
- return function (tco) {
184
- var _a, _b, _c, _d;
185
- for (const entity of (_b = (_a = tweet.entities) === null || _a === void 0 ? void 0 : _a.urls) !== null && _b !== void 0 ? _b : []) {
186
- if (tco === entity.url && entity.expanded_url != null) {
187
- return `<a href="${entity.expanded_url}">${tco}</a>`;
188
- }
189
- }
190
- for (const entity of (_d = (_c = tweet.extended_entities) === null || _c === void 0 ? void 0 : _c.media) !== null && _d !== void 0 ? _d : []) {
191
- if (tco === entity.url && entity.media_url_https != null) {
192
- foundedMedia.push(entity.media_url_https);
193
- return `<br><a href="${tco}"><img src="${entity.media_url_https}"/></a>`;
194
- }
195
- }
196
- return tco;
197
- };
198
- }
199
- function parseTweets(timeline) {
200
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
201
- let cursor;
202
- let pinnedTweet;
203
- let orderedTweets = [];
204
- for (const instruction of (_b = (_a = timeline.timeline) === null || _a === void 0 ? void 0 : _a.instructions) !== null && _b !== void 0 ? _b : []) {
205
- const { pinEntry, addEntries, replaceEntry } = instruction;
206
- // Handle pin instruction
207
- const pinnedTweetId = (_g = (_f = (_e = (_d = (_c = pinEntry === null || pinEntry === void 0 ? void 0 : pinEntry.entry) === null || _c === void 0 ? void 0 : _c.content) === null || _d === void 0 ? void 0 : _d.item) === null || _e === void 0 ? void 0 : _e.content) === null || _f === void 0 ? void 0 : _f.tweet) === null || _g === void 0 ? void 0 : _g.id;
208
- if (pinnedTweetId != null) {
209
- const tweetResult = parseTweet(timeline, pinnedTweetId);
210
- if (tweetResult.success) {
211
- pinnedTweet = tweetResult.tweet;
212
- }
213
- }
214
- // Handle add instructions
215
- for (const { content } of (_h = addEntries === null || addEntries === void 0 ? void 0 : addEntries.entries) !== null && _h !== void 0 ? _h : []) {
216
- const tweetId = (_l = (_k = (_j = content === null || content === void 0 ? void 0 : content.item) === null || _j === void 0 ? void 0 : _j.content) === null || _k === void 0 ? void 0 : _k.tweet) === null || _l === void 0 ? void 0 : _l.id;
217
- if (tweetId != null) {
218
- const tweetResult = parseTweet(timeline, tweetId);
219
- if (tweetResult.success) {
220
- orderedTweets.push(tweetResult.tweet);
221
- }
222
- }
223
- const operation = content === null || content === void 0 ? void 0 : content.operation;
224
- if (((_m = operation === null || operation === void 0 ? void 0 : operation.cursor) === null || _m === void 0 ? void 0 : _m.cursorType) === 'Bottom') {
225
- cursor = (_o = operation === null || operation === void 0 ? void 0 : operation.cursor) === null || _o === void 0 ? void 0 : _o.value;
226
- }
227
- }
228
- // Handle replace instruction
229
- const operation = (_q = (_p = replaceEntry === null || replaceEntry === void 0 ? void 0 : replaceEntry.entry) === null || _p === void 0 ? void 0 : _p.content) === null || _q === void 0 ? void 0 : _q.operation;
230
- if (((_r = operation === null || operation === void 0 ? void 0 : operation.cursor) === null || _r === void 0 ? void 0 : _r.cursorType) === 'Bottom') {
231
- cursor = operation.cursor.value;
232
- }
233
- }
234
- if (pinnedTweet != null && orderedTweets.length > 0) {
235
- orderedTweets = [pinnedTweet, ...orderedTweets];
236
- }
237
- return {
238
- tweets: orderedTweets,
239
- next: cursor,
240
- };
241
- }
242
- exports.parseTweets = parseTweets;
243
- function parseUsers(timeline) {
244
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
245
- const users = new Map();
246
- const userObjects = (_b = (_a = timeline.globalObjects) === null || _a === void 0 ? void 0 : _a.users) !== null && _b !== void 0 ? _b : {};
247
- for (const id in userObjects) {
248
- const legacy = userObjects[id];
249
- if (legacy == null) {
250
- continue;
251
- }
252
- const user = (0, profile_1.parseProfile)(legacy);
253
- users.set(id, user);
254
- }
255
- let cursor;
256
- const orderedProfiles = [];
257
- for (const instruction of (_d = (_c = timeline.timeline) === null || _c === void 0 ? void 0 : _c.instructions) !== null && _d !== void 0 ? _d : []) {
258
- for (const entry of (_f = (_e = instruction.addEntries) === null || _e === void 0 ? void 0 : _e.entries) !== null && _f !== void 0 ? _f : []) {
259
- const userId = (_k = (_j = (_h = (_g = entry.content) === null || _g === void 0 ? void 0 : _g.item) === null || _h === void 0 ? void 0 : _h.content) === null || _j === void 0 ? void 0 : _j.user) === null || _k === void 0 ? void 0 : _k.id;
260
- const profile = users.get(userId);
261
- if (profile != null) {
262
- orderedProfiles.push(profile);
263
- }
264
- const operation = (_l = entry.content) === null || _l === void 0 ? void 0 : _l.operation;
265
- if (((_m = operation === null || operation === void 0 ? void 0 : operation.cursor) === null || _m === void 0 ? void 0 : _m.cursorType) === 'Bottom') {
266
- cursor = (_o = operation === null || operation === void 0 ? void 0 : operation.cursor) === null || _o === void 0 ? void 0 : _o.value;
267
- }
268
- }
269
- const operation = (_r = (_q = (_p = instruction.replaceEntry) === null || _p === void 0 ? void 0 : _p.entry) === null || _q === void 0 ? void 0 : _q.content) === null || _r === void 0 ? void 0 : _r.operation;
270
- if (((_s = operation === null || operation === void 0 ? void 0 : operation.cursor) === null || _s === void 0 ? void 0 : _s.cursorType) === 'Bottom') {
271
- cursor = operation.cursor.value;
272
- }
273
- }
274
- return {
275
- profiles: orderedProfiles,
276
- next: cursor,
277
- };
278
- }
279
- exports.parseUsers = parseUsers;
280
- //# sourceMappingURL=timeline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}