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.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +3 -3
  4. data/lib/x_twitter_scraper/models/credit_topup_balance_response.rb +5 -5
  5. data/lib/x_twitter_scraper/models/draw_export_params.rb +8 -3
  6. data/lib/x_twitter_scraper/models/draw_list_params.rb +2 -2
  7. data/lib/x_twitter_scraper/models/error.rb +8 -0
  8. data/lib/x_twitter_scraper/models/event_list_params.rb +13 -5
  9. data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +731 -82
  10. data/lib/x_twitter_scraper/models/extraction_estimate_cost_response.rb +1 -0
  11. data/lib/x_twitter_scraper/models/extraction_export_results_params.rb +145 -1
  12. data/lib/x_twitter_scraper/models/extraction_list_params.rb +2 -2
  13. data/lib/x_twitter_scraper/models/extraction_retrieve_params.rb +70 -3
  14. data/lib/x_twitter_scraper/models/extraction_run_params.rb +662 -1
  15. data/lib/x_twitter_scraper/models/extraction_run_response.rb +27 -48
  16. data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +8 -8
  17. data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +9 -9
  18. data/lib/x_twitter_scraper/models/monitor.rb +29 -1
  19. data/lib/x_twitter_scraper/models/paginated_tweets.rb +4 -4
  20. data/lib/x_twitter_scraper/models/paginated_users.rb +5 -5
  21. data/lib/x_twitter_scraper/models/support/attachment_download_params.rb +28 -0
  22. data/lib/x_twitter_scraper/models/x/community_retrieve_members_params.rb +113 -1
  23. data/lib/x_twitter_scraper/models/x/community_retrieve_moderators_params.rb +117 -1
  24. data/lib/x_twitter_scraper/models/x/list_retrieve_followers_params.rb +117 -6
  25. data/lib/x_twitter_scraper/models/x/list_retrieve_members_params.rb +116 -1
  26. data/lib/x_twitter_scraper/models/x/tweet_get_favoriters_params.rb +117 -6
  27. data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +153 -1
  28. data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +246 -16
  29. data/lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb +3 -2
  30. data/lib/x_twitter_scraper/models/x/tweet_get_retweeters_params.rb +117 -6
  31. data/lib/x_twitter_scraper/models/x/tweet_search_params.rb +187 -14
  32. data/lib/x_twitter_scraper/models/x/tweet_search_response.rb +299 -0
  33. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_params.rb +143 -10
  34. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_response.rb +241 -0
  35. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rb +117 -6
  36. data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +143 -10
  37. data/lib/x_twitter_scraper/models/x/user_retrieve_following_response.rb +241 -0
  38. data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +153 -1
  39. data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +153 -1
  40. data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +153 -1
  41. data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +159 -7
  42. data/lib/x_twitter_scraper/models/x/user_retrieve_search_params.rb +116 -1
  43. data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +159 -7
  44. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rb +157 -8
  45. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rb +245 -0
  46. data/lib/x_twitter_scraper/models/x/x_account.rb +7 -11
  47. data/lib/x_twitter_scraper/resources/credits.rb +2 -2
  48. data/lib/x_twitter_scraper/resources/draws.rb +5 -2
  49. data/lib/x_twitter_scraper/resources/events.rb +10 -4
  50. data/lib/x_twitter_scraper/resources/extractions.rb +383 -84
  51. data/lib/x_twitter_scraper/resources/guest_wallets.rb +9 -13
  52. data/lib/x_twitter_scraper/resources/support/attachments.rb +42 -0
  53. data/lib/x_twitter_scraper/resources/support.rb +5 -0
  54. data/lib/x_twitter_scraper/resources/x/communities.rb +95 -4
  55. data/lib/x_twitter_scraper/resources/x/lists.rb +96 -5
  56. data/lib/x_twitter_scraper/resources/x/tweets.rb +286 -28
  57. data/lib/x_twitter_scraper/resources/x/users.rb +531 -41
  58. data/lib/x_twitter_scraper/version.rb +1 -1
  59. data/lib/x_twitter_scraper.rb +7 -1
  60. data/rbi/x_twitter_scraper/models/credit_topup_balance_response.rbi +6 -6
  61. data/rbi/x_twitter_scraper/models/draw_export_params.rbi +6 -3
  62. data/rbi/x_twitter_scraper/models/draw_list_params.rbi +2 -2
  63. data/rbi/x_twitter_scraper/models/error.rbi +40 -0
  64. data/rbi/x_twitter_scraper/models/event_list_params.rbi +15 -4
  65. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_params.rbi +1338 -86
  66. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_response.rbi +5 -0
  67. data/rbi/x_twitter_scraper/models/extraction_export_results_params.rbi +198 -0
  68. data/rbi/x_twitter_scraper/models/extraction_list_params.rbi +2 -2
  69. data/rbi/x_twitter_scraper/models/extraction_retrieve_params.rbi +194 -2
  70. data/rbi/x_twitter_scraper/models/extraction_run_params.rbi +1221 -0
  71. data/rbi/x_twitter_scraper/models/extraction_run_response.rbi +35 -162
  72. data/rbi/x_twitter_scraper/models/guest_wallet_create_response.rbi +8 -6
  73. data/rbi/x_twitter_scraper/models/guest_wallet_topup_response.rbi +9 -7
  74. data/rbi/x_twitter_scraper/models/monitor.rbi +54 -3
  75. data/rbi/x_twitter_scraper/models/paginated_tweets.rbi +4 -4
  76. data/rbi/x_twitter_scraper/models/paginated_users.rbi +5 -5
  77. data/rbi/x_twitter_scraper/models/support/attachment_download_params.rbi +51 -0
  78. data/rbi/x_twitter_scraper/models/x/community_retrieve_members_params.rbi +154 -0
  79. data/rbi/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbi +154 -0
  80. data/rbi/x_twitter_scraper/models/x/list_retrieve_followers_params.rbi +160 -8
  81. data/rbi/x_twitter_scraper/models/x/list_retrieve_members_params.rbi +154 -0
  82. data/rbi/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbi +160 -8
  83. data/rbi/x_twitter_scraper/models/x/tweet_get_quotes_params.rbi +209 -0
  84. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_params.rbi +403 -20
  85. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_response.rbi +3 -2
  86. data/rbi/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbi +160 -8
  87. data/rbi/x_twitter_scraper/models/x/tweet_search_params.rbi +279 -16
  88. data/rbi/x_twitter_scraper/models/x/tweet_search_response.rbi +543 -0
  89. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_params.rbi +228 -12
  90. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_response.rbi +440 -0
  91. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbi +160 -8
  92. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_params.rbi +228 -12
  93. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_response.rbi +440 -0
  94. data/rbi/x_twitter_scraper/models/x/user_retrieve_likes_params.rbi +209 -0
  95. data/rbi/x_twitter_scraper/models/x/user_retrieve_media_params.rbi +209 -0
  96. data/rbi/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbi +209 -0
  97. data/rbi/x_twitter_scraper/models/x/user_retrieve_replies_params.rbi +217 -8
  98. data/rbi/x_twitter_scraper/models/x/user_retrieve_search_params.rbi +154 -0
  99. data/rbi/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbi +217 -8
  100. data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbi +248 -10
  101. data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbi +440 -0
  102. data/rbi/x_twitter_scraper/models/x/x_account.rbi +9 -15
  103. data/rbi/x_twitter_scraper/resources/credits.rbi +2 -2
  104. data/rbi/x_twitter_scraper/resources/draws.rbi +3 -2
  105. data/rbi/x_twitter_scraper/resources/events.rbi +5 -2
  106. data/rbi/x_twitter_scraper/resources/extractions.rbi +525 -83
  107. data/rbi/x_twitter_scraper/resources/guest_wallets.rbi +9 -13
  108. data/rbi/x_twitter_scraper/resources/support/attachments.rbi +35 -0
  109. data/rbi/x_twitter_scraper/resources/support.rbi +4 -0
  110. data/rbi/x_twitter_scraper/resources/x/communities.rbi +84 -0
  111. data/rbi/x_twitter_scraper/resources/x/lists.rbi +87 -4
  112. data/rbi/x_twitter_scraper/resources/x/tweets.rbi +307 -31
  113. data/rbi/x_twitter_scraper/resources/x/users.rbi +558 -34
  114. data/sig/x_twitter_scraper/models/error.rbs +16 -0
  115. data/sig/x_twitter_scraper/models/event_list_params.rbs +7 -0
  116. data/sig/x_twitter_scraper/models/extraction_estimate_cost_params.rbs +605 -1
  117. data/sig/x_twitter_scraper/models/extraction_estimate_cost_response.rbs +2 -0
  118. data/sig/x_twitter_scraper/models/extraction_export_results_params.rbs +127 -1
  119. data/sig/x_twitter_scraper/models/extraction_retrieve_params.rbs +74 -1
  120. data/sig/x_twitter_scraper/models/extraction_run_params.rbs +611 -1
  121. data/sig/x_twitter_scraper/models/extraction_run_response.rbs +29 -67
  122. data/sig/x_twitter_scraper/models/guest_wallet_create_response.rbs +4 -4
  123. data/sig/x_twitter_scraper/models/guest_wallet_topup_response.rbs +4 -4
  124. data/sig/x_twitter_scraper/models/monitor.rbs +29 -3
  125. data/sig/x_twitter_scraper/models/support/attachment_download_params.rbs +32 -0
  126. data/sig/x_twitter_scraper/models/x/community_retrieve_members_params.rbs +103 -1
  127. data/sig/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbs +102 -1
  128. data/sig/x_twitter_scraper/models/x/list_retrieve_followers_params.rbs +103 -1
  129. data/sig/x_twitter_scraper/models/x/list_retrieve_members_params.rbs +103 -1
  130. data/sig/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbs +103 -1
  131. data/sig/x_twitter_scraper/models/x/tweet_get_quotes_params.rbs +134 -1
  132. data/sig/x_twitter_scraper/models/x/tweet_get_replies_params.rbs +207 -2
  133. data/sig/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbs +103 -1
  134. data/sig/x_twitter_scraper/models/x/tweet_search_params.rbs +154 -1
  135. data/sig/x_twitter_scraper/models/x/tweet_search_response.rbs +258 -0
  136. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_params.rbs +119 -1
  137. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_response.rbs +216 -0
  138. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbs +103 -1
  139. data/sig/x_twitter_scraper/models/x/user_retrieve_following_params.rbs +119 -1
  140. data/sig/x_twitter_scraper/models/x/user_retrieve_following_response.rbs +216 -0
  141. data/sig/x_twitter_scraper/models/x/user_retrieve_likes_params.rbs +134 -1
  142. data/sig/x_twitter_scraper/models/x/user_retrieve_media_params.rbs +134 -1
  143. data/sig/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbs +134 -1
  144. data/sig/x_twitter_scraper/models/x/user_retrieve_replies_params.rbs +134 -1
  145. data/sig/x_twitter_scraper/models/x/user_retrieve_search_params.rbs +102 -1
  146. data/sig/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbs +134 -1
  147. data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbs +137 -1
  148. data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbs +216 -0
  149. data/sig/x_twitter_scraper/resources/events.rbs +1 -0
  150. data/sig/x_twitter_scraper/resources/extractions.rbs +137 -0
  151. data/sig/x_twitter_scraper/resources/support/attachments.rbs +15 -0
  152. data/sig/x_twitter_scraper/resources/support.rbs +2 -0
  153. data/sig/x_twitter_scraper/resources/x/communities.rbs +28 -0
  154. data/sig/x_twitter_scraper/resources/x/lists.rbs +28 -0
  155. data/sig/x_twitter_scraper/resources/x/tweets.rbs +93 -1
  156. data/sig/x_twitter_scraper/resources/x/users.rbs +173 -3
  157. metadata +19 -1
