x-twitter-scraper 0.7.2 → 0.9.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +3 -3
- data/lib/x_twitter_scraper/models/credit_topup_balance_response.rb +5 -5
- data/lib/x_twitter_scraper/models/draw_export_params.rb +8 -3
- data/lib/x_twitter_scraper/models/draw_list_params.rb +2 -2
- data/lib/x_twitter_scraper/models/error.rb +8 -0
- data/lib/x_twitter_scraper/models/event_list_params.rb +13 -5
- data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +731 -82
- data/lib/x_twitter_scraper/models/extraction_estimate_cost_response.rb +1 -0
- data/lib/x_twitter_scraper/models/extraction_export_results_params.rb +145 -1
- data/lib/x_twitter_scraper/models/extraction_list_params.rb +2 -2
- data/lib/x_twitter_scraper/models/extraction_retrieve_params.rb +70 -3
- data/lib/x_twitter_scraper/models/extraction_run_params.rb +662 -1
- data/lib/x_twitter_scraper/models/extraction_run_response.rb +27 -48
- data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +8 -8
- data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +9 -9
- data/lib/x_twitter_scraper/models/monitor.rb +29 -1
- data/lib/x_twitter_scraper/models/paginated_tweets.rb +4 -4
- data/lib/x_twitter_scraper/models/paginated_users.rb +5 -5
- data/lib/x_twitter_scraper/models/support/attachment_download_params.rb +28 -0
- data/lib/x_twitter_scraper/models/x/community_retrieve_members_params.rb +113 -1
- data/lib/x_twitter_scraper/models/x/community_retrieve_moderators_params.rb +117 -1
- data/lib/x_twitter_scraper/models/x/list_retrieve_followers_params.rb +117 -6
- data/lib/x_twitter_scraper/models/x/list_retrieve_members_params.rb +116 -1
- data/lib/x_twitter_scraper/models/x/tweet_get_favoriters_params.rb +117 -6
- data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +153 -1
- data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +246 -16
- data/lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb +3 -2
- data/lib/x_twitter_scraper/models/x/tweet_get_retweeters_params.rb +117 -6
- data/lib/x_twitter_scraper/models/x/tweet_search_params.rb +187 -14
- data/lib/x_twitter_scraper/models/x/tweet_search_response.rb +299 -0
- data/lib/x_twitter_scraper/models/x/user_retrieve_followers_params.rb +143 -10
- data/lib/x_twitter_scraper/models/x/user_retrieve_followers_response.rb +241 -0
- data/lib/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rb +117 -6
- data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +143 -10
- data/lib/x_twitter_scraper/models/x/user_retrieve_following_response.rb +241 -0
- data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +153 -1
- data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +153 -1
- data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +153 -1
- data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +159 -7
- data/lib/x_twitter_scraper/models/x/user_retrieve_search_params.rb +116 -1
- data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +159 -7
- data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rb +157 -8
- data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rb +245 -0
- data/lib/x_twitter_scraper/models/x/x_account.rb +7 -11
- data/lib/x_twitter_scraper/resources/credits.rb +2 -2
- data/lib/x_twitter_scraper/resources/draws.rb +5 -2
- data/lib/x_twitter_scraper/resources/events.rb +10 -4
- data/lib/x_twitter_scraper/resources/extractions.rb +383 -84
- data/lib/x_twitter_scraper/resources/guest_wallets.rb +9 -13
- data/lib/x_twitter_scraper/resources/support/attachments.rb +42 -0
- data/lib/x_twitter_scraper/resources/support.rb +5 -0
- data/lib/x_twitter_scraper/resources/x/communities.rb +95 -4
- data/lib/x_twitter_scraper/resources/x/lists.rb +96 -5
- data/lib/x_twitter_scraper/resources/x/tweets.rb +286 -28
- data/lib/x_twitter_scraper/resources/x/users.rb +531 -41
- data/lib/x_twitter_scraper/version.rb +1 -1
- data/lib/x_twitter_scraper.rb +7 -1
- data/rbi/x_twitter_scraper/models/credit_topup_balance_response.rbi +6 -6
- data/rbi/x_twitter_scraper/models/draw_export_params.rbi +6 -3
- data/rbi/x_twitter_scraper/models/draw_list_params.rbi +2 -2
- data/rbi/x_twitter_scraper/models/error.rbi +40 -0
- data/rbi/x_twitter_scraper/models/event_list_params.rbi +15 -4
- data/rbi/x_twitter_scraper/models/extraction_estimate_cost_params.rbi +1338 -86
- data/rbi/x_twitter_scraper/models/extraction_estimate_cost_response.rbi +5 -0
- data/rbi/x_twitter_scraper/models/extraction_export_results_params.rbi +198 -0
- data/rbi/x_twitter_scraper/models/extraction_list_params.rbi +2 -2
- data/rbi/x_twitter_scraper/models/extraction_retrieve_params.rbi +194 -2
- data/rbi/x_twitter_scraper/models/extraction_run_params.rbi +1221 -0
- data/rbi/x_twitter_scraper/models/extraction_run_response.rbi +35 -162
- data/rbi/x_twitter_scraper/models/guest_wallet_create_response.rbi +8 -6
- data/rbi/x_twitter_scraper/models/guest_wallet_topup_response.rbi +9 -7
- data/rbi/x_twitter_scraper/models/monitor.rbi +54 -3
- data/rbi/x_twitter_scraper/models/paginated_tweets.rbi +4 -4
- data/rbi/x_twitter_scraper/models/paginated_users.rbi +5 -5
- data/rbi/x_twitter_scraper/models/support/attachment_download_params.rbi +51 -0
- data/rbi/x_twitter_scraper/models/x/community_retrieve_members_params.rbi +154 -0
- data/rbi/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbi +154 -0
- data/rbi/x_twitter_scraper/models/x/list_retrieve_followers_params.rbi +160 -8
- data/rbi/x_twitter_scraper/models/x/list_retrieve_members_params.rbi +154 -0
- data/rbi/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbi +160 -8
- data/rbi/x_twitter_scraper/models/x/tweet_get_quotes_params.rbi +209 -0
- data/rbi/x_twitter_scraper/models/x/tweet_get_replies_params.rbi +403 -20
- data/rbi/x_twitter_scraper/models/x/tweet_get_replies_response.rbi +3 -2
- data/rbi/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbi +160 -8
- data/rbi/x_twitter_scraper/models/x/tweet_search_params.rbi +279 -16
- data/rbi/x_twitter_scraper/models/x/tweet_search_response.rbi +543 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_params.rbi +228 -12
- data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_response.rbi +440 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbi +160 -8
- data/rbi/x_twitter_scraper/models/x/user_retrieve_following_params.rbi +228 -12
- data/rbi/x_twitter_scraper/models/x/user_retrieve_following_response.rbi +440 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_likes_params.rbi +209 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_media_params.rbi +209 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbi +209 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_replies_params.rbi +217 -8
- data/rbi/x_twitter_scraper/models/x/user_retrieve_search_params.rbi +154 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbi +217 -8
- data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbi +248 -10
- data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbi +440 -0
- data/rbi/x_twitter_scraper/models/x/x_account.rbi +9 -15
- data/rbi/x_twitter_scraper/resources/credits.rbi +2 -2
- data/rbi/x_twitter_scraper/resources/draws.rbi +3 -2
- data/rbi/x_twitter_scraper/resources/events.rbi +5 -2
- data/rbi/x_twitter_scraper/resources/extractions.rbi +525 -83
- data/rbi/x_twitter_scraper/resources/guest_wallets.rbi +9 -13
- data/rbi/x_twitter_scraper/resources/support/attachments.rbi +35 -0
- data/rbi/x_twitter_scraper/resources/support.rbi +4 -0
- data/rbi/x_twitter_scraper/resources/x/communities.rbi +84 -0
- data/rbi/x_twitter_scraper/resources/x/lists.rbi +87 -4
- data/rbi/x_twitter_scraper/resources/x/tweets.rbi +307 -31
- data/rbi/x_twitter_scraper/resources/x/users.rbi +558 -34
- data/sig/x_twitter_scraper/models/error.rbs +16 -0
- data/sig/x_twitter_scraper/models/event_list_params.rbs +7 -0
- data/sig/x_twitter_scraper/models/extraction_estimate_cost_params.rbs +605 -1
- data/sig/x_twitter_scraper/models/extraction_estimate_cost_response.rbs +2 -0
- data/sig/x_twitter_scraper/models/extraction_export_results_params.rbs +127 -1
- data/sig/x_twitter_scraper/models/extraction_retrieve_params.rbs +74 -1
- data/sig/x_twitter_scraper/models/extraction_run_params.rbs +611 -1
- data/sig/x_twitter_scraper/models/extraction_run_response.rbs +29 -67
- data/sig/x_twitter_scraper/models/guest_wallet_create_response.rbs +4 -4
- data/sig/x_twitter_scraper/models/guest_wallet_topup_response.rbs +4 -4
- data/sig/x_twitter_scraper/models/monitor.rbs +29 -3
- data/sig/x_twitter_scraper/models/support/attachment_download_params.rbs +32 -0
- data/sig/x_twitter_scraper/models/x/community_retrieve_members_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbs +102 -1
- data/sig/x_twitter_scraper/models/x/list_retrieve_followers_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/list_retrieve_members_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/tweet_get_quotes_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/tweet_get_replies_params.rbs +207 -2
- data/sig/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/tweet_search_params.rbs +154 -1
- data/sig/x_twitter_scraper/models/x/tweet_search_response.rbs +258 -0
- data/sig/x_twitter_scraper/models/x/user_retrieve_followers_params.rbs +119 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_followers_response.rbs +216 -0
- data/sig/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_following_params.rbs +119 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_following_response.rbs +216 -0
- data/sig/x_twitter_scraper/models/x/user_retrieve_likes_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_media_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_replies_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_search_params.rbs +102 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbs +137 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbs +216 -0
- data/sig/x_twitter_scraper/resources/events.rbs +1 -0
- data/sig/x_twitter_scraper/resources/extractions.rbs +137 -0
- data/sig/x_twitter_scraper/resources/support/attachments.rbs +15 -0
- data/sig/x_twitter_scraper/resources/support.rbs +2 -0
- data/sig/x_twitter_scraper/resources/x/communities.rbs +28 -0
- data/sig/x_twitter_scraper/resources/x/lists.rbs +28 -0
- data/sig/x_twitter_scraper/resources/x/tweets.rbs +93 -1
- data/sig/x_twitter_scraper/resources/x/users.rbs +173 -3
- metadata +19 -1
|
@@ -22,6 +22,13 @@ module XTwitterScraper
|
|
|
22
22
|
sig { returns(XTwitterScraper::ExtractionRunParams::ToolType::OrSymbol) }
|
|
23
23
|
attr_accessor :tool_type
|
|
24
24
|
|
|
25
|
+
# Estimate cost without creating an extraction.
|
|
26
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
27
|
+
attr_reader :dry_run
|
|
28
|
+
|
|
29
|
+
sig { params(dry_run: T::Boolean).void }
|
|
30
|
+
attr_writer :dry_run
|
|
31
|
+
|
|
25
32
|
# Raw advanced search query appended as-is (tweet_search_extractor)
|
|
26
33
|
sig { returns(T.nilable(String)) }
|
|
27
34
|
attr_reader :advanced_query
|
|
@@ -37,6 +44,20 @@ module XTwitterScraper
|
|
|
37
44
|
sig { params(any_words: String).void }
|
|
38
45
|
attr_writer :any_words
|
|
39
46
|
|
|
47
|
+
# Bio terms separated by commas or lines.
|
|
48
|
+
sig { returns(T.nilable(String)) }
|
|
49
|
+
attr_reader :bio_contains
|
|
50
|
+
|
|
51
|
+
sig { params(bio_contains: String).void }
|
|
52
|
+
attr_writer :bio_contains
|
|
53
|
+
|
|
54
|
+
# Return only Blue-verified Tweet authors.
|
|
55
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
56
|
+
attr_reader :blue_verified_only
|
|
57
|
+
|
|
58
|
+
sig { params(blue_verified_only: T::Boolean).void }
|
|
59
|
+
attr_writer :blue_verified_only
|
|
60
|
+
|
|
40
61
|
# Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
|
|
41
62
|
sig { returns(T.nilable(String)) }
|
|
42
63
|
attr_reader :bounding_box
|
|
@@ -44,6 +65,13 @@ module XTwitterScraper
|
|
|
44
65
|
sig { params(bounding_box: String).void }
|
|
45
66
|
attr_writer :bounding_box
|
|
46
67
|
|
|
68
|
+
# Match the Tweet card name.
|
|
69
|
+
sig { returns(T.nilable(String)) }
|
|
70
|
+
attr_reader :card_name
|
|
71
|
+
|
|
72
|
+
sig { params(card_name: String).void }
|
|
73
|
+
attr_writer :card_name
|
|
74
|
+
|
|
47
75
|
# Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
|
|
48
76
|
sig { returns(T.nilable(String)) }
|
|
49
77
|
attr_reader :cashtags
|
|
@@ -51,6 +79,24 @@ module XTwitterScraper
|
|
|
51
79
|
sig { params(cashtags: String).void }
|
|
52
80
|
attr_writer :cashtags
|
|
53
81
|
|
|
82
|
+
# Reply collection strategy.
|
|
83
|
+
sig do
|
|
84
|
+
returns(
|
|
85
|
+
T.nilable(
|
|
86
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::OrSymbol
|
|
87
|
+
)
|
|
88
|
+
)
|
|
89
|
+
end
|
|
90
|
+
attr_reader :collection_strategy
|
|
91
|
+
|
|
92
|
+
sig do
|
|
93
|
+
params(
|
|
94
|
+
collection_strategy:
|
|
95
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::OrSymbol
|
|
96
|
+
).void
|
|
97
|
+
end
|
|
98
|
+
attr_writer :collection_strategy
|
|
99
|
+
|
|
54
100
|
# Conversation ID filter (tweet_search_extractor)
|
|
55
101
|
sig { returns(T.nilable(String)) }
|
|
56
102
|
attr_reader :conversation_id
|
|
@@ -58,6 +104,29 @@ module XTwitterScraper
|
|
|
58
104
|
sig { params(conversation_id: String).void }
|
|
59
105
|
attr_writer :conversation_id
|
|
60
106
|
|
|
107
|
+
# Merge duplicate results across collection targets.
|
|
108
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
109
|
+
attr_reader :dedupe_across_targets
|
|
110
|
+
|
|
111
|
+
sig { params(dedupe_across_targets: T::Boolean).void }
|
|
112
|
+
attr_writer :dedupe_across_targets
|
|
113
|
+
|
|
114
|
+
# Keep target duplicates, first rows, or merged overlap.
|
|
115
|
+
sig do
|
|
116
|
+
returns(
|
|
117
|
+
T.nilable(XTwitterScraper::ExtractionRunParams::DedupeMode::OrSymbol)
|
|
118
|
+
)
|
|
119
|
+
end
|
|
120
|
+
attr_reader :dedupe_mode
|
|
121
|
+
|
|
122
|
+
sig do
|
|
123
|
+
params(
|
|
124
|
+
dedupe_mode:
|
|
125
|
+
XTwitterScraper::ExtractionRunParams::DedupeMode::OrSymbol
|
|
126
|
+
).void
|
|
127
|
+
end
|
|
128
|
+
attr_writer :dedupe_mode
|
|
129
|
+
|
|
61
130
|
# Exact phrase to match (tweet_search_extractor)
|
|
62
131
|
sig { returns(T.nilable(String)) }
|
|
63
132
|
attr_reader :exact_phrase
|
|
@@ -65,6 +134,20 @@ module XTwitterScraper
|
|
|
65
134
|
sig { params(exact_phrase: String).void }
|
|
66
135
|
attr_writer :exact_phrase
|
|
67
136
|
|
|
137
|
+
# Exclude replies from the source author.
|
|
138
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
139
|
+
attr_reader :exclude_original_author
|
|
140
|
+
|
|
141
|
+
sig { params(exclude_original_author: T::Boolean).void }
|
|
142
|
+
attr_writer :exclude_original_author
|
|
143
|
+
|
|
144
|
+
# Exclude a source application.
|
|
145
|
+
sig { returns(T.nilable(String)) }
|
|
146
|
+
attr_reader :exclude_source
|
|
147
|
+
|
|
148
|
+
sig { params(exclude_source: String).void }
|
|
149
|
+
attr_writer :exclude_source
|
|
150
|
+
|
|
68
151
|
# Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
|
|
69
152
|
# (tweet_search_extractor)
|
|
70
153
|
sig { returns(T.nilable(String)) }
|
|
@@ -80,6 +163,13 @@ module XTwitterScraper
|
|
|
80
163
|
sig { params(from_user: String).void }
|
|
81
164
|
attr_writer :from_user
|
|
82
165
|
|
|
166
|
+
# Match latitude, longitude, and radius.
|
|
167
|
+
sig { returns(T.nilable(String)) }
|
|
168
|
+
attr_reader :geocode
|
|
169
|
+
|
|
170
|
+
sig { params(geocode: String).void }
|
|
171
|
+
attr_writer :geocode
|
|
172
|
+
|
|
83
173
|
# Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
|
|
84
174
|
sig { returns(T.nilable(String)) }
|
|
85
175
|
attr_reader :hashtags
|
|
@@ -87,6 +177,48 @@ module XTwitterScraper
|
|
|
87
177
|
sig { params(hashtags: String).void }
|
|
88
178
|
attr_writer :hashtags
|
|
89
179
|
|
|
180
|
+
# Require a profile location.
|
|
181
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
182
|
+
attr_reader :has_location
|
|
183
|
+
|
|
184
|
+
sig { params(has_location: T::Boolean).void }
|
|
185
|
+
attr_writer :has_location
|
|
186
|
+
|
|
187
|
+
# Return only replies with media.
|
|
188
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
189
|
+
attr_reader :has_media_only
|
|
190
|
+
|
|
191
|
+
sig { params(has_media_only: T::Boolean).void }
|
|
192
|
+
attr_writer :has_media_only
|
|
193
|
+
|
|
194
|
+
# Require a profile website.
|
|
195
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
196
|
+
attr_reader :has_website
|
|
197
|
+
|
|
198
|
+
sig { params(has_website: T::Boolean).void }
|
|
199
|
+
attr_writer :has_website
|
|
200
|
+
|
|
201
|
+
# Include the source post in reply results.
|
|
202
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
203
|
+
attr_reader :include_original_post
|
|
204
|
+
|
|
205
|
+
sig { params(include_original_post: T::Boolean).void }
|
|
206
|
+
attr_writer :include_original_post
|
|
207
|
+
|
|
208
|
+
# Add matching search terms to collection metadata.
|
|
209
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
210
|
+
attr_reader :include_search_terms
|
|
211
|
+
|
|
212
|
+
sig { params(include_search_terms: T::Boolean).void }
|
|
213
|
+
attr_writer :include_search_terms
|
|
214
|
+
|
|
215
|
+
# Add source target metadata to each result.
|
|
216
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
217
|
+
attr_reader :include_target_metadata
|
|
218
|
+
|
|
219
|
+
sig { params(include_target_metadata: T::Boolean).void }
|
|
220
|
+
attr_writer :include_target_metadata
|
|
221
|
+
|
|
90
222
|
# Only replies to this tweet ID (tweet_search_extractor)
|
|
91
223
|
sig { returns(T.nilable(String)) }
|
|
92
224
|
attr_reader :in_reply_to_tweet_id
|
|
@@ -108,6 +240,90 @@ module XTwitterScraper
|
|
|
108
240
|
sig { params(list_id: String).void }
|
|
109
241
|
attr_writer :list_id
|
|
110
242
|
|
|
243
|
+
# Required profile location text.
|
|
244
|
+
sig { returns(T.nilable(String)) }
|
|
245
|
+
attr_reader :location_contains
|
|
246
|
+
|
|
247
|
+
sig { params(location_contains: String).void }
|
|
248
|
+
attr_writer :location_contains
|
|
249
|
+
|
|
250
|
+
# Maximum nested reply depth.
|
|
251
|
+
sig { returns(T.nilable(Integer)) }
|
|
252
|
+
attr_reader :max_depth
|
|
253
|
+
|
|
254
|
+
sig { params(max_depth: Integer).void }
|
|
255
|
+
attr_writer :max_depth
|
|
256
|
+
|
|
257
|
+
# Maximum follower count for profile results.
|
|
258
|
+
sig { returns(T.nilable(Integer)) }
|
|
259
|
+
attr_reader :max_followers
|
|
260
|
+
|
|
261
|
+
sig { params(max_followers: Integer).void }
|
|
262
|
+
attr_writer :max_followers
|
|
263
|
+
|
|
264
|
+
# Maximum following count for profile results.
|
|
265
|
+
sig { returns(T.nilable(Integer)) }
|
|
266
|
+
attr_reader :max_following
|
|
267
|
+
|
|
268
|
+
sig { params(max_following: Integer).void }
|
|
269
|
+
attr_writer :max_following
|
|
270
|
+
|
|
271
|
+
# Return Tweets older than this Tweet ID.
|
|
272
|
+
sig { returns(T.nilable(String)) }
|
|
273
|
+
attr_reader :max_id
|
|
274
|
+
|
|
275
|
+
sig { params(max_id: String).void }
|
|
276
|
+
attr_writer :max_id
|
|
277
|
+
|
|
278
|
+
# Maximum results collected for each target.
|
|
279
|
+
sig { returns(T.nilable(Integer)) }
|
|
280
|
+
attr_reader :max_items_per_target
|
|
281
|
+
|
|
282
|
+
sig { params(max_items_per_target: Integer).void }
|
|
283
|
+
attr_writer :max_items_per_target
|
|
284
|
+
|
|
285
|
+
# Maximum Tweet like count.
|
|
286
|
+
sig { returns(T.nilable(Integer)) }
|
|
287
|
+
attr_reader :max_likes
|
|
288
|
+
|
|
289
|
+
sig { params(max_likes: Integer).void }
|
|
290
|
+
attr_writer :max_likes
|
|
291
|
+
|
|
292
|
+
# Reply pages collected for each target.
|
|
293
|
+
sig { returns(T.nilable(Integer)) }
|
|
294
|
+
attr_reader :max_pages_per_target
|
|
295
|
+
|
|
296
|
+
sig { params(max_pages_per_target: Integer).void }
|
|
297
|
+
attr_writer :max_pages_per_target
|
|
298
|
+
|
|
299
|
+
# Maximum post count for profile results.
|
|
300
|
+
sig { returns(T.nilable(Integer)) }
|
|
301
|
+
attr_reader :max_posts
|
|
302
|
+
|
|
303
|
+
sig { params(max_posts: Integer).void }
|
|
304
|
+
attr_writer :max_posts
|
|
305
|
+
|
|
306
|
+
# Maximum Tweet quote count.
|
|
307
|
+
sig { returns(T.nilable(Integer)) }
|
|
308
|
+
attr_reader :max_quotes
|
|
309
|
+
|
|
310
|
+
sig { params(max_quotes: Integer).void }
|
|
311
|
+
attr_writer :max_quotes
|
|
312
|
+
|
|
313
|
+
# Maximum Tweet reply count.
|
|
314
|
+
sig { returns(T.nilable(Integer)) }
|
|
315
|
+
attr_reader :max_replies
|
|
316
|
+
|
|
317
|
+
sig { params(max_replies: Integer).void }
|
|
318
|
+
attr_writer :max_replies
|
|
319
|
+
|
|
320
|
+
# Maximum Tweet repost count.
|
|
321
|
+
sig { returns(T.nilable(Integer)) }
|
|
322
|
+
attr_reader :max_retweets
|
|
323
|
+
|
|
324
|
+
sig { params(max_retweets: Integer).void }
|
|
325
|
+
attr_writer :max_retweets
|
|
326
|
+
|
|
111
327
|
# Media type filter (tweet_search_extractor)
|
|
112
328
|
sig do
|
|
113
329
|
returns(
|
|
@@ -130,6 +346,20 @@ module XTwitterScraper
|
|
|
130
346
|
sig { params(mentioning: String).void }
|
|
131
347
|
attr_writer :mentioning
|
|
132
348
|
|
|
349
|
+
# Minimum profile age in days.
|
|
350
|
+
sig { returns(T.nilable(Integer)) }
|
|
351
|
+
attr_reader :min_account_age_days
|
|
352
|
+
|
|
353
|
+
sig { params(min_account_age_days: Integer).void }
|
|
354
|
+
attr_writer :min_account_age_days
|
|
355
|
+
|
|
356
|
+
# Minimum Tweet bookmark count.
|
|
357
|
+
sig { returns(T.nilable(Integer)) }
|
|
358
|
+
attr_reader :min_bookmarks
|
|
359
|
+
|
|
360
|
+
sig { params(min_bookmarks: Integer).void }
|
|
361
|
+
attr_writer :min_bookmarks
|
|
362
|
+
|
|
133
363
|
# Minimum likes threshold (tweet_search_extractor)
|
|
134
364
|
sig { returns(T.nilable(Integer)) }
|
|
135
365
|
attr_reader :min_faves
|
|
@@ -137,6 +367,27 @@ module XTwitterScraper
|
|
|
137
367
|
sig { params(min_faves: Integer).void }
|
|
138
368
|
attr_writer :min_faves
|
|
139
369
|
|
|
370
|
+
# Minimum follower count for profile results.
|
|
371
|
+
sig { returns(T.nilable(Integer)) }
|
|
372
|
+
attr_reader :min_followers
|
|
373
|
+
|
|
374
|
+
sig { params(min_followers: Integer).void }
|
|
375
|
+
attr_writer :min_followers
|
|
376
|
+
|
|
377
|
+
# Minimum following count for profile results.
|
|
378
|
+
sig { returns(T.nilable(Integer)) }
|
|
379
|
+
attr_reader :min_following
|
|
380
|
+
|
|
381
|
+
sig { params(min_following: Integer).void }
|
|
382
|
+
attr_writer :min_following
|
|
383
|
+
|
|
384
|
+
# Minimum post count for profile results.
|
|
385
|
+
sig { returns(T.nilable(Integer)) }
|
|
386
|
+
attr_reader :min_posts
|
|
387
|
+
|
|
388
|
+
sig { params(min_posts: Integer).void }
|
|
389
|
+
attr_writer :min_posts
|
|
390
|
+
|
|
140
391
|
# Minimum quote count threshold (tweet_search_extractor)
|
|
141
392
|
sig { returns(T.nilable(Integer)) }
|
|
142
393
|
attr_reader :min_quotes
|
|
@@ -158,6 +409,41 @@ module XTwitterScraper
|
|
|
158
409
|
sig { params(min_retweets: Integer).void }
|
|
159
410
|
attr_writer :min_retweets
|
|
160
411
|
|
|
412
|
+
# Minimum Tweet view count.
|
|
413
|
+
sig { returns(T.nilable(Integer)) }
|
|
414
|
+
attr_reader :min_views
|
|
415
|
+
|
|
416
|
+
sig { params(min_views: Integer).void }
|
|
417
|
+
attr_writer :min_views
|
|
418
|
+
|
|
419
|
+
# Only return native reposts.
|
|
420
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
421
|
+
attr_reader :native_retweets
|
|
422
|
+
|
|
423
|
+
sig { params(native_retweets: T::Boolean).void }
|
|
424
|
+
attr_writer :native_retweets
|
|
425
|
+
|
|
426
|
+
# Match a place name.
|
|
427
|
+
sig { returns(T.nilable(String)) }
|
|
428
|
+
attr_reader :near
|
|
429
|
+
|
|
430
|
+
sig { params(near: String).void }
|
|
431
|
+
attr_writer :near
|
|
432
|
+
|
|
433
|
+
# Only return news results.
|
|
434
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
435
|
+
attr_reader :news
|
|
436
|
+
|
|
437
|
+
sig { params(news: T::Boolean).void }
|
|
438
|
+
attr_writer :news
|
|
439
|
+
|
|
440
|
+
# Shortcut for dedupeMode=merge.
|
|
441
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
442
|
+
attr_reader :overlap_mode
|
|
443
|
+
|
|
444
|
+
sig { params(overlap_mode: T::Boolean).void }
|
|
445
|
+
attr_writer :overlap_mode
|
|
446
|
+
|
|
161
447
|
# Search within a place ID (tweet_search_extractor)
|
|
162
448
|
sig { returns(T.nilable(String)) }
|
|
163
449
|
attr_reader :place
|
|
@@ -179,6 +465,21 @@ module XTwitterScraper
|
|
|
179
465
|
sig { params(point_radius: String).void }
|
|
180
466
|
attr_writer :point_radius
|
|
181
467
|
|
|
468
|
+
# Search ranking applied to every query.
|
|
469
|
+
sig do
|
|
470
|
+
returns(
|
|
471
|
+
T.nilable(XTwitterScraper::ExtractionRunParams::QueryType::OrSymbol)
|
|
472
|
+
)
|
|
473
|
+
end
|
|
474
|
+
attr_reader :query_type
|
|
475
|
+
|
|
476
|
+
sig do
|
|
477
|
+
params(
|
|
478
|
+
query_type: XTwitterScraper::ExtractionRunParams::QueryType::OrSymbol
|
|
479
|
+
).void
|
|
480
|
+
end
|
|
481
|
+
attr_writer :query_type
|
|
482
|
+
|
|
182
483
|
# Quote mode (tweet_search_extractor)
|
|
183
484
|
sig do
|
|
184
485
|
returns(
|
|
@@ -201,6 +502,26 @@ module XTwitterScraper
|
|
|
201
502
|
sig { params(quotes_of_tweet_id: String).void }
|
|
202
503
|
attr_writer :quotes_of_tweet_id
|
|
203
504
|
|
|
505
|
+
# Profile relations processed within one job.
|
|
506
|
+
sig do
|
|
507
|
+
returns(
|
|
508
|
+
T.nilable(
|
|
509
|
+
T::Array[XTwitterScraper::ExtractionRunParams::RelationTarget]
|
|
510
|
+
)
|
|
511
|
+
)
|
|
512
|
+
end
|
|
513
|
+
attr_reader :relation_targets
|
|
514
|
+
|
|
515
|
+
sig do
|
|
516
|
+
params(
|
|
517
|
+
relation_targets:
|
|
518
|
+
T::Array[
|
|
519
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::OrHash
|
|
520
|
+
]
|
|
521
|
+
).void
|
|
522
|
+
end
|
|
523
|
+
attr_writer :relation_targets
|
|
524
|
+
|
|
204
525
|
# Reply mode (tweet_search_extractor)
|
|
205
526
|
sig do
|
|
206
527
|
returns(
|
|
@@ -246,6 +567,35 @@ module XTwitterScraper
|
|
|
246
567
|
sig { params(retweets_of_tweet_id: String).void }
|
|
247
568
|
attr_writer :retweets_of_tweet_id
|
|
248
569
|
|
|
570
|
+
# Enable the safe-search filter.
|
|
571
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
572
|
+
attr_reader :safe
|
|
573
|
+
|
|
574
|
+
sig { params(safe: T::Boolean).void }
|
|
575
|
+
attr_writer :safe
|
|
576
|
+
|
|
577
|
+
# Reply depth scope.
|
|
578
|
+
sig do
|
|
579
|
+
returns(
|
|
580
|
+
T.nilable(XTwitterScraper::ExtractionRunParams::Scope::OrSymbol)
|
|
581
|
+
)
|
|
582
|
+
end
|
|
583
|
+
attr_reader :scope
|
|
584
|
+
|
|
585
|
+
sig do
|
|
586
|
+
params(
|
|
587
|
+
scope: XTwitterScraper::ExtractionRunParams::Scope::OrSymbol
|
|
588
|
+
).void
|
|
589
|
+
end
|
|
590
|
+
attr_writer :scope
|
|
591
|
+
|
|
592
|
+
# Search queries processed as one collection job.
|
|
593
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
594
|
+
attr_reader :search_queries
|
|
595
|
+
|
|
596
|
+
sig { params(search_queries: T::Array[String]).void }
|
|
597
|
+
attr_writer :search_queries
|
|
598
|
+
|
|
249
599
|
# Required for tweet_search_extractor & community_search.
|
|
250
600
|
sig { returns(T.nilable(String)) }
|
|
251
601
|
attr_reader :search_query
|
|
@@ -260,6 +610,53 @@ module XTwitterScraper
|
|
|
260
610
|
sig { params(since_date: Date).void }
|
|
261
611
|
attr_writer :since_date
|
|
262
612
|
|
|
613
|
+
# Return Tweets newer than this Tweet ID.
|
|
614
|
+
sig { returns(T.nilable(String)) }
|
|
615
|
+
attr_reader :since_id
|
|
616
|
+
|
|
617
|
+
sig { params(since_id: String).void }
|
|
618
|
+
attr_writer :since_id
|
|
619
|
+
|
|
620
|
+
# Reply start time as ISO 8601 or Unix seconds.
|
|
621
|
+
sig do
|
|
622
|
+
returns(
|
|
623
|
+
T.nilable(XTwitterScraper::ExtractionRunParams::SinceTime::Variants)
|
|
624
|
+
)
|
|
625
|
+
end
|
|
626
|
+
attr_reader :since_time
|
|
627
|
+
|
|
628
|
+
sig do
|
|
629
|
+
params(
|
|
630
|
+
since_time: XTwitterScraper::ExtractionRunParams::SinceTime::Variants
|
|
631
|
+
).void
|
|
632
|
+
end
|
|
633
|
+
attr_writer :since_time
|
|
634
|
+
|
|
635
|
+
# Reply result order.
|
|
636
|
+
sig do
|
|
637
|
+
returns(T.nilable(XTwitterScraper::ExtractionRunParams::Sort::OrSymbol))
|
|
638
|
+
end
|
|
639
|
+
attr_reader :sort
|
|
640
|
+
|
|
641
|
+
sig do
|
|
642
|
+
params(sort: XTwitterScraper::ExtractionRunParams::Sort::OrSymbol).void
|
|
643
|
+
end
|
|
644
|
+
attr_writer :sort
|
|
645
|
+
|
|
646
|
+
# Match the source application.
|
|
647
|
+
sig { returns(T.nilable(String)) }
|
|
648
|
+
attr_reader :source
|
|
649
|
+
|
|
650
|
+
sig { params(source: String).void }
|
|
651
|
+
attr_writer :source
|
|
652
|
+
|
|
653
|
+
# Resume one reply target from this cursor.
|
|
654
|
+
sig { returns(T.nilable(String)) }
|
|
655
|
+
attr_reader :start_cursor
|
|
656
|
+
|
|
657
|
+
sig { params(start_cursor: String).void }
|
|
658
|
+
attr_writer :start_cursor
|
|
659
|
+
|
|
263
660
|
# Required for community_post_extractor & community_search.
|
|
264
661
|
sig { returns(T.nilable(String)) }
|
|
265
662
|
attr_reader :target_community_id
|
|
@@ -267,6 +664,13 @@ module XTwitterScraper
|
|
|
267
664
|
sig { params(target_community_id: String).void }
|
|
268
665
|
attr_writer :target_community_id
|
|
269
666
|
|
|
667
|
+
# Community IDs processed as one collection job.
|
|
668
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
669
|
+
attr_reader :target_community_ids
|
|
670
|
+
|
|
671
|
+
sig { params(target_community_ids: T::Array[String]).void }
|
|
672
|
+
attr_writer :target_community_ids
|
|
673
|
+
|
|
270
674
|
# Required for list_follower_explorer, list_member_extractor &
|
|
271
675
|
# list_post_extractor.
|
|
272
676
|
sig { returns(T.nilable(String)) }
|
|
@@ -275,6 +679,41 @@ module XTwitterScraper
|
|
|
275
679
|
sig { params(target_list_id: String).void }
|
|
276
680
|
attr_writer :target_list_id
|
|
277
681
|
|
|
682
|
+
# List IDs processed as one collection job.
|
|
683
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
684
|
+
attr_reader :target_list_ids
|
|
685
|
+
|
|
686
|
+
sig { params(target_list_ids: T::Array[String]).void }
|
|
687
|
+
attr_writer :target_list_ids
|
|
688
|
+
|
|
689
|
+
# Mixed targets auto-routed within one job.
|
|
690
|
+
sig do
|
|
691
|
+
returns(
|
|
692
|
+
T.nilable(
|
|
693
|
+
T::Array[
|
|
694
|
+
T.any(
|
|
695
|
+
String,
|
|
696
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1
|
|
697
|
+
)
|
|
698
|
+
]
|
|
699
|
+
)
|
|
700
|
+
)
|
|
701
|
+
end
|
|
702
|
+
attr_reader :targets
|
|
703
|
+
|
|
704
|
+
sig do
|
|
705
|
+
params(
|
|
706
|
+
targets:
|
|
707
|
+
T::Array[
|
|
708
|
+
T.any(
|
|
709
|
+
String,
|
|
710
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::OrHash
|
|
711
|
+
)
|
|
712
|
+
]
|
|
713
|
+
).void
|
|
714
|
+
end
|
|
715
|
+
attr_writer :targets
|
|
716
|
+
|
|
278
717
|
# Required for space_explorer.
|
|
279
718
|
sig { returns(T.nilable(String)) }
|
|
280
719
|
attr_reader :target_space_id
|
|
@@ -288,12 +727,26 @@ module XTwitterScraper
|
|
|
288
727
|
sig { params(target_tweet_id: String).void }
|
|
289
728
|
attr_writer :target_tweet_id
|
|
290
729
|
|
|
730
|
+
# Tweet IDs processed as one collection job.
|
|
731
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
732
|
+
attr_reader :target_tweet_ids
|
|
733
|
+
|
|
734
|
+
sig { params(target_tweet_ids: T::Array[String]).void }
|
|
735
|
+
attr_writer :target_tweet_ids
|
|
736
|
+
|
|
291
737
|
sig { returns(T.nilable(String)) }
|
|
292
738
|
attr_reader :target_username
|
|
293
739
|
|
|
294
740
|
sig { params(target_username: String).void }
|
|
295
741
|
attr_writer :target_username
|
|
296
742
|
|
|
743
|
+
# Usernames processed as one collection job.
|
|
744
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
745
|
+
attr_reader :target_usernames
|
|
746
|
+
|
|
747
|
+
sig { params(target_usernames: T::Array[String]).void }
|
|
748
|
+
attr_writer :target_usernames
|
|
749
|
+
|
|
297
750
|
# Filter replies sent to a username (tweet_search_extractor)
|
|
298
751
|
sig { returns(T.nilable(String)) }
|
|
299
752
|
attr_reader :to_user
|
|
@@ -308,6 +761,21 @@ module XTwitterScraper
|
|
|
308
761
|
sig { params(until_date: Date).void }
|
|
309
762
|
attr_writer :until_date
|
|
310
763
|
|
|
764
|
+
# Reply end time as ISO 8601 or Unix seconds.
|
|
765
|
+
sig do
|
|
766
|
+
returns(
|
|
767
|
+
T.nilable(XTwitterScraper::ExtractionRunParams::UntilTime::Variants)
|
|
768
|
+
)
|
|
769
|
+
end
|
|
770
|
+
attr_reader :until_time
|
|
771
|
+
|
|
772
|
+
sig do
|
|
773
|
+
params(
|
|
774
|
+
until_time: XTwitterScraper::ExtractionRunParams::UntilTime::Variants
|
|
775
|
+
).void
|
|
776
|
+
end
|
|
777
|
+
attr_writer :until_time
|
|
778
|
+
|
|
311
779
|
# URL substring or domain filter (tweet_search_extractor)
|
|
312
780
|
sig { returns(T.nilable(String)) }
|
|
313
781
|
attr_reader :url
|
|
@@ -315,6 +783,13 @@ module XTwitterScraper
|
|
|
315
783
|
sig { params(url: String).void }
|
|
316
784
|
attr_writer :url
|
|
317
785
|
|
|
786
|
+
# Required username text.
|
|
787
|
+
sig { returns(T.nilable(String)) }
|
|
788
|
+
attr_reader :username_contains
|
|
789
|
+
|
|
790
|
+
sig { params(username_contains: String).void }
|
|
791
|
+
attr_writer :username_contains
|
|
792
|
+
|
|
318
793
|
# Only verified authors (tweet_search_extractor)
|
|
319
794
|
sig { returns(T.nilable(T::Boolean)) }
|
|
320
795
|
attr_reader :verified_only
|
|
@@ -322,101 +797,271 @@ module XTwitterScraper
|
|
|
322
797
|
sig { params(verified_only: T::Boolean).void }
|
|
323
798
|
attr_writer :verified_only
|
|
324
799
|
|
|
800
|
+
# Exact profile verification type.
|
|
801
|
+
sig { returns(T.nilable(String)) }
|
|
802
|
+
attr_reader :verified_type
|
|
803
|
+
|
|
804
|
+
sig { params(verified_type: String).void }
|
|
805
|
+
attr_writer :verified_type
|
|
806
|
+
|
|
807
|
+
# Set the radius for the near filter.
|
|
808
|
+
sig { returns(T.nilable(String)) }
|
|
809
|
+
attr_reader :within
|
|
810
|
+
|
|
811
|
+
sig { params(within: String).void }
|
|
812
|
+
attr_writer :within
|
|
813
|
+
|
|
814
|
+
# Match Tweets inside a recent time window.
|
|
815
|
+
sig { returns(T.nilable(String)) }
|
|
816
|
+
attr_reader :within_time
|
|
817
|
+
|
|
818
|
+
sig { params(within_time: String).void }
|
|
819
|
+
attr_writer :within_time
|
|
820
|
+
|
|
325
821
|
sig do
|
|
326
822
|
params(
|
|
327
823
|
tool_type: XTwitterScraper::ExtractionRunParams::ToolType::OrSymbol,
|
|
824
|
+
dry_run: T::Boolean,
|
|
328
825
|
advanced_query: String,
|
|
329
826
|
any_words: String,
|
|
827
|
+
bio_contains: String,
|
|
828
|
+
blue_verified_only: T::Boolean,
|
|
330
829
|
bounding_box: String,
|
|
830
|
+
card_name: String,
|
|
331
831
|
cashtags: String,
|
|
832
|
+
collection_strategy:
|
|
833
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::OrSymbol,
|
|
332
834
|
conversation_id: String,
|
|
835
|
+
dedupe_across_targets: T::Boolean,
|
|
836
|
+
dedupe_mode:
|
|
837
|
+
XTwitterScraper::ExtractionRunParams::DedupeMode::OrSymbol,
|
|
333
838
|
exact_phrase: String,
|
|
839
|
+
exclude_original_author: T::Boolean,
|
|
840
|
+
exclude_source: String,
|
|
334
841
|
exclude_words: String,
|
|
335
842
|
from_user: String,
|
|
843
|
+
geocode: String,
|
|
336
844
|
hashtags: String,
|
|
845
|
+
has_location: T::Boolean,
|
|
846
|
+
has_media_only: T::Boolean,
|
|
847
|
+
has_website: T::Boolean,
|
|
848
|
+
include_original_post: T::Boolean,
|
|
849
|
+
include_search_terms: T::Boolean,
|
|
850
|
+
include_target_metadata: T::Boolean,
|
|
337
851
|
in_reply_to_tweet_id: String,
|
|
338
852
|
language: String,
|
|
339
853
|
list_id: String,
|
|
854
|
+
location_contains: String,
|
|
855
|
+
max_depth: Integer,
|
|
856
|
+
max_followers: Integer,
|
|
857
|
+
max_following: Integer,
|
|
858
|
+
max_id: String,
|
|
859
|
+
max_items_per_target: Integer,
|
|
860
|
+
max_likes: Integer,
|
|
861
|
+
max_pages_per_target: Integer,
|
|
862
|
+
max_posts: Integer,
|
|
863
|
+
max_quotes: Integer,
|
|
864
|
+
max_replies: Integer,
|
|
865
|
+
max_retweets: Integer,
|
|
340
866
|
media_type: XTwitterScraper::ExtractionRunParams::MediaType::OrSymbol,
|
|
341
867
|
mentioning: String,
|
|
868
|
+
min_account_age_days: Integer,
|
|
869
|
+
min_bookmarks: Integer,
|
|
342
870
|
min_faves: Integer,
|
|
871
|
+
min_followers: Integer,
|
|
872
|
+
min_following: Integer,
|
|
873
|
+
min_posts: Integer,
|
|
343
874
|
min_quotes: Integer,
|
|
344
875
|
min_replies: Integer,
|
|
345
876
|
min_retweets: Integer,
|
|
877
|
+
min_views: Integer,
|
|
878
|
+
native_retweets: T::Boolean,
|
|
879
|
+
near: String,
|
|
880
|
+
news: T::Boolean,
|
|
881
|
+
overlap_mode: T::Boolean,
|
|
346
882
|
place: String,
|
|
347
883
|
place_country: String,
|
|
348
884
|
point_radius: String,
|
|
885
|
+
query_type: XTwitterScraper::ExtractionRunParams::QueryType::OrSymbol,
|
|
349
886
|
quotes: XTwitterScraper::ExtractionRunParams::Quotes::OrSymbol,
|
|
350
887
|
quotes_of_tweet_id: String,
|
|
888
|
+
relation_targets:
|
|
889
|
+
T::Array[
|
|
890
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::OrHash
|
|
891
|
+
],
|
|
351
892
|
replies: XTwitterScraper::ExtractionRunParams::Replies::OrSymbol,
|
|
352
893
|
results_limit: Integer,
|
|
353
894
|
retweets: XTwitterScraper::ExtractionRunParams::Retweets::OrSymbol,
|
|
354
895
|
retweets_of_tweet_id: String,
|
|
896
|
+
safe: T::Boolean,
|
|
897
|
+
scope: XTwitterScraper::ExtractionRunParams::Scope::OrSymbol,
|
|
898
|
+
search_queries: T::Array[String],
|
|
355
899
|
search_query: String,
|
|
356
900
|
since_date: Date,
|
|
901
|
+
since_id: String,
|
|
902
|
+
since_time: XTwitterScraper::ExtractionRunParams::SinceTime::Variants,
|
|
903
|
+
sort: XTwitterScraper::ExtractionRunParams::Sort::OrSymbol,
|
|
904
|
+
source: String,
|
|
905
|
+
start_cursor: String,
|
|
357
906
|
target_community_id: String,
|
|
907
|
+
target_community_ids: T::Array[String],
|
|
358
908
|
target_list_id: String,
|
|
909
|
+
target_list_ids: T::Array[String],
|
|
910
|
+
targets:
|
|
911
|
+
T::Array[
|
|
912
|
+
T.any(
|
|
913
|
+
String,
|
|
914
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::OrHash
|
|
915
|
+
)
|
|
916
|
+
],
|
|
359
917
|
target_space_id: String,
|
|
360
918
|
target_tweet_id: String,
|
|
919
|
+
target_tweet_ids: T::Array[String],
|
|
361
920
|
target_username: String,
|
|
921
|
+
target_usernames: T::Array[String],
|
|
362
922
|
to_user: String,
|
|
363
923
|
until_date: Date,
|
|
924
|
+
until_time: XTwitterScraper::ExtractionRunParams::UntilTime::Variants,
|
|
364
925
|
url: String,
|
|
926
|
+
username_contains: String,
|
|
365
927
|
verified_only: T::Boolean,
|
|
928
|
+
verified_type: String,
|
|
929
|
+
within: String,
|
|
930
|
+
within_time: String,
|
|
366
931
|
request_options: XTwitterScraper::RequestOptions::OrHash
|
|
367
932
|
).returns(T.attached_class)
|
|
368
933
|
end
|
|
369
934
|
def self.new(
|
|
370
935
|
# Identifier for the extraction tool used to run a job.
|
|
371
936
|
tool_type:,
|
|
937
|
+
# Estimate cost without creating an extraction.
|
|
938
|
+
dry_run: nil,
|
|
372
939
|
# Raw advanced search query appended as-is (tweet_search_extractor)
|
|
373
940
|
advanced_query: nil,
|
|
374
941
|
# Words or quoted phrases where any one can match. Separate with spaces, commas,
|
|
375
942
|
# or lines. (tweet_search_extractor)
|
|
376
943
|
any_words: nil,
|
|
944
|
+
# Bio terms separated by commas or lines.
|
|
945
|
+
bio_contains: nil,
|
|
946
|
+
# Return only Blue-verified Tweet authors.
|
|
947
|
+
blue_verified_only: nil,
|
|
377
948
|
# Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
|
|
378
949
|
bounding_box: nil,
|
|
950
|
+
# Match the Tweet card name.
|
|
951
|
+
card_name: nil,
|
|
379
952
|
# Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
|
|
380
953
|
cashtags: nil,
|
|
954
|
+
# Reply collection strategy.
|
|
955
|
+
collection_strategy: nil,
|
|
381
956
|
# Conversation ID filter (tweet_search_extractor)
|
|
382
957
|
conversation_id: nil,
|
|
958
|
+
# Merge duplicate results across collection targets.
|
|
959
|
+
dedupe_across_targets: nil,
|
|
960
|
+
# Keep target duplicates, first rows, or merged overlap.
|
|
961
|
+
dedupe_mode: nil,
|
|
383
962
|
# Exact phrase to match (tweet_search_extractor)
|
|
384
963
|
exact_phrase: nil,
|
|
964
|
+
# Exclude replies from the source author.
|
|
965
|
+
exclude_original_author: nil,
|
|
966
|
+
# Exclude a source application.
|
|
967
|
+
exclude_source: nil,
|
|
385
968
|
# Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
|
|
386
969
|
# (tweet_search_extractor)
|
|
387
970
|
exclude_words: nil,
|
|
388
971
|
# Filter by author username (tweet_search_extractor)
|
|
389
972
|
from_user: nil,
|
|
973
|
+
# Match latitude, longitude, and radius.
|
|
974
|
+
geocode: nil,
|
|
390
975
|
# Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
|
|
391
976
|
hashtags: nil,
|
|
977
|
+
# Require a profile location.
|
|
978
|
+
has_location: nil,
|
|
979
|
+
# Return only replies with media.
|
|
980
|
+
has_media_only: nil,
|
|
981
|
+
# Require a profile website.
|
|
982
|
+
has_website: nil,
|
|
983
|
+
# Include the source post in reply results.
|
|
984
|
+
include_original_post: nil,
|
|
985
|
+
# Add matching search terms to collection metadata.
|
|
986
|
+
include_search_terms: nil,
|
|
987
|
+
# Add source target metadata to each result.
|
|
988
|
+
include_target_metadata: nil,
|
|
392
989
|
# Only replies to this tweet ID (tweet_search_extractor)
|
|
393
990
|
in_reply_to_tweet_id: nil,
|
|
394
991
|
# Language code filter (tweet_search_extractor)
|
|
395
992
|
language: nil,
|
|
396
993
|
# Search within a list ID (tweet_search_extractor)
|
|
397
994
|
list_id: nil,
|
|
995
|
+
# Required profile location text.
|
|
996
|
+
location_contains: nil,
|
|
997
|
+
# Maximum nested reply depth.
|
|
998
|
+
max_depth: nil,
|
|
999
|
+
# Maximum follower count for profile results.
|
|
1000
|
+
max_followers: nil,
|
|
1001
|
+
# Maximum following count for profile results.
|
|
1002
|
+
max_following: nil,
|
|
1003
|
+
# Return Tweets older than this Tweet ID.
|
|
1004
|
+
max_id: nil,
|
|
1005
|
+
# Maximum results collected for each target.
|
|
1006
|
+
max_items_per_target: nil,
|
|
1007
|
+
# Maximum Tweet like count.
|
|
1008
|
+
max_likes: nil,
|
|
1009
|
+
# Reply pages collected for each target.
|
|
1010
|
+
max_pages_per_target: nil,
|
|
1011
|
+
# Maximum post count for profile results.
|
|
1012
|
+
max_posts: nil,
|
|
1013
|
+
# Maximum Tweet quote count.
|
|
1014
|
+
max_quotes: nil,
|
|
1015
|
+
# Maximum Tweet reply count.
|
|
1016
|
+
max_replies: nil,
|
|
1017
|
+
# Maximum Tweet repost count.
|
|
1018
|
+
max_retweets: nil,
|
|
398
1019
|
# Media type filter (tweet_search_extractor)
|
|
399
1020
|
media_type: nil,
|
|
400
1021
|
# Filter tweets mentioning a username (tweet_search_extractor)
|
|
401
1022
|
mentioning: nil,
|
|
1023
|
+
# Minimum profile age in days.
|
|
1024
|
+
min_account_age_days: nil,
|
|
1025
|
+
# Minimum Tweet bookmark count.
|
|
1026
|
+
min_bookmarks: nil,
|
|
402
1027
|
# Minimum likes threshold (tweet_search_extractor)
|
|
403
1028
|
min_faves: nil,
|
|
1029
|
+
# Minimum follower count for profile results.
|
|
1030
|
+
min_followers: nil,
|
|
1031
|
+
# Minimum following count for profile results.
|
|
1032
|
+
min_following: nil,
|
|
1033
|
+
# Minimum post count for profile results.
|
|
1034
|
+
min_posts: nil,
|
|
404
1035
|
# Minimum quote count threshold (tweet_search_extractor)
|
|
405
1036
|
min_quotes: nil,
|
|
406
1037
|
# Minimum replies threshold (tweet_search_extractor)
|
|
407
1038
|
min_replies: nil,
|
|
408
1039
|
# Minimum retweets threshold (tweet_search_extractor)
|
|
409
1040
|
min_retweets: nil,
|
|
1041
|
+
# Minimum Tweet view count.
|
|
1042
|
+
min_views: nil,
|
|
1043
|
+
# Only return native reposts.
|
|
1044
|
+
native_retweets: nil,
|
|
1045
|
+
# Match a place name.
|
|
1046
|
+
near: nil,
|
|
1047
|
+
# Only return news results.
|
|
1048
|
+
news: nil,
|
|
1049
|
+
# Shortcut for dedupeMode=merge.
|
|
1050
|
+
overlap_mode: nil,
|
|
410
1051
|
# Search within a place ID (tweet_search_extractor)
|
|
411
1052
|
place: nil,
|
|
412
1053
|
# Search within a country code (tweet_search_extractor)
|
|
413
1054
|
place_country: nil,
|
|
414
1055
|
# Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
|
|
415
1056
|
point_radius: nil,
|
|
1057
|
+
# Search ranking applied to every query.
|
|
1058
|
+
query_type: nil,
|
|
416
1059
|
# Quote mode (tweet_search_extractor)
|
|
417
1060
|
quotes: nil,
|
|
418
1061
|
# Only quotes of this tweet ID (tweet_search_extractor)
|
|
419
1062
|
quotes_of_tweet_id: nil,
|
|
1063
|
+
# Profile relations processed within one job.
|
|
1064
|
+
relation_targets: nil,
|
|
420
1065
|
# Reply mode (tweet_search_extractor)
|
|
421
1066
|
replies: nil,
|
|
422
1067
|
# Maximum number of results to extract. When set, the extraction stops after
|
|
@@ -426,27 +1071,63 @@ module XTwitterScraper
|
|
|
426
1071
|
retweets: nil,
|
|
427
1072
|
# Only retweets of this tweet ID (tweet_search_extractor)
|
|
428
1073
|
retweets_of_tweet_id: nil,
|
|
1074
|
+
# Enable the safe-search filter.
|
|
1075
|
+
safe: nil,
|
|
1076
|
+
# Reply depth scope.
|
|
1077
|
+
scope: nil,
|
|
1078
|
+
# Search queries processed as one collection job.
|
|
1079
|
+
search_queries: nil,
|
|
429
1080
|
# Required for tweet_search_extractor & community_search.
|
|
430
1081
|
search_query: nil,
|
|
431
1082
|
# Start date YYYY-MM-DD (tweet_search_extractor)
|
|
432
1083
|
since_date: nil,
|
|
1084
|
+
# Return Tweets newer than this Tweet ID.
|
|
1085
|
+
since_id: nil,
|
|
1086
|
+
# Reply start time as ISO 8601 or Unix seconds.
|
|
1087
|
+
since_time: nil,
|
|
1088
|
+
# Reply result order.
|
|
1089
|
+
sort: nil,
|
|
1090
|
+
# Match the source application.
|
|
1091
|
+
source: nil,
|
|
1092
|
+
# Resume one reply target from this cursor.
|
|
1093
|
+
start_cursor: nil,
|
|
433
1094
|
# Required for community_post_extractor & community_search.
|
|
434
1095
|
target_community_id: nil,
|
|
1096
|
+
# Community IDs processed as one collection job.
|
|
1097
|
+
target_community_ids: nil,
|
|
435
1098
|
# Required for list_follower_explorer, list_member_extractor &
|
|
436
1099
|
# list_post_extractor.
|
|
437
1100
|
target_list_id: nil,
|
|
1101
|
+
# List IDs processed as one collection job.
|
|
1102
|
+
target_list_ids: nil,
|
|
1103
|
+
# Mixed targets auto-routed within one job.
|
|
1104
|
+
targets: nil,
|
|
438
1105
|
# Required for space_explorer.
|
|
439
1106
|
target_space_id: nil,
|
|
440
1107
|
target_tweet_id: nil,
|
|
1108
|
+
# Tweet IDs processed as one collection job.
|
|
1109
|
+
target_tweet_ids: nil,
|
|
441
1110
|
target_username: nil,
|
|
1111
|
+
# Usernames processed as one collection job.
|
|
1112
|
+
target_usernames: nil,
|
|
442
1113
|
# Filter replies sent to a username (tweet_search_extractor)
|
|
443
1114
|
to_user: nil,
|
|
444
1115
|
# End date YYYY-MM-DD (tweet_search_extractor)
|
|
445
1116
|
until_date: nil,
|
|
1117
|
+
# Reply end time as ISO 8601 or Unix seconds.
|
|
1118
|
+
until_time: nil,
|
|
446
1119
|
# URL substring or domain filter (tweet_search_extractor)
|
|
447
1120
|
url: nil,
|
|
1121
|
+
# Required username text.
|
|
1122
|
+
username_contains: nil,
|
|
448
1123
|
# Only verified authors (tweet_search_extractor)
|
|
449
1124
|
verified_only: nil,
|
|
1125
|
+
# Exact profile verification type.
|
|
1126
|
+
verified_type: nil,
|
|
1127
|
+
# Set the radius for the near filter.
|
|
1128
|
+
within: nil,
|
|
1129
|
+
# Match Tweets inside a recent time window.
|
|
1130
|
+
within_time: nil,
|
|
450
1131
|
request_options: {}
|
|
451
1132
|
)
|
|
452
1133
|
end
|
|
@@ -455,45 +1136,115 @@ module XTwitterScraper
|
|
|
455
1136
|
override.returns(
|
|
456
1137
|
{
|
|
457
1138
|
tool_type: XTwitterScraper::ExtractionRunParams::ToolType::OrSymbol,
|
|
1139
|
+
dry_run: T::Boolean,
|
|
458
1140
|
advanced_query: String,
|
|
459
1141
|
any_words: String,
|
|
1142
|
+
bio_contains: String,
|
|
1143
|
+
blue_verified_only: T::Boolean,
|
|
460
1144
|
bounding_box: String,
|
|
1145
|
+
card_name: String,
|
|
461
1146
|
cashtags: String,
|
|
1147
|
+
collection_strategy:
|
|
1148
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::OrSymbol,
|
|
462
1149
|
conversation_id: String,
|
|
1150
|
+
dedupe_across_targets: T::Boolean,
|
|
1151
|
+
dedupe_mode:
|
|
1152
|
+
XTwitterScraper::ExtractionRunParams::DedupeMode::OrSymbol,
|
|
463
1153
|
exact_phrase: String,
|
|
1154
|
+
exclude_original_author: T::Boolean,
|
|
1155
|
+
exclude_source: String,
|
|
464
1156
|
exclude_words: String,
|
|
465
1157
|
from_user: String,
|
|
1158
|
+
geocode: String,
|
|
466
1159
|
hashtags: String,
|
|
1160
|
+
has_location: T::Boolean,
|
|
1161
|
+
has_media_only: T::Boolean,
|
|
1162
|
+
has_website: T::Boolean,
|
|
1163
|
+
include_original_post: T::Boolean,
|
|
1164
|
+
include_search_terms: T::Boolean,
|
|
1165
|
+
include_target_metadata: T::Boolean,
|
|
467
1166
|
in_reply_to_tweet_id: String,
|
|
468
1167
|
language: String,
|
|
469
1168
|
list_id: String,
|
|
1169
|
+
location_contains: String,
|
|
1170
|
+
max_depth: Integer,
|
|
1171
|
+
max_followers: Integer,
|
|
1172
|
+
max_following: Integer,
|
|
1173
|
+
max_id: String,
|
|
1174
|
+
max_items_per_target: Integer,
|
|
1175
|
+
max_likes: Integer,
|
|
1176
|
+
max_pages_per_target: Integer,
|
|
1177
|
+
max_posts: Integer,
|
|
1178
|
+
max_quotes: Integer,
|
|
1179
|
+
max_replies: Integer,
|
|
1180
|
+
max_retweets: Integer,
|
|
470
1181
|
media_type:
|
|
471
1182
|
XTwitterScraper::ExtractionRunParams::MediaType::OrSymbol,
|
|
472
1183
|
mentioning: String,
|
|
1184
|
+
min_account_age_days: Integer,
|
|
1185
|
+
min_bookmarks: Integer,
|
|
473
1186
|
min_faves: Integer,
|
|
1187
|
+
min_followers: Integer,
|
|
1188
|
+
min_following: Integer,
|
|
1189
|
+
min_posts: Integer,
|
|
474
1190
|
min_quotes: Integer,
|
|
475
1191
|
min_replies: Integer,
|
|
476
1192
|
min_retweets: Integer,
|
|
1193
|
+
min_views: Integer,
|
|
1194
|
+
native_retweets: T::Boolean,
|
|
1195
|
+
near: String,
|
|
1196
|
+
news: T::Boolean,
|
|
1197
|
+
overlap_mode: T::Boolean,
|
|
477
1198
|
place: String,
|
|
478
1199
|
place_country: String,
|
|
479
1200
|
point_radius: String,
|
|
1201
|
+
query_type:
|
|
1202
|
+
XTwitterScraper::ExtractionRunParams::QueryType::OrSymbol,
|
|
480
1203
|
quotes: XTwitterScraper::ExtractionRunParams::Quotes::OrSymbol,
|
|
481
1204
|
quotes_of_tweet_id: String,
|
|
1205
|
+
relation_targets:
|
|
1206
|
+
T::Array[XTwitterScraper::ExtractionRunParams::RelationTarget],
|
|
482
1207
|
replies: XTwitterScraper::ExtractionRunParams::Replies::OrSymbol,
|
|
483
1208
|
results_limit: Integer,
|
|
484
1209
|
retweets: XTwitterScraper::ExtractionRunParams::Retweets::OrSymbol,
|
|
485
1210
|
retweets_of_tweet_id: String,
|
|
1211
|
+
safe: T::Boolean,
|
|
1212
|
+
scope: XTwitterScraper::ExtractionRunParams::Scope::OrSymbol,
|
|
1213
|
+
search_queries: T::Array[String],
|
|
486
1214
|
search_query: String,
|
|
487
1215
|
since_date: Date,
|
|
1216
|
+
since_id: String,
|
|
1217
|
+
since_time:
|
|
1218
|
+
XTwitterScraper::ExtractionRunParams::SinceTime::Variants,
|
|
1219
|
+
sort: XTwitterScraper::ExtractionRunParams::Sort::OrSymbol,
|
|
1220
|
+
source: String,
|
|
1221
|
+
start_cursor: String,
|
|
488
1222
|
target_community_id: String,
|
|
1223
|
+
target_community_ids: T::Array[String],
|
|
489
1224
|
target_list_id: String,
|
|
1225
|
+
target_list_ids: T::Array[String],
|
|
1226
|
+
targets:
|
|
1227
|
+
T::Array[
|
|
1228
|
+
T.any(
|
|
1229
|
+
String,
|
|
1230
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1
|
|
1231
|
+
)
|
|
1232
|
+
],
|
|
490
1233
|
target_space_id: String,
|
|
491
1234
|
target_tweet_id: String,
|
|
1235
|
+
target_tweet_ids: T::Array[String],
|
|
492
1236
|
target_username: String,
|
|
1237
|
+
target_usernames: T::Array[String],
|
|
493
1238
|
to_user: String,
|
|
494
1239
|
until_date: Date,
|
|
1240
|
+
until_time:
|
|
1241
|
+
XTwitterScraper::ExtractionRunParams::UntilTime::Variants,
|
|
495
1242
|
url: String,
|
|
1243
|
+
username_contains: String,
|
|
496
1244
|
verified_only: T::Boolean,
|
|
1245
|
+
verified_type: String,
|
|
1246
|
+
within: String,
|
|
1247
|
+
within_time: String,
|
|
497
1248
|
request_options: XTwitterScraper::RequestOptions
|
|
498
1249
|
}
|
|
499
1250
|
)
|
|
@@ -638,6 +1389,93 @@ module XTwitterScraper
|
|
|
638
1389
|
end
|
|
639
1390
|
end
|
|
640
1391
|
|
|
1392
|
+
# Reply collection strategy.
|
|
1393
|
+
module CollectionStrategy
|
|
1394
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1395
|
+
|
|
1396
|
+
TaggedSymbol =
|
|
1397
|
+
T.type_alias do
|
|
1398
|
+
T.all(
|
|
1399
|
+
Symbol,
|
|
1400
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy
|
|
1401
|
+
)
|
|
1402
|
+
end
|
|
1403
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1404
|
+
|
|
1405
|
+
AUTO =
|
|
1406
|
+
T.let(
|
|
1407
|
+
:auto,
|
|
1408
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::TaggedSymbol
|
|
1409
|
+
)
|
|
1410
|
+
COMPLETE =
|
|
1411
|
+
T.let(
|
|
1412
|
+
:complete,
|
|
1413
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::TaggedSymbol
|
|
1414
|
+
)
|
|
1415
|
+
DIRECT =
|
|
1416
|
+
T.let(
|
|
1417
|
+
:direct,
|
|
1418
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::TaggedSymbol
|
|
1419
|
+
)
|
|
1420
|
+
SEARCH =
|
|
1421
|
+
T.let(
|
|
1422
|
+
:search,
|
|
1423
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::TaggedSymbol
|
|
1424
|
+
)
|
|
1425
|
+
THREAD =
|
|
1426
|
+
T.let(
|
|
1427
|
+
:thread,
|
|
1428
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::TaggedSymbol
|
|
1429
|
+
)
|
|
1430
|
+
|
|
1431
|
+
sig do
|
|
1432
|
+
override.returns(
|
|
1433
|
+
T::Array[
|
|
1434
|
+
XTwitterScraper::ExtractionRunParams::CollectionStrategy::TaggedSymbol
|
|
1435
|
+
]
|
|
1436
|
+
)
|
|
1437
|
+
end
|
|
1438
|
+
def self.values
|
|
1439
|
+
end
|
|
1440
|
+
end
|
|
1441
|
+
|
|
1442
|
+
# Keep target duplicates, first rows, or merged overlap.
|
|
1443
|
+
module DedupeMode
|
|
1444
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1445
|
+
|
|
1446
|
+
TaggedSymbol =
|
|
1447
|
+
T.type_alias do
|
|
1448
|
+
T.all(Symbol, XTwitterScraper::ExtractionRunParams::DedupeMode)
|
|
1449
|
+
end
|
|
1450
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1451
|
+
|
|
1452
|
+
NONE =
|
|
1453
|
+
T.let(
|
|
1454
|
+
:none,
|
|
1455
|
+
XTwitterScraper::ExtractionRunParams::DedupeMode::TaggedSymbol
|
|
1456
|
+
)
|
|
1457
|
+
FIRST =
|
|
1458
|
+
T.let(
|
|
1459
|
+
:first,
|
|
1460
|
+
XTwitterScraper::ExtractionRunParams::DedupeMode::TaggedSymbol
|
|
1461
|
+
)
|
|
1462
|
+
MERGE =
|
|
1463
|
+
T.let(
|
|
1464
|
+
:merge,
|
|
1465
|
+
XTwitterScraper::ExtractionRunParams::DedupeMode::TaggedSymbol
|
|
1466
|
+
)
|
|
1467
|
+
|
|
1468
|
+
sig do
|
|
1469
|
+
override.returns(
|
|
1470
|
+
T::Array[
|
|
1471
|
+
XTwitterScraper::ExtractionRunParams::DedupeMode::TaggedSymbol
|
|
1472
|
+
]
|
|
1473
|
+
)
|
|
1474
|
+
end
|
|
1475
|
+
def self.values
|
|
1476
|
+
end
|
|
1477
|
+
end
|
|
1478
|
+
|
|
641
1479
|
# Media type filter (tweet_search_extractor)
|
|
642
1480
|
module MediaType
|
|
643
1481
|
extend XTwitterScraper::Internal::Type::Enum
|
|
@@ -690,6 +1528,43 @@ module XTwitterScraper
|
|
|
690
1528
|
end
|
|
691
1529
|
end
|
|
692
1530
|
|
|
1531
|
+
# Search ranking applied to every query.
|
|
1532
|
+
module QueryType
|
|
1533
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1534
|
+
|
|
1535
|
+
TaggedSymbol =
|
|
1536
|
+
T.type_alias do
|
|
1537
|
+
T.all(Symbol, XTwitterScraper::ExtractionRunParams::QueryType)
|
|
1538
|
+
end
|
|
1539
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1540
|
+
|
|
1541
|
+
LATEST =
|
|
1542
|
+
T.let(
|
|
1543
|
+
:Latest,
|
|
1544
|
+
XTwitterScraper::ExtractionRunParams::QueryType::TaggedSymbol
|
|
1545
|
+
)
|
|
1546
|
+
TOP =
|
|
1547
|
+
T.let(
|
|
1548
|
+
:Top,
|
|
1549
|
+
XTwitterScraper::ExtractionRunParams::QueryType::TaggedSymbol
|
|
1550
|
+
)
|
|
1551
|
+
BOTH =
|
|
1552
|
+
T.let(
|
|
1553
|
+
:Both,
|
|
1554
|
+
XTwitterScraper::ExtractionRunParams::QueryType::TaggedSymbol
|
|
1555
|
+
)
|
|
1556
|
+
|
|
1557
|
+
sig do
|
|
1558
|
+
override.returns(
|
|
1559
|
+
T::Array[
|
|
1560
|
+
XTwitterScraper::ExtractionRunParams::QueryType::TaggedSymbol
|
|
1561
|
+
]
|
|
1562
|
+
)
|
|
1563
|
+
end
|
|
1564
|
+
def self.values
|
|
1565
|
+
end
|
|
1566
|
+
end
|
|
1567
|
+
|
|
693
1568
|
# Quote mode (tweet_search_extractor)
|
|
694
1569
|
module Quotes
|
|
695
1570
|
extend XTwitterScraper::Internal::Type::Enum
|
|
@@ -725,6 +1600,103 @@ module XTwitterScraper
|
|
|
725
1600
|
end
|
|
726
1601
|
end
|
|
727
1602
|
|
|
1603
|
+
class RelationTarget < XTwitterScraper::Internal::Type::BaseModel
|
|
1604
|
+
OrHash =
|
|
1605
|
+
T.type_alias do
|
|
1606
|
+
T.any(
|
|
1607
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget,
|
|
1608
|
+
XTwitterScraper::Internal::AnyHash
|
|
1609
|
+
)
|
|
1610
|
+
end
|
|
1611
|
+
|
|
1612
|
+
sig do
|
|
1613
|
+
returns(
|
|
1614
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::OrSymbol
|
|
1615
|
+
)
|
|
1616
|
+
end
|
|
1617
|
+
attr_accessor :relation
|
|
1618
|
+
|
|
1619
|
+
sig { returns(String) }
|
|
1620
|
+
attr_accessor :value
|
|
1621
|
+
|
|
1622
|
+
# One target and relation in a mixed profile collection.
|
|
1623
|
+
sig do
|
|
1624
|
+
params(
|
|
1625
|
+
relation:
|
|
1626
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::OrSymbol,
|
|
1627
|
+
value: String
|
|
1628
|
+
).returns(T.attached_class)
|
|
1629
|
+
end
|
|
1630
|
+
def self.new(relation:, value:)
|
|
1631
|
+
end
|
|
1632
|
+
|
|
1633
|
+
sig do
|
|
1634
|
+
override.returns(
|
|
1635
|
+
{
|
|
1636
|
+
relation:
|
|
1637
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::OrSymbol,
|
|
1638
|
+
value: String
|
|
1639
|
+
}
|
|
1640
|
+
)
|
|
1641
|
+
end
|
|
1642
|
+
def to_hash
|
|
1643
|
+
end
|
|
1644
|
+
|
|
1645
|
+
module Relation
|
|
1646
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1647
|
+
|
|
1648
|
+
TaggedSymbol =
|
|
1649
|
+
T.type_alias do
|
|
1650
|
+
T.all(
|
|
1651
|
+
Symbol,
|
|
1652
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation
|
|
1653
|
+
)
|
|
1654
|
+
end
|
|
1655
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1656
|
+
|
|
1657
|
+
COMMUNITY_MEMBERS =
|
|
1658
|
+
T.let(
|
|
1659
|
+
:community_members,
|
|
1660
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::TaggedSymbol
|
|
1661
|
+
)
|
|
1662
|
+
FOLLOWERS =
|
|
1663
|
+
T.let(
|
|
1664
|
+
:followers,
|
|
1665
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::TaggedSymbol
|
|
1666
|
+
)
|
|
1667
|
+
FOLLOWING =
|
|
1668
|
+
T.let(
|
|
1669
|
+
:following,
|
|
1670
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::TaggedSymbol
|
|
1671
|
+
)
|
|
1672
|
+
LIST_FOLLOWERS =
|
|
1673
|
+
T.let(
|
|
1674
|
+
:list_followers,
|
|
1675
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::TaggedSymbol
|
|
1676
|
+
)
|
|
1677
|
+
LIST_MEMBERS =
|
|
1678
|
+
T.let(
|
|
1679
|
+
:list_members,
|
|
1680
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::TaggedSymbol
|
|
1681
|
+
)
|
|
1682
|
+
VERIFIED_FOLLOWERS =
|
|
1683
|
+
T.let(
|
|
1684
|
+
:verified_followers,
|
|
1685
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::TaggedSymbol
|
|
1686
|
+
)
|
|
1687
|
+
|
|
1688
|
+
sig do
|
|
1689
|
+
override.returns(
|
|
1690
|
+
T::Array[
|
|
1691
|
+
XTwitterScraper::ExtractionRunParams::RelationTarget::Relation::TaggedSymbol
|
|
1692
|
+
]
|
|
1693
|
+
)
|
|
1694
|
+
end
|
|
1695
|
+
def self.values
|
|
1696
|
+
end
|
|
1697
|
+
end
|
|
1698
|
+
end
|
|
1699
|
+
|
|
728
1700
|
# Reply mode (tweet_search_extractor)
|
|
729
1701
|
module Replies
|
|
730
1702
|
extend XTwitterScraper::Internal::Type::Enum
|
|
@@ -798,6 +1770,255 @@ module XTwitterScraper
|
|
|
798
1770
|
def self.values
|
|
799
1771
|
end
|
|
800
1772
|
end
|
|
1773
|
+
|
|
1774
|
+
# Reply depth scope.
|
|
1775
|
+
module Scope
|
|
1776
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1777
|
+
|
|
1778
|
+
TaggedSymbol =
|
|
1779
|
+
T.type_alias do
|
|
1780
|
+
T.all(Symbol, XTwitterScraper::ExtractionRunParams::Scope)
|
|
1781
|
+
end
|
|
1782
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1783
|
+
|
|
1784
|
+
ALL =
|
|
1785
|
+
T.let(:all, XTwitterScraper::ExtractionRunParams::Scope::TaggedSymbol)
|
|
1786
|
+
DIRECT =
|
|
1787
|
+
T.let(
|
|
1788
|
+
:direct,
|
|
1789
|
+
XTwitterScraper::ExtractionRunParams::Scope::TaggedSymbol
|
|
1790
|
+
)
|
|
1791
|
+
NESTED =
|
|
1792
|
+
T.let(
|
|
1793
|
+
:nested,
|
|
1794
|
+
XTwitterScraper::ExtractionRunParams::Scope::TaggedSymbol
|
|
1795
|
+
)
|
|
1796
|
+
|
|
1797
|
+
sig do
|
|
1798
|
+
override.returns(
|
|
1799
|
+
T::Array[XTwitterScraper::ExtractionRunParams::Scope::TaggedSymbol]
|
|
1800
|
+
)
|
|
1801
|
+
end
|
|
1802
|
+
def self.values
|
|
1803
|
+
end
|
|
1804
|
+
end
|
|
1805
|
+
|
|
1806
|
+
# Reply start time as ISO 8601 or Unix seconds.
|
|
1807
|
+
module SinceTime
|
|
1808
|
+
extend XTwitterScraper::Internal::Type::Union
|
|
1809
|
+
|
|
1810
|
+
Variants = T.type_alias { T.any(Time, Integer) }
|
|
1811
|
+
|
|
1812
|
+
sig do
|
|
1813
|
+
override.returns(
|
|
1814
|
+
T::Array[XTwitterScraper::ExtractionRunParams::SinceTime::Variants]
|
|
1815
|
+
)
|
|
1816
|
+
end
|
|
1817
|
+
def self.variants
|
|
1818
|
+
end
|
|
1819
|
+
end
|
|
1820
|
+
|
|
1821
|
+
# Reply result order.
|
|
1822
|
+
module Sort
|
|
1823
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1824
|
+
|
|
1825
|
+
TaggedSymbol =
|
|
1826
|
+
T.type_alias do
|
|
1827
|
+
T.all(Symbol, XTwitterScraper::ExtractionRunParams::Sort)
|
|
1828
|
+
end
|
|
1829
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1830
|
+
|
|
1831
|
+
RELEVANCE =
|
|
1832
|
+
T.let(
|
|
1833
|
+
:relevance,
|
|
1834
|
+
XTwitterScraper::ExtractionRunParams::Sort::TaggedSymbol
|
|
1835
|
+
)
|
|
1836
|
+
LATEST =
|
|
1837
|
+
T.let(
|
|
1838
|
+
:latest,
|
|
1839
|
+
XTwitterScraper::ExtractionRunParams::Sort::TaggedSymbol
|
|
1840
|
+
)
|
|
1841
|
+
OLDEST =
|
|
1842
|
+
T.let(
|
|
1843
|
+
:oldest,
|
|
1844
|
+
XTwitterScraper::ExtractionRunParams::Sort::TaggedSymbol
|
|
1845
|
+
)
|
|
1846
|
+
LIKES =
|
|
1847
|
+
T.let(
|
|
1848
|
+
:likes,
|
|
1849
|
+
XTwitterScraper::ExtractionRunParams::Sort::TaggedSymbol
|
|
1850
|
+
)
|
|
1851
|
+
|
|
1852
|
+
sig do
|
|
1853
|
+
override.returns(
|
|
1854
|
+
T::Array[XTwitterScraper::ExtractionRunParams::Sort::TaggedSymbol]
|
|
1855
|
+
)
|
|
1856
|
+
end
|
|
1857
|
+
def self.values
|
|
1858
|
+
end
|
|
1859
|
+
end
|
|
1860
|
+
|
|
1861
|
+
# One auto-routed target in a mixed Tweet collection.
|
|
1862
|
+
module Target
|
|
1863
|
+
extend XTwitterScraper::Internal::Type::Union
|
|
1864
|
+
|
|
1865
|
+
Variants =
|
|
1866
|
+
T.type_alias do
|
|
1867
|
+
T.any(
|
|
1868
|
+
String,
|
|
1869
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1
|
|
1870
|
+
)
|
|
1871
|
+
end
|
|
1872
|
+
|
|
1873
|
+
class UnionMember1 < XTwitterScraper::Internal::Type::BaseModel
|
|
1874
|
+
OrHash =
|
|
1875
|
+
T.type_alias do
|
|
1876
|
+
T.any(
|
|
1877
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1,
|
|
1878
|
+
XTwitterScraper::Internal::AnyHash
|
|
1879
|
+
)
|
|
1880
|
+
end
|
|
1881
|
+
|
|
1882
|
+
sig do
|
|
1883
|
+
returns(
|
|
1884
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::OrSymbol
|
|
1885
|
+
)
|
|
1886
|
+
end
|
|
1887
|
+
attr_accessor :kind
|
|
1888
|
+
|
|
1889
|
+
sig { returns(String) }
|
|
1890
|
+
attr_accessor :value
|
|
1891
|
+
|
|
1892
|
+
sig do
|
|
1893
|
+
params(
|
|
1894
|
+
kind:
|
|
1895
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::OrSymbol,
|
|
1896
|
+
value: String
|
|
1897
|
+
).returns(T.attached_class)
|
|
1898
|
+
end
|
|
1899
|
+
def self.new(kind:, value:)
|
|
1900
|
+
end
|
|
1901
|
+
|
|
1902
|
+
sig do
|
|
1903
|
+
override.returns(
|
|
1904
|
+
{
|
|
1905
|
+
kind:
|
|
1906
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::OrSymbol,
|
|
1907
|
+
value: String
|
|
1908
|
+
}
|
|
1909
|
+
)
|
|
1910
|
+
end
|
|
1911
|
+
def to_hash
|
|
1912
|
+
end
|
|
1913
|
+
|
|
1914
|
+
module Kind
|
|
1915
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1916
|
+
|
|
1917
|
+
TaggedSymbol =
|
|
1918
|
+
T.type_alias do
|
|
1919
|
+
T.all(
|
|
1920
|
+
Symbol,
|
|
1921
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind
|
|
1922
|
+
)
|
|
1923
|
+
end
|
|
1924
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1925
|
+
|
|
1926
|
+
FAVORITERS =
|
|
1927
|
+
T.let(
|
|
1928
|
+
:favoriters,
|
|
1929
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1930
|
+
)
|
|
1931
|
+
LIST =
|
|
1932
|
+
T.let(
|
|
1933
|
+
:list,
|
|
1934
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1935
|
+
)
|
|
1936
|
+
PROFILE =
|
|
1937
|
+
T.let(
|
|
1938
|
+
:profile,
|
|
1939
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1940
|
+
)
|
|
1941
|
+
PROFILE_LIKES =
|
|
1942
|
+
T.let(
|
|
1943
|
+
:profile_likes,
|
|
1944
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1945
|
+
)
|
|
1946
|
+
PROFILE_MEDIA =
|
|
1947
|
+
T.let(
|
|
1948
|
+
:profile_media,
|
|
1949
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1950
|
+
)
|
|
1951
|
+
PROFILE_REPLIES =
|
|
1952
|
+
T.let(
|
|
1953
|
+
:profile_replies,
|
|
1954
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1955
|
+
)
|
|
1956
|
+
QUOTES =
|
|
1957
|
+
T.let(
|
|
1958
|
+
:quotes,
|
|
1959
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1960
|
+
)
|
|
1961
|
+
REPLIES =
|
|
1962
|
+
T.let(
|
|
1963
|
+
:replies,
|
|
1964
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1965
|
+
)
|
|
1966
|
+
RETWEETERS =
|
|
1967
|
+
T.let(
|
|
1968
|
+
:retweeters,
|
|
1969
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1970
|
+
)
|
|
1971
|
+
SEARCH =
|
|
1972
|
+
T.let(
|
|
1973
|
+
:search,
|
|
1974
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1975
|
+
)
|
|
1976
|
+
THREAD =
|
|
1977
|
+
T.let(
|
|
1978
|
+
:thread,
|
|
1979
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1980
|
+
)
|
|
1981
|
+
TWEET =
|
|
1982
|
+
T.let(
|
|
1983
|
+
:tweet,
|
|
1984
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1985
|
+
)
|
|
1986
|
+
|
|
1987
|
+
sig do
|
|
1988
|
+
override.returns(
|
|
1989
|
+
T::Array[
|
|
1990
|
+
XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind::TaggedSymbol
|
|
1991
|
+
]
|
|
1992
|
+
)
|
|
1993
|
+
end
|
|
1994
|
+
def self.values
|
|
1995
|
+
end
|
|
1996
|
+
end
|
|
1997
|
+
end
|
|
1998
|
+
|
|
1999
|
+
sig do
|
|
2000
|
+
override.returns(
|
|
2001
|
+
T::Array[XTwitterScraper::ExtractionRunParams::Target::Variants]
|
|
2002
|
+
)
|
|
2003
|
+
end
|
|
2004
|
+
def self.variants
|
|
2005
|
+
end
|
|
2006
|
+
end
|
|
2007
|
+
|
|
2008
|
+
# Reply end time as ISO 8601 or Unix seconds.
|
|
2009
|
+
module UntilTime
|
|
2010
|
+
extend XTwitterScraper::Internal::Type::Union
|
|
2011
|
+
|
|
2012
|
+
Variants = T.type_alias { T.any(Time, Integer) }
|
|
2013
|
+
|
|
2014
|
+
sig do
|
|
2015
|
+
override.returns(
|
|
2016
|
+
T::Array[XTwitterScraper::ExtractionRunParams::UntilTime::Variants]
|
|
2017
|
+
)
|
|
2018
|
+
end
|
|
2019
|
+
def self.variants
|
|
2020
|
+
end
|
|
2021
|
+
end
|
|
801
2022
|
end
|
|
802
2023
|
end
|
|
803
2024
|
end
|