@the-convocation/twitter-scraper 0.3.5 → 0.5.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.
- package/README.md +121 -0
- package/dist/api.d.ts +30 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +12 -5
- package/dist/api.js.map +1 -1
- package/dist/auth-user.d.ts +2 -2
- package/dist/auth-user.d.ts.map +1 -1
- package/dist/auth-user.js +3 -7
- package/dist/auth-user.js.map +1 -1
- package/dist/auth.d.ts +10 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +20 -2
- package/dist/auth.js.map +1 -1
- package/dist/profile.d.ts +17 -5
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +19 -5
- package/dist/profile.js.map +1 -1
- package/dist/scraper.d.ts +53 -3
- package/dist/scraper.d.ts.map +1 -1
- package/dist/scraper.js +52 -7
- package/dist/scraper.js.map +1 -1
- package/dist/search.js +4 -1
- package/dist/search.js.map +1 -1
- package/dist/timeline-search.d.ts +3 -3
- package/dist/timeline-search.d.ts.map +1 -1
- package/dist/timeline-search.js +6 -4
- package/dist/timeline-search.js.map +1 -1
- package/dist/timeline-v1.d.ts +28 -1
- package/dist/timeline-v1.d.ts.map +1 -1
- package/dist/timeline-v1.js.map +1 -1
- package/dist/timeline-v2.d.ts +42 -17
- package/dist/timeline-v2.d.ts.map +1 -1
- package/dist/timeline-v2.js +80 -51
- package/dist/timeline-v2.js.map +1 -1
- package/dist/tweets.d.ts +33 -1
- package/dist/tweets.d.ts.map +1 -1
- package/dist/tweets.js +49 -42
- package/dist/tweets.js.map +1 -1
- package/package.json +2 -2
package/dist/timeline-v2.js
CHANGED
|
@@ -16,18 +16,21 @@ function parseLegacyTweet(user, tweet) {
|
|
|
16
16
|
err: new Error('User was not found in the timeline object.'),
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
+
if (tweet.id_str == null) {
|
|
20
|
+
if (!tweet.conversation_id_str) {
|
|
21
|
+
return {
|
|
22
|
+
success: false,
|
|
23
|
+
err: new Error('Tweet ID was not found in object.'),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
tweet.id_str = tweet.conversation_id_str;
|
|
27
|
+
}
|
|
19
28
|
const hashtags = tweet.entities?.hashtags ?? [];
|
|
20
29
|
const mentions = tweet.entities?.user_mentions ?? [];
|
|
21
30
|
const media = tweet.extended_entities?.media ?? [];
|
|
22
31
|
const pinnedTweets = new Set(user.pinned_tweet_ids_str ?? []);
|
|
23
32
|
const urls = tweet.entities?.urls ?? [];
|
|
24
33
|
const { photos, videos, sensitiveContent } = (0, timeline_tweet_util_1.parseMediaGroups)(media);
|
|
25
|
-
if (tweet.id_str == null) {
|
|
26
|
-
return {
|
|
27
|
-
success: false,
|
|
28
|
-
err: new Error('Tweet ID was not found in object.'),
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
34
|
const tw = {
|
|
32
35
|
conversationId: tweet.conversation_id_str,
|
|
33
36
|
id: tweet.id_str,
|
|
@@ -53,6 +56,11 @@ function parseLegacyTweet(user, tweet) {
|
|
|
53
56
|
userId: tweet.user_id_str,
|
|
54
57
|
username: user.screen_name,
|
|
55
58
|
videos,
|
|
59
|
+
isQuoted: false,
|
|
60
|
+
isReply: false,
|
|
61
|
+
isRetweet: false,
|
|
62
|
+
isPin: false,
|
|
63
|
+
sensitiveContent: false,
|
|
56
64
|
};
|
|
57
65
|
if (tweet.created_at) {
|
|
58
66
|
tw.timeParsed = new Date(Date.parse(tweet.created_at));
|
|
@@ -61,21 +69,25 @@ function parseLegacyTweet(user, tweet) {
|
|
|
61
69
|
if (tweet.place?.id) {
|
|
62
70
|
tw.place = tweet.place;
|
|
63
71
|
}
|
|
64
|
-
|
|
72
|
+
const quotedStatusIdStr = tweet.quoted_status_id_str;
|
|
73
|
+
const inReplyToStatusIdStr = tweet.in_reply_to_status_id_str;
|
|
74
|
+
const retweetedStatusIdStr = tweet.retweeted_status_id_str;
|
|
75
|
+
const retweetedStatusResult = tweet.retweeted_status_result?.result;
|
|
76
|
+
if (quotedStatusIdStr) {
|
|
65
77
|
tw.isQuoted = true;
|
|
66
|
-
tw.quotedStatusId =
|
|
78
|
+
tw.quotedStatusId = quotedStatusIdStr;
|
|
67
79
|
}
|
|
68
|
-
if (
|
|
80
|
+
if (inReplyToStatusIdStr) {
|
|
69
81
|
tw.isReply = true;
|
|
70
|
-
tw.inReplyToStatusId =
|
|
82
|
+
tw.inReplyToStatusId = inReplyToStatusIdStr;
|
|
71
83
|
}
|
|
72
|
-
if (
|
|
84
|
+
if (retweetedStatusIdStr || retweetedStatusResult) {
|
|
73
85
|
tw.isRetweet = true;
|
|
74
|
-
tw.retweetedStatusId =
|
|
75
|
-
if (
|
|
76
|
-
const
|
|
77
|
-
if (
|
|
78
|
-
tw.retweetedStatus =
|
|
86
|
+
tw.retweetedStatusId = retweetedStatusIdStr;
|
|
87
|
+
if (retweetedStatusResult) {
|
|
88
|
+
const parsedResult = parseLegacyTweet(retweetedStatusResult?.core?.user_result?.result?.legacy, retweetedStatusResult?.legacy);
|
|
89
|
+
if (parsedResult.success) {
|
|
90
|
+
tw.retweetedStatus = parsedResult.tweet;
|
|
79
91
|
}
|
|
80
92
|
}
|
|
81
93
|
}
|
|
@@ -96,10 +108,11 @@ function parseLegacyTweet(user, tweet) {
|
|
|
96
108
|
}
|
|
97
109
|
exports.parseLegacyTweet = parseLegacyTweet;
|
|
98
110
|
function parseResult(result) {
|
|
99
|
-
|
|
100
|
-
|
|
111
|
+
const noteTweetResultText = result?.note_tweet?.note_tweet_results?.result?.text;
|
|
112
|
+
if (result?.legacy && noteTweetResultText) {
|
|
113
|
+
result.legacy.full_text = noteTweetResultText;
|
|
101
114
|
}
|
|
102
|
-
const tweetResult = parseLegacyTweet(result?.core?.
|
|
115
|
+
const tweetResult = parseLegacyTweet(result?.core?.user_result?.result?.legacy, result?.legacy);
|
|
103
116
|
if (!tweetResult.success) {
|
|
104
117
|
return tweetResult;
|
|
105
118
|
}
|
|
@@ -109,8 +122,12 @@ function parseResult(result) {
|
|
|
109
122
|
tweetResult.tweet.views = views;
|
|
110
123
|
}
|
|
111
124
|
}
|
|
112
|
-
|
|
113
|
-
|
|
125
|
+
const quotedResult = result?.quoted_status_result?.result;
|
|
126
|
+
if (quotedResult) {
|
|
127
|
+
if (quotedResult.legacy && quotedResult.rest_id) {
|
|
128
|
+
quotedResult.legacy.id_str = quotedResult.rest_id;
|
|
129
|
+
}
|
|
130
|
+
const quotedTweetResult = parseResult(quotedResult);
|
|
114
131
|
if (quotedTweetResult.success) {
|
|
115
132
|
tweetResult.tweet.quotedStatus = quotedTweetResult.tweet;
|
|
116
133
|
}
|
|
@@ -120,50 +137,62 @@ function parseResult(result) {
|
|
|
120
137
|
function parseTimelineTweetsV2(timeline) {
|
|
121
138
|
let cursor;
|
|
122
139
|
const tweets = [];
|
|
123
|
-
const instructions = timeline.data?.
|
|
140
|
+
const instructions = timeline.data?.user_result?.result?.timeline_response?.timeline
|
|
141
|
+
?.instructions ?? [];
|
|
124
142
|
for (const instruction of instructions) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
143
|
+
const entries = instruction.entries ?? [];
|
|
144
|
+
for (const entry of entries) {
|
|
145
|
+
const entryContent = entry.content;
|
|
146
|
+
if (!entryContent)
|
|
147
|
+
continue;
|
|
148
|
+
if (entryContent.cursorType === 'Bottom') {
|
|
149
|
+
cursor = entryContent.value;
|
|
128
150
|
continue;
|
|
129
151
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
152
|
+
const idStr = entry.entryId;
|
|
153
|
+
if (!idStr.startsWith('tweet')) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (entryContent.content) {
|
|
157
|
+
parseAndPush(tweets, entryContent.content, idStr);
|
|
136
158
|
}
|
|
137
159
|
}
|
|
138
160
|
}
|
|
139
161
|
return { tweets, next: cursor };
|
|
140
162
|
}
|
|
141
163
|
exports.parseTimelineTweetsV2 = parseTimelineTweetsV2;
|
|
164
|
+
function parseAndPush(tweets, content, entryId, isConversation = false) {
|
|
165
|
+
const result = content.tweetResult?.result;
|
|
166
|
+
if (result?.__typename === 'Tweet') {
|
|
167
|
+
if (result.legacy) {
|
|
168
|
+
const toReplace = isConversation ? 'tweet-' : 'conversation-';
|
|
169
|
+
result.legacy.id_str = entryId.replace(toReplace, '');
|
|
170
|
+
}
|
|
171
|
+
const tweetResult = parseResult(result);
|
|
172
|
+
if (tweetResult.success) {
|
|
173
|
+
if (isConversation) {
|
|
174
|
+
if (content?.tweetDisplayType === 'SelfThread') {
|
|
175
|
+
tweetResult.tweet.isSelfThread = true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
tweets.push(tweetResult.tweet);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
142
182
|
function parseThreadedConversation(conversation) {
|
|
143
183
|
const tweets = [];
|
|
144
|
-
const instructions = conversation.data?.
|
|
145
|
-
[];
|
|
184
|
+
const instructions = conversation.data?.timeline_response?.instructions ?? [];
|
|
146
185
|
for (const instruction of instructions) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (entry.content.itemContent.tweetDisplayType === 'SelfThread') {
|
|
153
|
-
tweetResult.tweet.isSelfThread = true;
|
|
154
|
-
}
|
|
155
|
-
tweets.push(tweetResult.tweet);
|
|
156
|
-
}
|
|
186
|
+
const entries = instruction.entries ?? [];
|
|
187
|
+
for (const entry of entries) {
|
|
188
|
+
const entryContent = entry.content?.content;
|
|
189
|
+
if (entryContent) {
|
|
190
|
+
parseAndPush(tweets, entryContent, entry.entryId, true);
|
|
157
191
|
}
|
|
158
192
|
for (const item of entry.content?.items ?? []) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if (item.item.itemContent.tweetDisplayType === 'SelfThread') {
|
|
163
|
-
tweetResult.tweet.isSelfThread = true;
|
|
164
|
-
}
|
|
165
|
-
tweets.push(tweetResult.tweet);
|
|
166
|
-
}
|
|
193
|
+
const itemContent = item.item?.content;
|
|
194
|
+
if (itemContent) {
|
|
195
|
+
parseAndPush(tweets, itemContent, entry.entryId, true);
|
|
167
196
|
}
|
|
168
197
|
}
|
|
169
198
|
}
|
package/dist/timeline-v2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline-v2.js","sourceRoot":"","sources":["../src/timeline-v2.ts"],"names":[],"mappings":";;;AACA,+DAA+E;
|
|
1
|
+
{"version":3,"file":"timeline-v2.js","sourceRoot":"","sources":["../src/timeline-v2.ts"],"names":[],"mappings":"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"}
|
package/dist/tweets.d.ts
CHANGED
|
@@ -64,9 +64,41 @@ export interface Tweet {
|
|
|
64
64
|
views?: number;
|
|
65
65
|
sensitiveContent?: boolean;
|
|
66
66
|
}
|
|
67
|
+
export type TweetQuery = Partial<Tweet> | ((tweet: Tweet) => boolean | Promise<boolean>);
|
|
68
|
+
export declare const features: {
|
|
69
|
+
rweb_lists_timeline_redesign_enabled: boolean;
|
|
70
|
+
responsive_web_graphql_exclude_directive_enabled: boolean;
|
|
71
|
+
verified_phone_label_enabled: boolean;
|
|
72
|
+
creator_subscriptions_tweet_preview_api_enabled: boolean;
|
|
73
|
+
responsive_web_graphql_timeline_navigation_enabled: boolean;
|
|
74
|
+
responsive_web_graphql_skip_user_profile_image_extensions_enabled: boolean;
|
|
75
|
+
tweetypie_unmention_optimization_enabled: boolean;
|
|
76
|
+
responsive_web_edit_tweet_api_enabled: boolean;
|
|
77
|
+
graphql_is_translatable_rweb_tweet_is_translatable_enabled: boolean;
|
|
78
|
+
view_counts_everywhere_api_enabled: boolean;
|
|
79
|
+
longform_notetweets_consumption_enabled: boolean;
|
|
80
|
+
tweet_awards_web_tipping_enabled: boolean;
|
|
81
|
+
freedom_of_speech_not_reach_fetch_enabled: boolean;
|
|
82
|
+
standardized_nudges_misinfo: boolean;
|
|
83
|
+
longform_notetweets_rich_text_read_enabled: boolean;
|
|
84
|
+
responsive_web_enhance_cards_enabled: boolean;
|
|
85
|
+
subscriptions_verification_info_enabled: boolean;
|
|
86
|
+
subscriptions_verification_info_reason_enabled: boolean;
|
|
87
|
+
subscriptions_verification_info_verified_since_enabled: boolean;
|
|
88
|
+
super_follow_badge_privacy_enabled: boolean;
|
|
89
|
+
super_follow_exclusive_tweet_notifications_enabled: boolean;
|
|
90
|
+
super_follow_tweet_api_enabled: boolean;
|
|
91
|
+
super_follow_user_api_enabled: boolean;
|
|
92
|
+
android_graphql_skip_api_media_color_palette: boolean;
|
|
93
|
+
creator_subscriptions_subscription_count_enabled: boolean;
|
|
94
|
+
blue_business_profile_image_shape_enabled: boolean;
|
|
95
|
+
unified_cards_ad_metadata_container_dynamic_card_content_query_enabled: boolean;
|
|
96
|
+
};
|
|
67
97
|
export declare function fetchTweets(userId: string, maxTweets: number, cursor: string | undefined, auth: TwitterAuth): Promise<QueryTweetsResponse>;
|
|
68
98
|
export declare function getTweets(user: string, maxTweets: number, auth: TwitterAuth): AsyncGenerator<Tweet, void>;
|
|
69
99
|
export declare function getTweetsByUserId(userId: string, maxTweets: number, auth: TwitterAuth): AsyncGenerator<Tweet, void>;
|
|
70
|
-
export declare function
|
|
100
|
+
export declare function getTweetWhere(tweets: AsyncIterable<Tweet>, query: TweetQuery): Promise<Tweet | null>;
|
|
101
|
+
export declare function getTweetsWhere(tweets: AsyncIterable<Tweet>, query: TweetQuery): Promise<Tweet[]>;
|
|
102
|
+
export declare function getLatestTweet(user: string, includeRetweets: boolean, max: number, auth: TwitterAuth): Promise<Tweet | null | void>;
|
|
71
103
|
export declare function getTweet(id: string, auth: TwitterAuth): Promise<Tweet | null>;
|
|
72
104
|
//# sourceMappingURL=tweets.d.ts.map
|
package/dist/tweets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tweets.d.ts","sourceRoot":"","sources":["../src/tweets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAUpD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;KAC5B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"tweets.d.ts","sourceRoot":"","sources":["../src/tweets.ts"],"names":[],"mappings":"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"}
|
package/dist/tweets.js
CHANGED
|
@@ -3,38 +3,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getTweet = exports.getLatestTweet = exports.getTweetsByUserId = exports.getTweets = exports.fetchTweets = void 0;
|
|
6
|
+
exports.getTweet = exports.getLatestTweet = exports.getTweetsWhere = exports.getTweetWhere = exports.getTweetsByUserId = exports.getTweets = exports.fetchTweets = exports.features = void 0;
|
|
7
7
|
const api_1 = require("./api");
|
|
8
8
|
const profile_1 = require("./profile");
|
|
9
9
|
const timeline_v2_1 = require("./timeline-v2");
|
|
10
10
|
const timeline_async_1 = require("./timeline-async");
|
|
11
11
|
const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
|
|
12
|
+
exports.features = (0, api_1.addApiFeatures)({
|
|
13
|
+
interactive_text_enabled: true,
|
|
14
|
+
longform_notetweets_inline_media_enabled: false,
|
|
15
|
+
responsive_web_text_conversations_enabled: false,
|
|
16
|
+
tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled: false,
|
|
17
|
+
vibe_api_enabled: false,
|
|
18
|
+
});
|
|
12
19
|
async function fetchTweets(userId, maxTweets, cursor, auth) {
|
|
13
20
|
if (maxTweets > 200) {
|
|
14
21
|
maxTweets = 200;
|
|
15
22
|
}
|
|
16
23
|
const variables = {
|
|
17
|
-
|
|
24
|
+
includeHasBirdwatchNotes: false,
|
|
25
|
+
rest_id: userId,
|
|
18
26
|
count: maxTweets,
|
|
19
|
-
includePromotedContent: false,
|
|
20
|
-
withQuickPromoteEligibilityTweetFields: false,
|
|
21
|
-
withVoice: true,
|
|
22
|
-
withV2Timeline: true,
|
|
23
27
|
};
|
|
24
|
-
const features = (0, api_1.addApiFeatures)({
|
|
25
|
-
interactive_text_enabled: true,
|
|
26
|
-
longform_notetweets_inline_media_enabled: false,
|
|
27
|
-
responsive_web_text_conversations_enabled: false,
|
|
28
|
-
tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled: false,
|
|
29
|
-
vibe_api_enabled: true,
|
|
30
|
-
});
|
|
31
28
|
if (cursor != null && cursor != '') {
|
|
32
29
|
variables['cursor'] = cursor;
|
|
33
30
|
}
|
|
34
31
|
const params = new URLSearchParams();
|
|
35
32
|
params.set('variables', (0, json_stable_stringify_1.default)(variables));
|
|
36
|
-
params.set('features', (0, json_stable_stringify_1.default)(features));
|
|
37
|
-
const res = await (0, api_1.requestApi)(`https://twitter.com/
|
|
33
|
+
params.set('features', (0, json_stable_stringify_1.default)(exports.features));
|
|
34
|
+
const res = await (0, api_1.requestApi)(`https://api.twitter.com/graphql/8IS8MaO-2EN6GZZZb8jF0g/UserWithProfileTweetsAndRepliesQueryV2?${params.toString()}`, auth);
|
|
38
35
|
if (!res.success) {
|
|
39
36
|
throw res.err;
|
|
40
37
|
}
|
|
@@ -58,49 +55,59 @@ function getTweetsByUserId(userId, maxTweets, auth) {
|
|
|
58
55
|
});
|
|
59
56
|
}
|
|
60
57
|
exports.getTweetsByUserId = getTweetsByUserId;
|
|
61
|
-
async function
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (!tweet.isRetweet) {
|
|
58
|
+
async function getTweetWhere(tweets, query) {
|
|
59
|
+
const isCallback = typeof query === 'function';
|
|
60
|
+
for await (const tweet of tweets) {
|
|
61
|
+
const matches = isCallback
|
|
62
|
+
? await query(tweet)
|
|
63
|
+
: checkTweetMatches(tweet, query);
|
|
64
|
+
if (matches) {
|
|
69
65
|
return tweet;
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
68
|
return null;
|
|
73
69
|
}
|
|
70
|
+
exports.getTweetWhere = getTweetWhere;
|
|
71
|
+
async function getTweetsWhere(tweets, query) {
|
|
72
|
+
const isCallback = typeof query === 'function';
|
|
73
|
+
const filtered = [];
|
|
74
|
+
for await (const tweet of tweets) {
|
|
75
|
+
const matches = isCallback ? query(tweet) : checkTweetMatches(tweet, query);
|
|
76
|
+
if (!matches)
|
|
77
|
+
continue;
|
|
78
|
+
filtered.push(tweet);
|
|
79
|
+
}
|
|
80
|
+
return filtered;
|
|
81
|
+
}
|
|
82
|
+
exports.getTweetsWhere = getTweetsWhere;
|
|
83
|
+
function checkTweetMatches(tweet, options) {
|
|
84
|
+
return Object.keys(options).every((k) => {
|
|
85
|
+
const key = k;
|
|
86
|
+
return tweet[key] === options[key];
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
async function getLatestTweet(user, includeRetweets, max, auth) {
|
|
90
|
+
const timeline = getTweets(user, max, auth);
|
|
91
|
+
// No point looping if max is 1, just use first entry.
|
|
92
|
+
return max === 1
|
|
93
|
+
? (await timeline.next()).value
|
|
94
|
+
: await getTweetWhere(timeline, { isRetweet: includeRetweets });
|
|
95
|
+
}
|
|
74
96
|
exports.getLatestTweet = getLatestTweet;
|
|
75
97
|
async function getTweet(id, auth) {
|
|
76
98
|
const variables = {
|
|
77
99
|
focalTweetId: id,
|
|
78
|
-
|
|
79
|
-
includePromotedContent: true,
|
|
80
|
-
withCommunity: true,
|
|
81
|
-
withQuickPromoteEligibilityTweetFields: true,
|
|
82
|
-
withBirdwatchNotes: true,
|
|
83
|
-
withVoice: true,
|
|
84
|
-
withV2Timeline: true,
|
|
100
|
+
includeHasBirdwatchNotes: false,
|
|
85
101
|
};
|
|
86
|
-
const features = (0, api_1.addApiFeatures)({
|
|
87
|
-
longform_notetweets_inline_media_enabled: true,
|
|
88
|
-
tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled: false,
|
|
89
|
-
});
|
|
90
102
|
const params = new URLSearchParams();
|
|
91
|
-
params.set('features', (0, json_stable_stringify_1.default)(features));
|
|
103
|
+
params.set('features', (0, json_stable_stringify_1.default)(exports.features));
|
|
92
104
|
params.set('variables', (0, json_stable_stringify_1.default)(variables));
|
|
93
|
-
const res = await (0, api_1.requestApi)(`https://twitter.com/
|
|
105
|
+
const res = await (0, api_1.requestApi)(`https://api.twitter.com/graphql/83h5UyHZ9wEKBVzALX8R_g/ConversationTimelineV2?${params.toString()}`, auth);
|
|
94
106
|
if (!res.success) {
|
|
95
107
|
throw res.err;
|
|
96
108
|
}
|
|
97
109
|
const tweets = (0, timeline_v2_1.parseThreadedConversation)(res.value);
|
|
98
|
-
|
|
99
|
-
if (tweet.id === id) {
|
|
100
|
-
return tweet;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return null;
|
|
110
|
+
return tweets.find((t) => t.id === id) ?? null;
|
|
104
111
|
}
|
|
105
112
|
exports.getTweet = getTweet;
|
|
106
113
|
//# sourceMappingURL=tweets.js.map
|
package/dist/tweets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tweets.js","sourceRoot":"","sources":["../src/tweets.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAmD;AAEnD,uCAAkD;AAElD,+CAKuB;AACvB,qDAAoD;AACpD,kFAA8C;
|
|
1
|
+
{"version":3,"file":"tweets.js","sourceRoot":"","sources":["../src/tweets.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@the-convocation/twitter-scraper",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.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>",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"commit": "cz",
|
|
14
14
|
"docs:generate": "typedoc --options typedoc.json",
|
|
15
15
|
"docs:deploy": "yarn docs:generate && gh-pages -d docs",
|
|
16
|
-
"format": "prettier --write
|
|
16
|
+
"format": "prettier --write src/**/*.ts",
|
|
17
17
|
"prepare": "husky install",
|
|
18
18
|
"test": "jest"
|
|
19
19
|
},
|