@@ -26,94 +26,304 @@ module XTwitterScraper
26
26
  end
27
27
  attr_accessor :tool_type
28
28
 
29
- # Raw advanced query string appended to the estimate (tweet_search_extractor)
29
+ # Raw advanced search query appended as-is (tweet_search_extractor)
30
30
  sig { returns(T.nilable(String)) }
31
31
  attr_reader :advanced_query
32
32
 
33
33
  sig { params(advanced_query: String).void }
34
34
  attr_writer :advanced_query
35
35
 
36
- # Alternative words or quoted phrases for estimated results. Separate with spaces,
37
- # commas, or lines.
36
+ # Words or quoted phrases where any one can match. Separate with spaces, commas,
37
+ # or lines. (tweet_search_extractor)
38
38
  sig { returns(T.nilable(String)) }
39
39
  attr_reader :any_words
40
40
 
41
41
  sig { params(any_words: String).void }
42
42
  attr_writer :any_words
43
43
 
44
- # Geo bounding box used for estimation, e.g. -74.1 40.6 -73.9 40.8
45
- # (tweet_search_extractor)
44
+ # Bio terms separated by commas or lines.
45
+ sig { returns(T.nilable(String)) }
46
+ attr_reader :bio_contains
47
+
48
+ sig { params(bio_contains: String).void }
49
+ attr_writer :bio_contains
50
+
51
+ # Return only Blue-verified Tweet authors.
52
+ sig { returns(T.nilable(T::Boolean)) }
53
+ attr_reader :blue_verified_only
54
+
55
+ sig { params(blue_verified_only: T::Boolean).void }
56
+ attr_writer :blue_verified_only
57
+
58
+ # Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
46
59
  sig { returns(T.nilable(String)) }
47
60
  attr_reader :bounding_box
48
61
 
49
62
  sig { params(bounding_box: String).void }
50
63
  attr_writer :bounding_box
51
64
 
52
- # Cashtags applied to the estimate, separated by spaces, commas, or lines.
65
+ # Match the Tweet card name.
66
+ sig { returns(T.nilable(String)) }
67
+ attr_reader :card_name
68
+
69
+ sig { params(card_name: String).void }
70
+ attr_writer :card_name
71
+
72
+ # Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
53
73
  sig { returns(T.nilable(String)) }
54
74
  attr_reader :cashtags
55
75
 
56
76
  sig { params(cashtags: String).void }
57
77
  attr_writer :cashtags
58
78
 
59
- # Conversation ID filter used for estimation (tweet_search_extractor)
79
+ # Reply collection strategy.
80
+ sig do
81
+ returns(
82
+ T.nilable(
83
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::OrSymbol
84
+ )
85
+ )
86
+ end
87
+ attr_reader :collection_strategy
88
+
89
+ sig do
90
+ params(
91
+ collection_strategy:
92
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::OrSymbol
93
+ ).void
94
+ end
95
+ attr_writer :collection_strategy
96
+
97
+ # Conversation ID filter (tweet_search_extractor)
60
98
  sig { returns(T.nilable(String)) }
61
99
  attr_reader :conversation_id
62
100
 
63
101
  sig { params(conversation_id: String).void }
64
102
  attr_writer :conversation_id
65
103
 
66
- # Exact phrase filter for search estimation
104
+ # Merge duplicate results across collection targets.
105
+ sig { returns(T.nilable(T::Boolean)) }
106
+ attr_reader :dedupe_across_targets
107
+
108
+ sig { params(dedupe_across_targets: T::Boolean).void }
109
+ attr_writer :dedupe_across_targets
110
+
111
+ # Keep target duplicates, first rows, or merged overlap.
112
+ sig do
113
+ returns(
114
+ T.nilable(
115
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode::OrSymbol
116
+ )
117
+ )
118
+ end
119
+ attr_reader :dedupe_mode
120
+
121
+ sig do
122
+ params(
123
+ dedupe_mode:
124
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode::OrSymbol
125
+ ).void
126
+ end
127
+ attr_writer :dedupe_mode
128
+
129
+ # Exact phrase to match (tweet_search_extractor)
67
130
  sig { returns(T.nilable(String)) }
68
131
  attr_reader :exact_phrase
69
132
 
70
133
  sig { params(exact_phrase: String).void }
71
134
  attr_writer :exact_phrase
72
135
 
73
- # Words or quoted phrases excluded from estimated results. Separate with spaces,
74
- # commas, or lines.
136
+ # Exclude replies from the source author.
137
+ sig { returns(T.nilable(T::Boolean)) }
138
+ attr_reader :exclude_original_author
139
+
140
+ sig { params(exclude_original_author: T::Boolean).void }
141
+ attr_writer :exclude_original_author
142
+
143
+ # Exclude a source application.
144
+ sig { returns(T.nilable(String)) }
145
+ attr_reader :exclude_source
146
+
147
+ sig { params(exclude_source: String).void }
148
+ attr_writer :exclude_source
149
+
150
+ # Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
151
+ # (tweet_search_extractor)
75
152
  sig { returns(T.nilable(String)) }
76
153
  attr_reader :exclude_words
77
154
 
78
155
  sig { params(exclude_words: String).void }
79
156
  attr_writer :exclude_words
80
157
 
81
- # Estimate only tweets from this author username (tweet_search_extractor)
158
+ # Filter by author username (tweet_search_extractor)
82
159
  sig { returns(T.nilable(String)) }
83
160
  attr_reader :from_user
84
161
 
85
162
  sig { params(from_user: String).void }
86
163
  attr_writer :from_user
87
164
 
88
- # Hashtags applied to the estimate, separated by spaces, commas, or lines.
165
+ # Match latitude, longitude, and radius.
166
+ sig { returns(T.nilable(String)) }
167
+ attr_reader :geocode
168
+
169
+ sig { params(geocode: String).void }
170
+ attr_writer :geocode
171
+
172
+ # Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
89
173
  sig { returns(T.nilable(String)) }
90
174
  attr_reader :hashtags
91
175
 
92
176
  sig { params(hashtags: String).void }
93
177
  attr_writer :hashtags
94
178
 
95
- # Estimate only replies to this tweet ID (tweet_search_extractor)
179
+ # Require a profile location.
180
+ sig { returns(T.nilable(T::Boolean)) }
181
+ attr_reader :has_location
182
+
183
+ sig { params(has_location: T::Boolean).void }
184
+ attr_writer :has_location
185
+
186
+ # Return only replies with media.
187
+ sig { returns(T.nilable(T::Boolean)) }
188
+ attr_reader :has_media_only
189
+
190
+ sig { params(has_media_only: T::Boolean).void }
191
+ attr_writer :has_media_only
192
+
193
+ # Require a profile website.
194
+ sig { returns(T.nilable(T::Boolean)) }
195
+ attr_reader :has_website
196
+
197
+ sig { params(has_website: T::Boolean).void }
198
+ attr_writer :has_website
199
+
200
+ # Include the source post in reply results.
201
+ sig { returns(T.nilable(T::Boolean)) }
202
+ attr_reader :include_original_post
203
+
204
+ sig { params(include_original_post: T::Boolean).void }
205
+ attr_writer :include_original_post
206
+
207
+ # Add matching search terms to collection metadata.
208
+ sig { returns(T.nilable(T::Boolean)) }
209
+ attr_reader :include_search_terms
210
+
211
+ sig { params(include_search_terms: T::Boolean).void }
212
+ attr_writer :include_search_terms
213
+
214
+ # Add source target metadata to each result.
215
+ sig { returns(T.nilable(T::Boolean)) }
216
+ attr_reader :include_target_metadata
217
+
218
+ sig { params(include_target_metadata: T::Boolean).void }
219
+ attr_writer :include_target_metadata
220
+
221
+ # Only replies to this tweet ID (tweet_search_extractor)
96
222
  sig { returns(T.nilable(String)) }
97
223
  attr_reader :in_reply_to_tweet_id
98
224
 
99
225
  sig { params(in_reply_to_tweet_id: String).void }
100
226
  attr_writer :in_reply_to_tweet_id
101
227
 
102
- # Language code used for estimate filtering (tweet_search_extractor)
228
+ # Language code filter (tweet_search_extractor)
103
229
  sig { returns(T.nilable(String)) }
104
230
  attr_reader :language
105
231
 
106
232
  sig { params(language: String).void }
107
233
  attr_writer :language
108
234
 
109
- # Estimate search results within this list ID (tweet_search_extractor)
235
+ # Search within a list ID (tweet_search_extractor)
110
236
  sig { returns(T.nilable(String)) }
111
237
  attr_reader :list_id
112
238
 
113
239
  sig { params(list_id: String).void }
114
240
  attr_writer :list_id
115
241
 
116
- # Media type used for estimate filtering (tweet_search_extractor)
242
+ # Required profile location text.
243
+ sig { returns(T.nilable(String)) }
244
+ attr_reader :location_contains
245
+
246
+ sig { params(location_contains: String).void }
247
+ attr_writer :location_contains
248
+
249
+ # Maximum nested reply depth.
250
+ sig { returns(T.nilable(Integer)) }
251
+ attr_reader :max_depth
252
+
253
+ sig { params(max_depth: Integer).void }
254
+ attr_writer :max_depth
255
+
256
+ # Maximum follower count for profile results.
257
+ sig { returns(T.nilable(Integer)) }
258
+ attr_reader :max_followers
259
+
260
+ sig { params(max_followers: Integer).void }
261
+ attr_writer :max_followers
262
+
263
+ # Maximum following count for profile results.
264
+ sig { returns(T.nilable(Integer)) }
265
+ attr_reader :max_following
266
+
267
+ sig { params(max_following: Integer).void }
268
+ attr_writer :max_following
269
+
270
+ # Return Tweets older than this Tweet ID.
271
+ sig { returns(T.nilable(String)) }
272
+ attr_reader :max_id
273
+
274
+ sig { params(max_id: String).void }
275
+ attr_writer :max_id
276
+
277
+ # Maximum results collected for each target.
278
+ sig { returns(T.nilable(Integer)) }
279
+ attr_reader :max_items_per_target
280
+
281
+ sig { params(max_items_per_target: Integer).void }
282
+ attr_writer :max_items_per_target
283
+
284
+ # Maximum Tweet like count.
285
+ sig { returns(T.nilable(Integer)) }
286
+ attr_reader :max_likes
287
+
288
+ sig { params(max_likes: Integer).void }
289
+ attr_writer :max_likes
290
+
291
+ # Reply pages collected for each target.
292
+ sig { returns(T.nilable(Integer)) }
293
+ attr_reader :max_pages_per_target
294
+
295
+ sig { params(max_pages_per_target: Integer).void }
296
+ attr_writer :max_pages_per_target
297
+
298
+ # Maximum post count for profile results.
299
+ sig { returns(T.nilable(Integer)) }
300
+ attr_reader :max_posts
301
+
302
+ sig { params(max_posts: Integer).void }
303
+ attr_writer :max_posts
304
+
305
+ # Maximum Tweet quote count.
306
+ sig { returns(T.nilable(Integer)) }
307
+ attr_reader :max_quotes
308
+
309
+ sig { params(max_quotes: Integer).void }
310
+ attr_writer :max_quotes
311
+
312
+ # Maximum Tweet reply count.
313
+ sig { returns(T.nilable(Integer)) }
314
+ attr_reader :max_replies
315
+
316
+ sig { params(max_replies: Integer).void }
317
+ attr_writer :max_replies
318
+
319
+ # Maximum Tweet repost count.
320
+ sig { returns(T.nilable(Integer)) }
321
+ attr_reader :max_retweets
322
+
323
+ sig { params(max_retweets: Integer).void }
324
+ attr_writer :max_retweets
325
+
326
+ # Media type filter (tweet_search_extractor)
117
327
  sig do
118
328
  returns(
119
329
  T.nilable(
@@ -131,64 +341,151 @@ module XTwitterScraper
131
341
  end
132
342
  attr_writer :media_type
133
343
 
134
- # Estimate tweets mentioning this username (tweet_search_extractor)
344
+ # Filter tweets mentioning a username (tweet_search_extractor)
135
345
  sig { returns(T.nilable(String)) }
136
346
  attr_reader :mentioning
137
347
 
138
348
  sig { params(mentioning: String).void }
139
349
  attr_writer :mentioning
140
350
 
141
- # Minimum likes threshold for estimated results (tweet_search_extractor)
351
+ # Minimum profile age in days.
352
+ sig { returns(T.nilable(Integer)) }
353
+ attr_reader :min_account_age_days
354
+
355
+ sig { params(min_account_age_days: Integer).void }
356
+ attr_writer :min_account_age_days
357
+
358
+ # Minimum Tweet bookmark count.
359
+ sig { returns(T.nilable(Integer)) }
360
+ attr_reader :min_bookmarks
361
+
362
+ sig { params(min_bookmarks: Integer).void }
363
+ attr_writer :min_bookmarks
364
+
365
+ # Minimum likes threshold (tweet_search_extractor)
142
366
  sig { returns(T.nilable(Integer)) }
143
367
  attr_reader :min_faves
144
368
 
145
369
  sig { params(min_faves: Integer).void }
146
370
  attr_writer :min_faves
147
371
 
148
- # Minimum quote count threshold for estimated results (tweet_search_extractor)
372
+ # Minimum follower count for profile results.
373
+ sig { returns(T.nilable(Integer)) }
374
+ attr_reader :min_followers
375
+
376
+ sig { params(min_followers: Integer).void }
377
+ attr_writer :min_followers
378
+
379
+ # Minimum following count for profile results.
380
+ sig { returns(T.nilable(Integer)) }
381
+ attr_reader :min_following
382
+
383
+ sig { params(min_following: Integer).void }
384
+ attr_writer :min_following
385
+
386
+ # Minimum post count for profile results.
387
+ sig { returns(T.nilable(Integer)) }
388
+ attr_reader :min_posts
389
+
390
+ sig { params(min_posts: Integer).void }
391
+ attr_writer :min_posts
392
+
393
+ # Minimum quote count threshold (tweet_search_extractor)
149
394
  sig { returns(T.nilable(Integer)) }
150
395
  attr_reader :min_quotes
151
396
 
152
397
  sig { params(min_quotes: Integer).void }
153
398
  attr_writer :min_quotes
154
399
 
155
- # Minimum replies threshold for estimated results (tweet_search_extractor)
400
+ # Minimum replies threshold (tweet_search_extractor)
156
401
  sig { returns(T.nilable(Integer)) }
157
402
  attr_reader :min_replies
158
403
 
159
404
  sig { params(min_replies: Integer).void }
160
405
  attr_writer :min_replies
161
406
 
162
- # Minimum retweets threshold for estimated results (tweet_search_extractor)
407
+ # Minimum retweets threshold (tweet_search_extractor)
163
408
  sig { returns(T.nilable(Integer)) }
164
409
  attr_reader :min_retweets
165
410
 
166
411
  sig { params(min_retweets: Integer).void }
167
412
  attr_writer :min_retweets
168
413
 
169
- # Estimate search results within this place ID (tweet_search_extractor)
414
+ # Minimum Tweet view count.
415
+ sig { returns(T.nilable(Integer)) }
416
+ attr_reader :min_views
417
+
418
+ sig { params(min_views: Integer).void }
419
+ attr_writer :min_views
420
+
421
+ # Only return native reposts.
422
+ sig { returns(T.nilable(T::Boolean)) }
423
+ attr_reader :native_retweets
424
+
425
+ sig { params(native_retweets: T::Boolean).void }
426
+ attr_writer :native_retweets
427
+
428
+ # Match a place name.
429
+ sig { returns(T.nilable(String)) }
430
+ attr_reader :near
431
+
432
+ sig { params(near: String).void }
433
+ attr_writer :near
434
+
435
+ # Only return news results.
436
+ sig { returns(T.nilable(T::Boolean)) }
437
+ attr_reader :news
438
+
439
+ sig { params(news: T::Boolean).void }
440
+ attr_writer :news
441
+
442
+ # Shortcut for dedupeMode=merge.
443
+ sig { returns(T.nilable(T::Boolean)) }
444
+ attr_reader :overlap_mode
445
+
446
+ sig { params(overlap_mode: T::Boolean).void }
447
+ attr_writer :overlap_mode
448
+
449
+ # Search within a place ID (tweet_search_extractor)
170
450
  sig { returns(T.nilable(String)) }
171
451
  attr_reader :place
172
452
 
173
453
  sig { params(place: String).void }
174
454
  attr_writer :place
175
455
 
176
- # Estimate search results within this country code (tweet_search_extractor)
456
+ # Search within a country code (tweet_search_extractor)
177
457
  sig { returns(T.nilable(String)) }
178
458
  attr_reader :place_country
179
459
 
180
460
  sig { params(place_country: String).void }
181
461
  attr_writer :place_country
182
462
 
183
- # Geo point radius used for estimation, e.g. -73.99 40.73 25mi
184
- # (tweet_search_extractor)
463
+ # Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
185
464
  sig { returns(T.nilable(String)) }
186
465
  attr_reader :point_radius
187
466
 
188
467
  sig { params(point_radius: String).void }
189
468
  attr_writer :point_radius
190
469
 
191
- # Quote mode used for estimation (tweet_search_extractor)
470
+ # Search ranking applied to every query.
471
+ sig do
472
+ returns(
473
+ T.nilable(
474
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType::OrSymbol
475
+ )
476
+ )
477
+ end
478
+ attr_reader :query_type
479
+
480
+ sig do
481
+ params(
482
+ query_type:
483
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType::OrSymbol
484
+ ).void
485
+ end
486
+ attr_writer :query_type
487
+
488
+ # Quote mode (tweet_search_extractor)
192
489
  sig do
193
490
  returns(
194
491
  T.nilable(
@@ -206,14 +503,36 @@ module XTwitterScraper
206
503
  end
207
504
  attr_writer :quotes
208
505
 
209
- # Estimate only quotes of this tweet ID (tweet_search_extractor)
506
+ # Only quotes of this tweet ID (tweet_search_extractor)
210
507
  sig { returns(T.nilable(String)) }
211
508
  attr_reader :quotes_of_tweet_id
212
509
 
213
510
  sig { params(quotes_of_tweet_id: String).void }
214
511
  attr_writer :quotes_of_tweet_id
215
512
 
216
- # Reply mode used for estimation (tweet_search_extractor)
513
+ # Profile relations processed within one job.
514
+ sig do
515
+ returns(
516
+ T.nilable(
517
+ T::Array[
518
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget
519
+ ]
520
+ )
521
+ )
522
+ end
523
+ attr_reader :relation_targets
524
+
525
+ sig do
526
+ params(
527
+ relation_targets:
528
+ T::Array[
529
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::OrHash
530
+ ]
531
+ ).void
532
+ end
533
+ attr_writer :relation_targets
534
+
535
+ # Reply mode (tweet_search_extractor)
217
536
  sig do
218
537
  returns(
219
538
  T.nilable(
@@ -231,15 +550,15 @@ module XTwitterScraper
231
550
  end
232
551
  attr_writer :replies
233
552
 
234
- # Maximum number of results to estimate. When set, the estimate caps projected
235
- # results to this value.
553
+ # Maximum number of results to extract. When set, the extraction stops after
554
+ # reaching this limit.
236
555
  sig { returns(T.nilable(Integer)) }
237
556
  attr_reader :results_limit
238
557
 
239
558
  sig { params(results_limit: Integer).void }
240
559
  attr_writer :results_limit
241
560
 
242
- # Retweet mode used for estimation (tweet_search_extractor)
561
+ # Retweet mode (tweet_search_extractor)
243
562
  sig do
244
563
  returns(
245
564
  T.nilable(
@@ -257,35 +576,129 @@ module XTwitterScraper
257
576
  end
258
577
  attr_writer :retweets
259
578
 
260
- # Estimate only retweets of this tweet ID (tweet_search_extractor)
579
+ # Only retweets of this tweet ID (tweet_search_extractor)
261
580
  sig { returns(T.nilable(String)) }
262
581
  attr_reader :retweets_of_tweet_id
263
582
 
264
583
  sig { params(retweets_of_tweet_id: String).void }
265
584
  attr_writer :retweets_of_tweet_id
266
585
 
267
- # Query used to price tweet_search_extractor or community_search.
586
+ # Enable the safe-search filter.
587
+ sig { returns(T.nilable(T::Boolean)) }
588
+ attr_reader :safe
589
+
590
+ sig { params(safe: T::Boolean).void }
591
+ attr_writer :safe
592
+
593
+ # Reply depth scope.
594
+ sig do
595
+ returns(
596
+ T.nilable(
597
+ XTwitterScraper::ExtractionEstimateCostParams::Scope::OrSymbol
598
+ )
599
+ )
600
+ end
601
+ attr_reader :scope
602
+
603
+ sig do
604
+ params(
605
+ scope: XTwitterScraper::ExtractionEstimateCostParams::Scope::OrSymbol
606
+ ).void
607
+ end
608
+ attr_writer :scope
609
+
610
+ # Search queries processed as one collection job.
611
+ sig { returns(T.nilable(T::Array[String])) }
612
+ attr_reader :search_queries
613
+
614
+ sig { params(search_queries: T::Array[String]).void }
615
+ attr_writer :search_queries
616
+
617
+ # Required for tweet_search_extractor & community_search.
268
618
  sig { returns(T.nilable(String)) }
269
619
  attr_reader :search_query
270
620
 
271
621
  sig { params(search_query: String).void }
272
622
  attr_writer :search_query
273
623
 
274
- # Estimate start date in YYYY-MM-DD format (tweet_search_extractor)
624
+ # Start date YYYY-MM-DD (tweet_search_extractor)
275
625
  sig { returns(T.nilable(Date)) }
276
626
  attr_reader :since_date
277
627
 
278
628
  sig { params(since_date: Date).void }
279
629
  attr_writer :since_date
280
630
 
281
- # Community ID used to price community_post_extractor or community_search.
631
+ # Return Tweets newer than this Tweet ID.
632
+ sig { returns(T.nilable(String)) }
633
+ attr_reader :since_id
634
+
635
+ sig { params(since_id: String).void }
636
+ attr_writer :since_id
637
+
638
+ # Reply start time as ISO 8601 or Unix seconds.
639
+ sig do
640
+ returns(
641
+ T.nilable(
642
+ XTwitterScraper::ExtractionEstimateCostParams::SinceTime::Variants
643
+ )
644
+ )
645
+ end
646
+ attr_reader :since_time
647
+
648
+ sig do
649
+ params(
650
+ since_time:
651
+ XTwitterScraper::ExtractionEstimateCostParams::SinceTime::Variants
652
+ ).void
653
+ end
654
+ attr_writer :since_time
655
+
656
+ # Reply result order.
657
+ sig do
658
+ returns(
659
+ T.nilable(
660
+ XTwitterScraper::ExtractionEstimateCostParams::Sort::OrSymbol
661
+ )
662
+ )
663
+ end
664
+ attr_reader :sort
665
+
666
+ sig do
667
+ params(
668
+ sort: XTwitterScraper::ExtractionEstimateCostParams::Sort::OrSymbol
669
+ ).void
670
+ end
671
+ attr_writer :sort
672
+
673
+ # Match the source application.
674
+ sig { returns(T.nilable(String)) }
675
+ attr_reader :source
676
+
677
+ sig { params(source: String).void }
678
+ attr_writer :source
679
+
680
+ # Resume one reply target from this cursor.
681
+ sig { returns(T.nilable(String)) }
682
+ attr_reader :start_cursor
683
+
684
+ sig { params(start_cursor: String).void }
685
+ attr_writer :start_cursor
686
+
687
+ # Required for community_post_extractor & community_search.
282
688
  sig { returns(T.nilable(String)) }
283
689
  attr_reader :target_community_id
284
690
 
285
691
  sig { params(target_community_id: String).void }
286
692
  attr_writer :target_community_id
287
693
 
288
- # List ID used to price list_follower_explorer, list_member_extractor, or
694
+ # Community IDs processed as one collection job.
695
+ sig { returns(T.nilable(T::Array[String])) }
696
+ attr_reader :target_community_ids
697
+
698
+ sig { params(target_community_ids: T::Array[String]).void }
699
+ attr_writer :target_community_ids
700
+
701
+ # Required for list_follower_explorer, list_member_extractor &
289
702
  # list_post_extractor.
290
703
  sig { returns(T.nilable(String)) }
291
704
  attr_reader :target_list_id
@@ -293,7 +706,42 @@ module XTwitterScraper
293
706
  sig { params(target_list_id: String).void }
294
707
  attr_writer :target_list_id
295
708
 
296
- # Space ID used to price space_explorer.
709
+ # List IDs processed as one collection job.
710
+ sig { returns(T.nilable(T::Array[String])) }
711
+ attr_reader :target_list_ids
712
+
713
+ sig { params(target_list_ids: T::Array[String]).void }
714
+ attr_writer :target_list_ids
715
+
716
+ # Mixed targets auto-routed within one job.
717
+ sig do
718
+ returns(
719
+ T.nilable(
720
+ T::Array[
721
+ T.any(
722
+ String,
723
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1
724
+ )
725
+ ]
726
+ )
727
+ )
728
+ end
729
+ attr_reader :targets
730
+
731
+ sig do
732
+ params(
733
+ targets:
734
+ T::Array[
735
+ T.any(
736
+ String,
737
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::OrHash
738
+ )
739
+ ]
740
+ ).void
741
+ end
742
+ attr_writer :targets
743
+
744
+ # Required for space_explorer.
297
745
  sig { returns(T.nilable(String)) }
298
746
  attr_reader :target_space_id
299
747
 
@@ -306,172 +754,415 @@ module XTwitterScraper
306
754
  sig { params(target_tweet_id: String).void }
307
755
  attr_writer :target_tweet_id
308
756
 
757
+ # Tweet IDs processed as one collection job.
758
+ sig { returns(T.nilable(T::Array[String])) }
759
+ attr_reader :target_tweet_ids
760
+
761
+ sig { params(target_tweet_ids: T::Array[String]).void }
762
+ attr_writer :target_tweet_ids
763
+
309
764
  sig { returns(T.nilable(String)) }
310
765
  attr_reader :target_username
311
766
 
312
767
  sig { params(target_username: String).void }
313
768
  attr_writer :target_username
314
769
 
315
- # Estimate replies sent to this username (tweet_search_extractor)
770
+ # Usernames processed as one collection job.
771
+ sig { returns(T.nilable(T::Array[String])) }
772
+ attr_reader :target_usernames
773
+
774
+ sig { params(target_usernames: T::Array[String]).void }
775
+ attr_writer :target_usernames
776
+
777
+ # Filter replies sent to a username (tweet_search_extractor)
316
778
  sig { returns(T.nilable(String)) }
317
779
  attr_reader :to_user
318
780
 
319
781
  sig { params(to_user: String).void }
320
782
  attr_writer :to_user
321
783
 
322
- # Estimate end date in YYYY-MM-DD format (tweet_search_extractor)
784
+ # End date YYYY-MM-DD (tweet_search_extractor)
323
785
  sig { returns(T.nilable(Date)) }
324
786
  attr_reader :until_date
325
787
 
326
788
  sig { params(until_date: Date).void }
327
789
  attr_writer :until_date
328
790
 
329
- # URL substring or domain filter used for estimation (tweet_search_extractor)
791
+ # Reply end time as ISO 8601 or Unix seconds.
792
+ sig do
793
+ returns(
794
+ T.nilable(
795
+ XTwitterScraper::ExtractionEstimateCostParams::UntilTime::Variants
796
+ )
797
+ )
798
+ end
799
+ attr_reader :until_time
800
+
801
+ sig do
802
+ params(
803
+ until_time:
804
+ XTwitterScraper::ExtractionEstimateCostParams::UntilTime::Variants
805
+ ).void
806
+ end
807
+ attr_writer :until_time
808
+
809
+ # URL substring or domain filter (tweet_search_extractor)
330
810
  sig { returns(T.nilable(String)) }
331
811
  attr_reader :url
332
812
 
333
813
  sig { params(url: String).void }
334
814
  attr_writer :url
335
815
 
336
- # Estimate only verified authors (tweet_search_extractor)
816
+ # Required username text.
817
+ sig { returns(T.nilable(String)) }
818
+ attr_reader :username_contains
819
+
820
+ sig { params(username_contains: String).void }
821
+ attr_writer :username_contains
822
+
823
+ # Only verified authors (tweet_search_extractor)
337
824
  sig { returns(T.nilable(T::Boolean)) }
338
825
  attr_reader :verified_only
339
826
 
340
827
  sig { params(verified_only: T::Boolean).void }
341
828
  attr_writer :verified_only
342
829
 
830
+ # Exact profile verification type.
831
+ sig { returns(T.nilable(String)) }
832
+ attr_reader :verified_type
833
+
834
+ sig { params(verified_type: String).void }
835
+ attr_writer :verified_type
836
+
837
+ # Set the radius for the near filter.
838
+ sig { returns(T.nilable(String)) }
839
+ attr_reader :within
840
+
841
+ sig { params(within: String).void }
842
+ attr_writer :within
843
+
844
+ # Match Tweets inside a recent time window.
845
+ sig { returns(T.nilable(String)) }
846
+ attr_reader :within_time
847
+
848
+ sig { params(within_time: String).void }
849
+ attr_writer :within_time
850
+
343
851
  sig do
344
852
  params(
345
853
  tool_type:
346
854
  XTwitterScraper::ExtractionEstimateCostParams::ToolType::OrSymbol,
347
855
  advanced_query: String,
348
856
  any_words: String,
857
+ bio_contains: String,
858
+ blue_verified_only: T::Boolean,
349
859
  bounding_box: String,
860
+ card_name: String,
350
861
  cashtags: String,
862
+ collection_strategy:
863
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::OrSymbol,
351
864
  conversation_id: String,
865
+ dedupe_across_targets: T::Boolean,
866
+ dedupe_mode:
867
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode::OrSymbol,
352
868
  exact_phrase: String,
869
+ exclude_original_author: T::Boolean,
870
+ exclude_source: String,
353
871
  exclude_words: String,
354
872
  from_user: String,
873
+ geocode: String,
355
874
  hashtags: String,
875
+ has_location: T::Boolean,
876
+ has_media_only: T::Boolean,
877
+ has_website: T::Boolean,
878
+ include_original_post: T::Boolean,
879
+ include_search_terms: T::Boolean,
880
+ include_target_metadata: T::Boolean,
356
881
  in_reply_to_tweet_id: String,
357
882
  language: String,
358
883
  list_id: String,
884
+ location_contains: String,
885
+ max_depth: Integer,
886
+ max_followers: Integer,
887
+ max_following: Integer,
888
+ max_id: String,
889
+ max_items_per_target: Integer,
890
+ max_likes: Integer,
891
+ max_pages_per_target: Integer,
892
+ max_posts: Integer,
893
+ max_quotes: Integer,
894
+ max_replies: Integer,
895
+ max_retweets: Integer,
359
896
  media_type:
360
897
  XTwitterScraper::ExtractionEstimateCostParams::MediaType::OrSymbol,
361
898
  mentioning: String,
899
+ min_account_age_days: Integer,
900
+ min_bookmarks: Integer,
362
901
  min_faves: Integer,
902
+ min_followers: Integer,
903
+ min_following: Integer,
904
+ min_posts: Integer,
363
905
  min_quotes: Integer,
364
906
  min_replies: Integer,
365
907
  min_retweets: Integer,
908
+ min_views: Integer,
909
+ native_retweets: T::Boolean,
910
+ near: String,
911
+ news: T::Boolean,
912
+ overlap_mode: T::Boolean,
366
913
  place: String,
367
914
  place_country: String,
368
915
  point_radius: String,
916
+ query_type:
917
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType::OrSymbol,
369
918
  quotes:
370
919
  XTwitterScraper::ExtractionEstimateCostParams::Quotes::OrSymbol,
371
920
  quotes_of_tweet_id: String,
921
+ relation_targets:
922
+ T::Array[
923
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::OrHash
924
+ ],
372
925
  replies:
373
926
  XTwitterScraper::ExtractionEstimateCostParams::Replies::OrSymbol,
374
927
  results_limit: Integer,
375
928
  retweets:
376
929
  XTwitterScraper::ExtractionEstimateCostParams::Retweets::OrSymbol,
377
930
  retweets_of_tweet_id: String,
931
+ safe: T::Boolean,
932
+ scope: XTwitterScraper::ExtractionEstimateCostParams::Scope::OrSymbol,
933
+ search_queries: T::Array[String],
378
934
  search_query: String,
379
935
  since_date: Date,
936
+ since_id: String,
937
+ since_time:
938
+ XTwitterScraper::ExtractionEstimateCostParams::SinceTime::Variants,
939
+ sort: XTwitterScraper::ExtractionEstimateCostParams::Sort::OrSymbol,
940
+ source: String,
941
+ start_cursor: String,
380
942
  target_community_id: String,
943
+ target_community_ids: T::Array[String],
381
944
  target_list_id: String,
945
+ target_list_ids: T::Array[String],
946
+ targets:
947
+ T::Array[
948
+ T.any(
949
+ String,
950
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::OrHash
951
+ )
952
+ ],
382
953
  target_space_id: String,
383
954
  target_tweet_id: String,
955
+ target_tweet_ids: T::Array[String],
384
956
  target_username: String,
957
+ target_usernames: T::Array[String],
385
958
  to_user: String,
386
959
  until_date: Date,
960
+ until_time:
961
+ XTwitterScraper::ExtractionEstimateCostParams::UntilTime::Variants,
387
962
  url: String,
963
+ username_contains: String,
388
964
  verified_only: T::Boolean,
965
+ verified_type: String,
966
+ within: String,
967
+ within_time: String,
389
968
  request_options: XTwitterScraper::RequestOptions::OrHash
390
969
  ).returns(T.attached_class)
391
970
  end
392
971
  def self.new(
393
972
  # Identifier for the extraction tool used to run a job.
394
973
  tool_type:,
395
- # Raw advanced query string appended to the estimate (tweet_search_extractor)
974
+ # Raw advanced search query appended as-is (tweet_search_extractor)
396
975
  advanced_query: nil,
397
- # Alternative words or quoted phrases for estimated results. Separate with spaces,
398
- # commas, or lines.
976
+ # Words or quoted phrases where any one can match. Separate with spaces, commas,
977
+ # or lines. (tweet_search_extractor)
399
978
  any_words: nil,
400
- # Geo bounding box used for estimation, e.g. -74.1 40.6 -73.9 40.8
401
- # (tweet_search_extractor)
979
+ # Bio terms separated by commas or lines.
980
+ bio_contains: nil,
981
+ # Return only Blue-verified Tweet authors.
982
+ blue_verified_only: nil,
983
+ # Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
402
984
  bounding_box: nil,
403
- # Cashtags applied to the estimate, separated by spaces, commas, or lines.
985
+ # Match the Tweet card name.
986
+ card_name: nil,
987
+ # Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
404
988
  cashtags: nil,
405
- # Conversation ID filter used for estimation (tweet_search_extractor)
989
+ # Reply collection strategy.
990
+ collection_strategy: nil,
991
+ # Conversation ID filter (tweet_search_extractor)
406
992
  conversation_id: nil,
407
- # Exact phrase filter for search estimation
993
+ # Merge duplicate results across collection targets.
994
+ dedupe_across_targets: nil,
995
+ # Keep target duplicates, first rows, or merged overlap.
996
+ dedupe_mode: nil,
997
+ # Exact phrase to match (tweet_search_extractor)
408
998
  exact_phrase: nil,
409
- # Words or quoted phrases excluded from estimated results. Separate with spaces,
410
- # commas, or lines.
999
+ # Exclude replies from the source author.
1000
+ exclude_original_author: nil,
1001
+ # Exclude a source application.
1002
+ exclude_source: nil,
1003
+ # Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
1004
+ # (tweet_search_extractor)
411
1005
  exclude_words: nil,
412
- # Estimate only tweets from this author username (tweet_search_extractor)
1006
+ # Filter by author username (tweet_search_extractor)
413
1007
  from_user: nil,
414
- # Hashtags applied to the estimate, separated by spaces, commas, or lines.
1008
+ # Match latitude, longitude, and radius.
1009
+ geocode: nil,
1010
+ # Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
415
1011
  hashtags: nil,
416
- # Estimate only replies to this tweet ID (tweet_search_extractor)
1012
+ # Require a profile location.
1013
+ has_location: nil,
1014
+ # Return only replies with media.
1015
+ has_media_only: nil,
1016
+ # Require a profile website.
1017
+ has_website: nil,
1018
+ # Include the source post in reply results.
1019
+ include_original_post: nil,
1020
+ # Add matching search terms to collection metadata.
1021
+ include_search_terms: nil,
1022
+ # Add source target metadata to each result.
1023
+ include_target_metadata: nil,
1024
+ # Only replies to this tweet ID (tweet_search_extractor)
417
1025
  in_reply_to_tweet_id: nil,
418
- # Language code used for estimate filtering (tweet_search_extractor)
1026
+ # Language code filter (tweet_search_extractor)
419
1027
  language: nil,
420
- # Estimate search results within this list ID (tweet_search_extractor)
1028
+ # Search within a list ID (tweet_search_extractor)
421
1029
  list_id: nil,
422
- # Media type used for estimate filtering (tweet_search_extractor)
1030
+ # Required profile location text.
1031
+ location_contains: nil,
1032
+ # Maximum nested reply depth.
1033
+ max_depth: nil,
1034
+ # Maximum follower count for profile results.
1035
+ max_followers: nil,
1036
+ # Maximum following count for profile results.
1037
+ max_following: nil,
1038
+ # Return Tweets older than this Tweet ID.
1039
+ max_id: nil,
1040
+ # Maximum results collected for each target.
1041
+ max_items_per_target: nil,
1042
+ # Maximum Tweet like count.
1043
+ max_likes: nil,
1044
+ # Reply pages collected for each target.
1045
+ max_pages_per_target: nil,
1046
+ # Maximum post count for profile results.
1047
+ max_posts: nil,
1048
+ # Maximum Tweet quote count.
1049
+ max_quotes: nil,
1050
+ # Maximum Tweet reply count.
1051
+ max_replies: nil,
1052
+ # Maximum Tweet repost count.
1053
+ max_retweets: nil,
1054
+ # Media type filter (tweet_search_extractor)
423
1055
  media_type: nil,
424
- # Estimate tweets mentioning this username (tweet_search_extractor)
1056
+ # Filter tweets mentioning a username (tweet_search_extractor)
425
1057
  mentioning: nil,
426
- # Minimum likes threshold for estimated results (tweet_search_extractor)
1058
+ # Minimum profile age in days.
1059
+ min_account_age_days: nil,
1060
+ # Minimum Tweet bookmark count.
1061
+ min_bookmarks: nil,
1062
+ # Minimum likes threshold (tweet_search_extractor)
427
1063
  min_faves: nil,
428
- # Minimum quote count threshold for estimated results (tweet_search_extractor)
1064
+ # Minimum follower count for profile results.
1065
+ min_followers: nil,
1066
+ # Minimum following count for profile results.
1067
+ min_following: nil,
1068
+ # Minimum post count for profile results.
1069
+ min_posts: nil,
1070
+ # Minimum quote count threshold (tweet_search_extractor)
429
1071
  min_quotes: nil,
430
- # Minimum replies threshold for estimated results (tweet_search_extractor)
1072
+ # Minimum replies threshold (tweet_search_extractor)
431
1073
  min_replies: nil,
432
- # Minimum retweets threshold for estimated results (tweet_search_extractor)
1074
+ # Minimum retweets threshold (tweet_search_extractor)
433
1075
  min_retweets: nil,
434
- # Estimate search results within this place ID (tweet_search_extractor)
1076
+ # Minimum Tweet view count.
1077
+ min_views: nil,
1078
+ # Only return native reposts.
1079
+ native_retweets: nil,
1080
+ # Match a place name.
1081
+ near: nil,
1082
+ # Only return news results.
1083
+ news: nil,
1084
+ # Shortcut for dedupeMode=merge.
1085
+ overlap_mode: nil,
1086
+ # Search within a place ID (tweet_search_extractor)
435
1087
  place: nil,
436
- # Estimate search results within this country code (tweet_search_extractor)
1088
+ # Search within a country code (tweet_search_extractor)
437
1089
  place_country: nil,
438
- # Geo point radius used for estimation, e.g. -73.99 40.73 25mi
439
- # (tweet_search_extractor)
1090
+ # Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
440
1091
  point_radius: nil,
441
- # Quote mode used for estimation (tweet_search_extractor)
1092
+ # Search ranking applied to every query.
1093
+ query_type: nil,
1094
+ # Quote mode (tweet_search_extractor)
442
1095
  quotes: nil,
443
- # Estimate only quotes of this tweet ID (tweet_search_extractor)
1096
+ # Only quotes of this tweet ID (tweet_search_extractor)
444
1097
  quotes_of_tweet_id: nil,
445
- # Reply mode used for estimation (tweet_search_extractor)
1098
+ # Profile relations processed within one job.
1099
+ relation_targets: nil,
1100
+ # Reply mode (tweet_search_extractor)
446
1101
  replies: nil,
447
- # Maximum number of results to estimate. When set, the estimate caps projected
448
- # results to this value.
1102
+ # Maximum number of results to extract. When set, the extraction stops after
1103
+ # reaching this limit.
449
1104
  results_limit: nil,
450
- # Retweet mode used for estimation (tweet_search_extractor)
1105
+ # Retweet mode (tweet_search_extractor)
451
1106
  retweets: nil,
452
- # Estimate only retweets of this tweet ID (tweet_search_extractor)
1107
+ # Only retweets of this tweet ID (tweet_search_extractor)
453
1108
  retweets_of_tweet_id: nil,
454
- # Query used to price tweet_search_extractor or community_search.
1109
+ # Enable the safe-search filter.
1110
+ safe: nil,
1111
+ # Reply depth scope.
1112
+ scope: nil,
1113
+ # Search queries processed as one collection job.
1114
+ search_queries: nil,
1115
+ # Required for tweet_search_extractor & community_search.
455
1116
  search_query: nil,
456
- # Estimate start date in YYYY-MM-DD format (tweet_search_extractor)
1117
+ # Start date YYYY-MM-DD (tweet_search_extractor)
457
1118
  since_date: nil,
458
- # Community ID used to price community_post_extractor or community_search.
1119
+ # Return Tweets newer than this Tweet ID.
1120
+ since_id: nil,
1121
+ # Reply start time as ISO 8601 or Unix seconds.
1122
+ since_time: nil,
1123
+ # Reply result order.
1124
+ sort: nil,
1125
+ # Match the source application.
1126
+ source: nil,
1127
+ # Resume one reply target from this cursor.
1128
+ start_cursor: nil,
1129
+ # Required for community_post_extractor & community_search.
459
1130
  target_community_id: nil,
460
- # List ID used to price list_follower_explorer, list_member_extractor, or
1131
+ # Community IDs processed as one collection job.
1132
+ target_community_ids: nil,
1133
+ # Required for list_follower_explorer, list_member_extractor &
461
1134
  # list_post_extractor.
462
1135
  target_list_id: nil,
463
- # Space ID used to price space_explorer.
1136
+ # List IDs processed as one collection job.
1137
+ target_list_ids: nil,
1138
+ # Mixed targets auto-routed within one job.
1139
+ targets: nil,
1140
+ # Required for space_explorer.
464
1141
  target_space_id: nil,
465
1142
  target_tweet_id: nil,
1143
+ # Tweet IDs processed as one collection job.
1144
+ target_tweet_ids: nil,
466
1145
  target_username: nil,
467
- # Estimate replies sent to this username (tweet_search_extractor)
1146
+ # Usernames processed as one collection job.
1147
+ target_usernames: nil,
1148
+ # Filter replies sent to a username (tweet_search_extractor)
468
1149
  to_user: nil,
469
- # Estimate end date in YYYY-MM-DD format (tweet_search_extractor)
1150
+ # End date YYYY-MM-DD (tweet_search_extractor)
470
1151
  until_date: nil,
471
- # URL substring or domain filter used for estimation (tweet_search_extractor)
1152
+ # Reply end time as ISO 8601 or Unix seconds.
1153
+ until_time: nil,
1154
+ # URL substring or domain filter (tweet_search_extractor)
472
1155
  url: nil,
473
- # Estimate only verified authors (tweet_search_extractor)
1156
+ # Required username text.
1157
+ username_contains: nil,
1158
+ # Only verified authors (tweet_search_extractor)
474
1159
  verified_only: nil,
1160
+ # Exact profile verification type.
1161
+ verified_type: nil,
1162
+ # Set the radius for the near filter.
1163
+ within: nil,
1164
+ # Match Tweets inside a recent time window.
1165
+ within_time: nil,
475
1166
  request_options: {}
476
1167
  )
477
1168
  end
@@ -483,46 +1174,118 @@ module XTwitterScraper
483
1174
  XTwitterScraper::ExtractionEstimateCostParams::ToolType::OrSymbol,
484
1175
  advanced_query: String,
485
1176
  any_words: String,
1177
+ bio_contains: String,
1178
+ blue_verified_only: T::Boolean,
486
1179
  bounding_box: String,
1180
+ card_name: String,
487
1181
  cashtags: String,
1182
+ collection_strategy:
1183
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::OrSymbol,
488
1184
  conversation_id: String,
1185
+ dedupe_across_targets: T::Boolean,
1186
+ dedupe_mode:
1187
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode::OrSymbol,
489
1188
  exact_phrase: String,
1189
+ exclude_original_author: T::Boolean,
1190
+ exclude_source: String,
490
1191
  exclude_words: String,
491
1192
  from_user: String,
1193
+ geocode: String,
492
1194
  hashtags: String,
1195
+ has_location: T::Boolean,
1196
+ has_media_only: T::Boolean,
1197
+ has_website: T::Boolean,
1198
+ include_original_post: T::Boolean,
1199
+ include_search_terms: T::Boolean,
1200
+ include_target_metadata: T::Boolean,
493
1201
  in_reply_to_tweet_id: String,
494
1202
  language: String,
495
1203
  list_id: String,
1204
+ location_contains: String,
1205
+ max_depth: Integer,
1206
+ max_followers: Integer,
1207
+ max_following: Integer,
1208
+ max_id: String,
1209
+ max_items_per_target: Integer,
1210
+ max_likes: Integer,
1211
+ max_pages_per_target: Integer,
1212
+ max_posts: Integer,
1213
+ max_quotes: Integer,
1214
+ max_replies: Integer,
1215
+ max_retweets: Integer,
496
1216
  media_type:
497
1217
  XTwitterScraper::ExtractionEstimateCostParams::MediaType::OrSymbol,
498
1218
  mentioning: String,
1219
+ min_account_age_days: Integer,
1220
+ min_bookmarks: Integer,
499
1221
  min_faves: Integer,
1222
+ min_followers: Integer,
1223
+ min_following: Integer,
1224
+ min_posts: Integer,
500
1225
  min_quotes: Integer,
501
1226
  min_replies: Integer,
502
1227
  min_retweets: Integer,
1228
+ min_views: Integer,
1229
+ native_retweets: T::Boolean,
1230
+ near: String,
1231
+ news: T::Boolean,
1232
+ overlap_mode: T::Boolean,
503
1233
  place: String,
504
1234
  place_country: String,
505
1235
  point_radius: String,
1236
+ query_type:
1237
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType::OrSymbol,
506
1238
  quotes:
507
1239
  XTwitterScraper::ExtractionEstimateCostParams::Quotes::OrSymbol,
508
1240
  quotes_of_tweet_id: String,
1241
+ relation_targets:
1242
+ T::Array[
1243
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget
1244
+ ],
509
1245
  replies:
510
1246
  XTwitterScraper::ExtractionEstimateCostParams::Replies::OrSymbol,
511
1247
  results_limit: Integer,
512
1248
  retweets:
513
1249
  XTwitterScraper::ExtractionEstimateCostParams::Retweets::OrSymbol,
514
1250
  retweets_of_tweet_id: String,
1251
+ safe: T::Boolean,
1252
+ scope:
1253
+ XTwitterScraper::ExtractionEstimateCostParams::Scope::OrSymbol,
1254
+ search_queries: T::Array[String],
515
1255
  search_query: String,
516
1256
  since_date: Date,
1257
+ since_id: String,
1258
+ since_time:
1259
+ XTwitterScraper::ExtractionEstimateCostParams::SinceTime::Variants,
1260
+ sort: XTwitterScraper::ExtractionEstimateCostParams::Sort::OrSymbol,
1261
+ source: String,
1262
+ start_cursor: String,
517
1263
  target_community_id: String,
1264
+ target_community_ids: T::Array[String],
518
1265
  target_list_id: String,
1266
+ target_list_ids: T::Array[String],
1267
+ targets:
1268
+ T::Array[
1269
+ T.any(
1270
+ String,
1271
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1
1272
+ )
1273
+ ],
519
1274
  target_space_id: String,
520
1275
  target_tweet_id: String,
1276
+ target_tweet_ids: T::Array[String],
521
1277
  target_username: String,
1278
+ target_usernames: T::Array[String],
522
1279
  to_user: String,
523
1280
  until_date: Date,
1281
+ until_time:
1282
+ XTwitterScraper::ExtractionEstimateCostParams::UntilTime::Variants,
524
1283
  url: String,
1284
+ username_contains: String,
525
1285
  verified_only: T::Boolean,
1286
+ verified_type: String,
1287
+ within: String,
1288
+ within_time: String,
526
1289
  request_options: XTwitterScraper::RequestOptions
527
1290
  }
528
1291
  )
@@ -670,7 +1433,97 @@ module XTwitterScraper
670
1433
  end
671
1434
  end
672
1435
 
673
- # Media type used for estimate filtering (tweet_search_extractor)
1436
+ # Reply collection strategy.
1437
+ module CollectionStrategy
1438
+ extend XTwitterScraper::Internal::Type::Enum
1439
+
1440
+ TaggedSymbol =
1441
+ T.type_alias do
1442
+ T.all(
1443
+ Symbol,
1444
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy
1445
+ )
1446
+ end
1447
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1448
+
1449
+ AUTO =
1450
+ T.let(
1451
+ :auto,
1452
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::TaggedSymbol
1453
+ )
1454
+ COMPLETE =
1455
+ T.let(
1456
+ :complete,
1457
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::TaggedSymbol
1458
+ )
1459
+ DIRECT =
1460
+ T.let(
1461
+ :direct,
1462
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::TaggedSymbol
1463
+ )
1464
+ SEARCH =
1465
+ T.let(
1466
+ :search,
1467
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::TaggedSymbol
1468
+ )
1469
+ THREAD =
1470
+ T.let(
1471
+ :thread,
1472
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::TaggedSymbol
1473
+ )
1474
+
1475
+ sig do
1476
+ override.returns(
1477
+ T::Array[
1478
+ XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy::TaggedSymbol
1479
+ ]
1480
+ )
1481
+ end
1482
+ def self.values
1483
+ end
1484
+ end
1485
+
1486
+ # Keep target duplicates, first rows, or merged overlap.
1487
+ module DedupeMode
1488
+ extend XTwitterScraper::Internal::Type::Enum
1489
+
1490
+ TaggedSymbol =
1491
+ T.type_alias do
1492
+ T.all(
1493
+ Symbol,
1494
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode
1495
+ )
1496
+ end
1497
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1498
+
1499
+ NONE =
1500
+ T.let(
1501
+ :none,
1502
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode::TaggedSymbol
1503
+ )
1504
+ FIRST =
1505
+ T.let(
1506
+ :first,
1507
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode::TaggedSymbol
1508
+ )
1509
+ MERGE =
1510
+ T.let(
1511
+ :merge,
1512
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode::TaggedSymbol
1513
+ )
1514
+
1515
+ sig do
1516
+ override.returns(
1517
+ T::Array[
1518
+ XTwitterScraper::ExtractionEstimateCostParams::DedupeMode::TaggedSymbol
1519
+ ]
1520
+ )
1521
+ end
1522
+ def self.values
1523
+ end
1524
+ end
1525
+
1526
+ # Media type filter (tweet_search_extractor)
674
1527
  module MediaType
675
1528
  extend XTwitterScraper::Internal::Type::Enum
676
1529
 
@@ -725,7 +1578,47 @@ module XTwitterScraper
725
1578
  end
726
1579
  end
727
1580
 
728
- # Quote mode used for estimation (tweet_search_extractor)
1581
+ # Search ranking applied to every query.
1582
+ module QueryType
1583
+ extend XTwitterScraper::Internal::Type::Enum
1584
+
1585
+ TaggedSymbol =
1586
+ T.type_alias do
1587
+ T.all(
1588
+ Symbol,
1589
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType
1590
+ )
1591
+ end
1592
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1593
+
1594
+ LATEST =
1595
+ T.let(
1596
+ :Latest,
1597
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType::TaggedSymbol
1598
+ )
1599
+ TOP =
1600
+ T.let(
1601
+ :Top,
1602
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType::TaggedSymbol
1603
+ )
1604
+ BOTH =
1605
+ T.let(
1606
+ :Both,
1607
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType::TaggedSymbol
1608
+ )
1609
+
1610
+ sig do
1611
+ override.returns(
1612
+ T::Array[
1613
+ XTwitterScraper::ExtractionEstimateCostParams::QueryType::TaggedSymbol
1614
+ ]
1615
+ )
1616
+ end
1617
+ def self.values
1618
+ end
1619
+ end
1620
+
1621
+ # Quote mode (tweet_search_extractor)
729
1622
  module Quotes
730
1623
  extend XTwitterScraper::Internal::Type::Enum
731
1624
 
@@ -762,7 +1655,104 @@ module XTwitterScraper
762
1655
  end
763
1656
  end
764
1657
 
765
- # Reply mode used for estimation (tweet_search_extractor)
1658
+ class RelationTarget < XTwitterScraper::Internal::Type::BaseModel
1659
+ OrHash =
1660
+ T.type_alias do
1661
+ T.any(
1662
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget,
1663
+ XTwitterScraper::Internal::AnyHash
1664
+ )
1665
+ end
1666
+
1667
+ sig do
1668
+ returns(
1669
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::OrSymbol
1670
+ )
1671
+ end
1672
+ attr_accessor :relation
1673
+
1674
+ sig { returns(String) }
1675
+ attr_accessor :value
1676
+
1677
+ # One target and relation in a mixed profile collection.
1678
+ sig do
1679
+ params(
1680
+ relation:
1681
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::OrSymbol,
1682
+ value: String
1683
+ ).returns(T.attached_class)
1684
+ end
1685
+ def self.new(relation:, value:)
1686
+ end
1687
+
1688
+ sig do
1689
+ override.returns(
1690
+ {
1691
+ relation:
1692
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::OrSymbol,
1693
+ value: String
1694
+ }
1695
+ )
1696
+ end
1697
+ def to_hash
1698
+ end
1699
+
1700
+ module Relation
1701
+ extend XTwitterScraper::Internal::Type::Enum
1702
+
1703
+ TaggedSymbol =
1704
+ T.type_alias do
1705
+ T.all(
1706
+ Symbol,
1707
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation
1708
+ )
1709
+ end
1710
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1711
+
1712
+ COMMUNITY_MEMBERS =
1713
+ T.let(
1714
+ :community_members,
1715
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::TaggedSymbol
1716
+ )
1717
+ FOLLOWERS =
1718
+ T.let(
1719
+ :followers,
1720
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::TaggedSymbol
1721
+ )
1722
+ FOLLOWING =
1723
+ T.let(
1724
+ :following,
1725
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::TaggedSymbol
1726
+ )
1727
+ LIST_FOLLOWERS =
1728
+ T.let(
1729
+ :list_followers,
1730
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::TaggedSymbol
1731
+ )
1732
+ LIST_MEMBERS =
1733
+ T.let(
1734
+ :list_members,
1735
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::TaggedSymbol
1736
+ )
1737
+ VERIFIED_FOLLOWERS =
1738
+ T.let(
1739
+ :verified_followers,
1740
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::TaggedSymbol
1741
+ )
1742
+
1743
+ sig do
1744
+ override.returns(
1745
+ T::Array[
1746
+ XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation::TaggedSymbol
1747
+ ]
1748
+ )
1749
+ end
1750
+ def self.values
1751
+ end
1752
+ end
1753
+ end
1754
+
1755
+ # Reply mode (tweet_search_extractor)
766
1756
  module Replies
767
1757
  extend XTwitterScraper::Internal::Type::Enum
768
1758
 
@@ -802,7 +1792,7 @@ module XTwitterScraper
802
1792
  end
803
1793
  end
804
1794
 
805
- # Retweet mode used for estimation (tweet_search_extractor)
1795
+ # Retweet mode (tweet_search_extractor)
806
1796
  module Retweets
807
1797
  extend XTwitterScraper::Internal::Type::Enum
808
1798
 
@@ -841,6 +1831,268 @@ module XTwitterScraper
841
1831
  def self.values
842
1832
  end
843
1833
  end
1834
+
1835
+ # Reply depth scope.
1836
+ module Scope
1837
+ extend XTwitterScraper::Internal::Type::Enum
1838
+
1839
+ TaggedSymbol =
1840
+ T.type_alias do
1841
+ T.all(Symbol, XTwitterScraper::ExtractionEstimateCostParams::Scope)
1842
+ end
1843
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1844
+
1845
+ ALL =
1846
+ T.let(
1847
+ :all,
1848
+ XTwitterScraper::ExtractionEstimateCostParams::Scope::TaggedSymbol
1849
+ )
1850
+ DIRECT =
1851
+ T.let(
1852
+ :direct,
1853
+ XTwitterScraper::ExtractionEstimateCostParams::Scope::TaggedSymbol
1854
+ )
1855
+ NESTED =
1856
+ T.let(
1857
+ :nested,
1858
+ XTwitterScraper::ExtractionEstimateCostParams::Scope::TaggedSymbol
1859
+ )
1860
+
1861
+ sig do
1862
+ override.returns(
1863
+ T::Array[
1864
+ XTwitterScraper::ExtractionEstimateCostParams::Scope::TaggedSymbol
1865
+ ]
1866
+ )
1867
+ end
1868
+ def self.values
1869
+ end
1870
+ end
1871
+
1872
+ # Reply start time as ISO 8601 or Unix seconds.
1873
+ module SinceTime
1874
+ extend XTwitterScraper::Internal::Type::Union
1875
+
1876
+ Variants = T.type_alias { T.any(Time, Integer) }
1877
+
1878
+ sig do
1879
+ override.returns(
1880
+ T::Array[
1881
+ XTwitterScraper::ExtractionEstimateCostParams::SinceTime::Variants
1882
+ ]
1883
+ )
1884
+ end
1885
+ def self.variants
1886
+ end
1887
+ end
1888
+
1889
+ # Reply result order.
1890
+ module Sort
1891
+ extend XTwitterScraper::Internal::Type::Enum
1892
+
1893
+ TaggedSymbol =
1894
+ T.type_alias do
1895
+ T.all(Symbol, XTwitterScraper::ExtractionEstimateCostParams::Sort)
1896
+ end
1897
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1898
+
1899
+ RELEVANCE =
1900
+ T.let(
1901
+ :relevance,
1902
+ XTwitterScraper::ExtractionEstimateCostParams::Sort::TaggedSymbol
1903
+ )
1904
+ LATEST =
1905
+ T.let(
1906
+ :latest,
1907
+ XTwitterScraper::ExtractionEstimateCostParams::Sort::TaggedSymbol
1908
+ )
1909
+ OLDEST =
1910
+ T.let(
1911
+ :oldest,
1912
+ XTwitterScraper::ExtractionEstimateCostParams::Sort::TaggedSymbol
1913
+ )
1914
+ LIKES =
1915
+ T.let(
1916
+ :likes,
1917
+ XTwitterScraper::ExtractionEstimateCostParams::Sort::TaggedSymbol
1918
+ )
1919
+
1920
+ sig do
1921
+ override.returns(
1922
+ T::Array[
1923
+ XTwitterScraper::ExtractionEstimateCostParams::Sort::TaggedSymbol
1924
+ ]
1925
+ )
1926
+ end
1927
+ def self.values
1928
+ end
1929
+ end
1930
+
1931
+ # One auto-routed target in a mixed Tweet collection.
1932
+ module Target
1933
+ extend XTwitterScraper::Internal::Type::Union
1934
+
1935
+ Variants =
1936
+ T.type_alias do
1937
+ T.any(
1938
+ String,
1939
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1
1940
+ )
1941
+ end
1942
+
1943
+ class UnionMember1 < XTwitterScraper::Internal::Type::BaseModel
1944
+ OrHash =
1945
+ T.type_alias do
1946
+ T.any(
1947
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1,
1948
+ XTwitterScraper::Internal::AnyHash
1949
+ )
1950
+ end
1951
+
1952
+ sig do
1953
+ returns(
1954
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::OrSymbol
1955
+ )
1956
+ end
1957
+ attr_accessor :kind
1958
+
1959
+ sig { returns(String) }
1960
+ attr_accessor :value
1961
+
1962
+ sig do
1963
+ params(
1964
+ kind:
1965
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::OrSymbol,
1966
+ value: String
1967
+ ).returns(T.attached_class)
1968
+ end
1969
+ def self.new(kind:, value:)
1970
+ end
1971
+
1972
+ sig do
1973
+ override.returns(
1974
+ {
1975
+ kind:
1976
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::OrSymbol,
1977
+ value: String
1978
+ }
1979
+ )
1980
+ end
1981
+ def to_hash
1982
+ end
1983
+
1984
+ module Kind
1985
+ extend XTwitterScraper::Internal::Type::Enum
1986
+
1987
+ TaggedSymbol =
1988
+ T.type_alias do
1989
+ T.all(
1990
+ Symbol,
1991
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind
1992
+ )
1993
+ end
1994
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1995
+
1996
+ FAVORITERS =
1997
+ T.let(
1998
+ :favoriters,
1999
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2000
+ )
2001
+ LIST =
2002
+ T.let(
2003
+ :list,
2004
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2005
+ )
2006
+ PROFILE =
2007
+ T.let(
2008
+ :profile,
2009
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2010
+ )
2011
+ PROFILE_LIKES =
2012
+ T.let(
2013
+ :profile_likes,
2014
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2015
+ )
2016
+ PROFILE_MEDIA =
2017
+ T.let(
2018
+ :profile_media,
2019
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2020
+ )
2021
+ PROFILE_REPLIES =
2022
+ T.let(
2023
+ :profile_replies,
2024
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2025
+ )
2026
+ QUOTES =
2027
+ T.let(
2028
+ :quotes,
2029
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2030
+ )
2031
+ REPLIES =
2032
+ T.let(
2033
+ :replies,
2034
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2035
+ )
2036
+ RETWEETERS =
2037
+ T.let(
2038
+ :retweeters,
2039
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2040
+ )
2041
+ SEARCH =
2042
+ T.let(
2043
+ :search,
2044
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2045
+ )
2046
+ THREAD =
2047
+ T.let(
2048
+ :thread,
2049
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2050
+ )
2051
+ TWEET =
2052
+ T.let(
2053
+ :tweet,
2054
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2055
+ )
2056
+
2057
+ sig do
2058
+ override.returns(
2059
+ T::Array[
2060
+ XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind::TaggedSymbol
2061
+ ]
2062
+ )
2063
+ end
2064
+ def self.values
2065
+ end
2066
+ end
2067
+ end
2068
+
2069
+ sig do
2070
+ override.returns(
2071
+ T::Array[
2072
+ XTwitterScraper::ExtractionEstimateCostParams::Target::Variants
2073
+ ]
2074
+ )
2075
+ end
2076
+ def self.variants
2077
+ end
2078
+ end
2079
+
2080
+ # Reply end time as ISO 8601 or Unix seconds.
2081
+ module UntilTime
2082
+ extend XTwitterScraper::Internal::Type::Union
2083
+
2084
+ Variants = T.type_alias { T.any(Time, Integer) }
2085
+
2086
+ sig do
2087
+ override.returns(
2088
+ T::Array[
2089
+ XTwitterScraper::ExtractionEstimateCostParams::UntilTime::Variants
2090
+ ]
2091
+ )
2092
+ end
2093
+ def self.variants
2094
+ end
2095
+ end
844
2096
  end
845
2097
  end
846
2098
  end