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
@@ -17,6 +17,12 @@ module XTwitterScraper
17
17
  # @return [Symbol, XTwitterScraper::Models::ExtractionRunParams::ToolType]
18
18
  required :tool_type, enum: -> { XTwitterScraper::ExtractionRunParams::ToolType }, api_name: :toolType
19
19
 
20
+ # @!attribute dry_run
21
+ # Estimate cost without creating an extraction.
22
+ #
23
+ # @return [Boolean, nil]
24
+ optional :dry_run, XTwitterScraper::Internal::Type::Boolean
25
+
20
26
  # @!attribute advanced_query
21
27
  # Raw advanced search query appended as-is (tweet_search_extractor)
22
28
  #
@@ -30,30 +36,86 @@ module XTwitterScraper
30
36
  # @return [String, nil]
31
37
  optional :any_words, String, api_name: :anyWords
32
38
 
39
+ # @!attribute bio_contains
40
+ # Bio terms separated by commas or lines.
41
+ #
42
+ # @return [String, nil]
43
+ optional :bio_contains, String, api_name: :bioContains
44
+
45
+ # @!attribute blue_verified_only
46
+ # Return only Blue-verified Tweet authors.
47
+ #
48
+ # @return [Boolean, nil]
49
+ optional :blue_verified_only, XTwitterScraper::Internal::Type::Boolean, api_name: :blueVerifiedOnly
50
+
33
51
  # @!attribute bounding_box
34
52
  # Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
35
53
  #
36
54
  # @return [String, nil]
37
55
  optional :bounding_box, String, api_name: :boundingBox
38
56
 
57
+ # @!attribute card_name
58
+ # Match the Tweet card name.
59
+ #
60
+ # @return [String, nil]
61
+ optional :card_name, String, api_name: :cardName
62
+
39
63
  # @!attribute cashtags
40
64
  # Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
41
65
  #
42
66
  # @return [String, nil]
43
67
  optional :cashtags, String
44
68
 
69
+ # @!attribute collection_strategy
70
+ # Reply collection strategy.
71
+ #
72
+ # @return [Symbol, XTwitterScraper::Models::ExtractionRunParams::CollectionStrategy, nil]
73
+ optional :collection_strategy,
74
+ enum: -> { XTwitterScraper::ExtractionRunParams::CollectionStrategy },
75
+ api_name: :collectionStrategy
76
+
45
77
  # @!attribute conversation_id
46
78
  # Conversation ID filter (tweet_search_extractor)
47
79
  #
48
80
  # @return [String, nil]
49
81
  optional :conversation_id, String, api_name: :conversationId
50
82
 
83
+ # @!attribute dedupe_across_targets
84
+ # Merge duplicate results across collection targets.
85
+ #
86
+ # @return [Boolean, nil]
87
+ optional :dedupe_across_targets,
88
+ XTwitterScraper::Internal::Type::Boolean,
89
+ api_name: :dedupeAcrossTargets
90
+
91
+ # @!attribute dedupe_mode
92
+ # Keep target duplicates, first rows, or merged overlap.
93
+ #
94
+ # @return [Symbol, XTwitterScraper::Models::ExtractionRunParams::DedupeMode, nil]
95
+ optional :dedupe_mode,
96
+ enum: -> { XTwitterScraper::ExtractionRunParams::DedupeMode },
97
+ api_name: :dedupeMode
98
+
51
99
  # @!attribute exact_phrase
52
100
  # Exact phrase to match (tweet_search_extractor)
53
101
  #
54
102
  # @return [String, nil]
55
103
  optional :exact_phrase, String, api_name: :exactPhrase
56
104
 
105
+ # @!attribute exclude_original_author
106
+ # Exclude replies from the source author.
107
+ #
108
+ # @return [Boolean, nil]
109
+ optional :exclude_original_author,
110
+ XTwitterScraper::Internal::Type::Boolean,
111
+ api_name: :excludeOriginalAuthor
112
+
113
+ # @!attribute exclude_source
114
+ # Exclude a source application.
115
+ #
116
+ # @return [String, nil]
117
+ optional :exclude_source, String, api_name: :excludeSource
118
+
57
119
  # @!attribute exclude_words
58
120
  # Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
59
121
  # (tweet_search_extractor)
@@ -67,12 +129,58 @@ module XTwitterScraper
67
129
  # @return [String, nil]
68
130
  optional :from_user, String, api_name: :fromUser
69
131
 
132
+ # @!attribute geocode
133
+ # Match latitude, longitude, and radius.
134
+ #
135
+ # @return [String, nil]
136
+ optional :geocode, String
137
+
70
138
  # @!attribute hashtags
71
139
  # Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
72
140
  #
73
141
  # @return [String, nil]
74
142
  optional :hashtags, String
75
143
 
144
+ # @!attribute has_location
145
+ # Require a profile location.
146
+ #
147
+ # @return [Boolean, nil]
148
+ optional :has_location, XTwitterScraper::Internal::Type::Boolean, api_name: :hasLocation
149
+
150
+ # @!attribute has_media_only
151
+ # Return only replies with media.
152
+ #
153
+ # @return [Boolean, nil]
154
+ optional :has_media_only, XTwitterScraper::Internal::Type::Boolean, api_name: :hasMediaOnly
155
+
156
+ # @!attribute has_website
157
+ # Require a profile website.
158
+ #
159
+ # @return [Boolean, nil]
160
+ optional :has_website, XTwitterScraper::Internal::Type::Boolean, api_name: :hasWebsite
161
+
162
+ # @!attribute include_original_post
163
+ # Include the source post in reply results.
164
+ #
165
+ # @return [Boolean, nil]
166
+ optional :include_original_post,
167
+ XTwitterScraper::Internal::Type::Boolean,
168
+ api_name: :includeOriginalPost
169
+
170
+ # @!attribute include_search_terms
171
+ # Add matching search terms to collection metadata.
172
+ #
173
+ # @return [Boolean, nil]
174
+ optional :include_search_terms, XTwitterScraper::Internal::Type::Boolean, api_name: :includeSearchTerms
175
+
176
+ # @!attribute include_target_metadata
177
+ # Add source target metadata to each result.
178
+ #
179
+ # @return [Boolean, nil]
180
+ optional :include_target_metadata,
181
+ XTwitterScraper::Internal::Type::Boolean,
182
+ api_name: :includeTargetMetadata
183
+
76
184
  # @!attribute in_reply_to_tweet_id
77
185
  # Only replies to this tweet ID (tweet_search_extractor)
78
186
  #
@@ -91,6 +199,78 @@ module XTwitterScraper
91
199
  # @return [String, nil]
92
200
  optional :list_id, String, api_name: :listId
93
201
 
202
+ # @!attribute location_contains
203
+ # Required profile location text.
204
+ #
205
+ # @return [String, nil]
206
+ optional :location_contains, String, api_name: :locationContains
207
+
208
+ # @!attribute max_depth
209
+ # Maximum nested reply depth.
210
+ #
211
+ # @return [Integer, nil]
212
+ optional :max_depth, Integer, api_name: :maxDepth
213
+
214
+ # @!attribute max_followers
215
+ # Maximum follower count for profile results.
216
+ #
217
+ # @return [Integer, nil]
218
+ optional :max_followers, Integer, api_name: :maxFollowers
219
+
220
+ # @!attribute max_following
221
+ # Maximum following count for profile results.
222
+ #
223
+ # @return [Integer, nil]
224
+ optional :max_following, Integer, api_name: :maxFollowing
225
+
226
+ # @!attribute max_id
227
+ # Return Tweets older than this Tweet ID.
228
+ #
229
+ # @return [String, nil]
230
+ optional :max_id, String, api_name: :maxId
231
+
232
+ # @!attribute max_items_per_target
233
+ # Maximum results collected for each target.
234
+ #
235
+ # @return [Integer, nil]
236
+ optional :max_items_per_target, Integer, api_name: :maxItemsPerTarget
237
+
238
+ # @!attribute max_likes
239
+ # Maximum Tweet like count.
240
+ #
241
+ # @return [Integer, nil]
242
+ optional :max_likes, Integer, api_name: :maxLikes
243
+
244
+ # @!attribute max_pages_per_target
245
+ # Reply pages collected for each target.
246
+ #
247
+ # @return [Integer, nil]
248
+ optional :max_pages_per_target, Integer, api_name: :maxPagesPerTarget
249
+
250
+ # @!attribute max_posts
251
+ # Maximum post count for profile results.
252
+ #
253
+ # @return [Integer, nil]
254
+ optional :max_posts, Integer, api_name: :maxPosts
255
+
256
+ # @!attribute max_quotes
257
+ # Maximum Tweet quote count.
258
+ #
259
+ # @return [Integer, nil]
260
+ optional :max_quotes, Integer, api_name: :maxQuotes
261
+
262
+ # @!attribute max_replies
263
+ # Maximum Tweet reply count.
264
+ #
265
+ # @return [Integer, nil]
266
+ optional :max_replies, Integer, api_name: :maxReplies
267
+
268
+ # @!attribute max_retweets
269
+ # Maximum Tweet repost count.
270
+ #
271
+ # @return [Integer, nil]
272
+ optional :max_retweets, Integer, api_name: :maxRetweets
273
+
94
274
  # @!attribute media_type
95
275
  # Media type filter (tweet_search_extractor)
96
276
  #
@@ -103,12 +283,42 @@ module XTwitterScraper
103
283
  # @return [String, nil]
104
284
  optional :mentioning, String
105
285
 
286
+ # @!attribute min_account_age_days
287
+ # Minimum profile age in days.
288
+ #
289
+ # @return [Integer, nil]
290
+ optional :min_account_age_days, Integer, api_name: :minAccountAgeDays
291
+
292
+ # @!attribute min_bookmarks
293
+ # Minimum Tweet bookmark count.
294
+ #
295
+ # @return [Integer, nil]
296
+ optional :min_bookmarks, Integer, api_name: :minBookmarks
297
+
106
298
  # @!attribute min_faves
107
299
  # Minimum likes threshold (tweet_search_extractor)
108
300
  #
109
301
  # @return [Integer, nil]
110
302
  optional :min_faves, Integer, api_name: :minFaves
111
303
 
304
+ # @!attribute min_followers
305
+ # Minimum follower count for profile results.
306
+ #
307
+ # @return [Integer, nil]
308
+ optional :min_followers, Integer, api_name: :minFollowers
309
+
310
+ # @!attribute min_following
311
+ # Minimum following count for profile results.
312
+ #
313
+ # @return [Integer, nil]
314
+ optional :min_following, Integer, api_name: :minFollowing
315
+
316
+ # @!attribute min_posts
317
+ # Minimum post count for profile results.
318
+ #
319
+ # @return [Integer, nil]
320
+ optional :min_posts, Integer, api_name: :minPosts
321
+
112
322
  # @!attribute min_quotes
113
323
  # Minimum quote count threshold (tweet_search_extractor)
114
324
  #
@@ -127,6 +337,36 @@ module XTwitterScraper
127
337
  # @return [Integer, nil]
128
338
  optional :min_retweets, Integer, api_name: :minRetweets
129
339
 
340
+ # @!attribute min_views
341
+ # Minimum Tweet view count.
342
+ #
343
+ # @return [Integer, nil]
344
+ optional :min_views, Integer, api_name: :minViews
345
+
346
+ # @!attribute native_retweets
347
+ # Only return native reposts.
348
+ #
349
+ # @return [Boolean, nil]
350
+ optional :native_retweets, XTwitterScraper::Internal::Type::Boolean, api_name: :nativeRetweets
351
+
352
+ # @!attribute near
353
+ # Match a place name.
354
+ #
355
+ # @return [String, nil]
356
+ optional :near, String
357
+
358
+ # @!attribute news
359
+ # Only return news results.
360
+ #
361
+ # @return [Boolean, nil]
362
+ optional :news, XTwitterScraper::Internal::Type::Boolean
363
+
364
+ # @!attribute overlap_mode
365
+ # Shortcut for dedupeMode=merge.
366
+ #
367
+ # @return [Boolean, nil]
368
+ optional :overlap_mode, XTwitterScraper::Internal::Type::Boolean, api_name: :overlapMode
369
+
130
370
  # @!attribute place
131
371
  # Search within a place ID (tweet_search_extractor)
132
372
  #
@@ -145,6 +385,12 @@ module XTwitterScraper
145
385
  # @return [String, nil]
146
386
  optional :point_radius, String, api_name: :pointRadius
147
387
 
388
+ # @!attribute query_type
389
+ # Search ranking applied to every query.
390
+ #
391
+ # @return [Symbol, XTwitterScraper::Models::ExtractionRunParams::QueryType, nil]
392
+ optional :query_type, enum: -> { XTwitterScraper::ExtractionRunParams::QueryType }, api_name: :queryType
393
+
148
394
  # @!attribute quotes
149
395
  # Quote mode (tweet_search_extractor)
150
396
  #
@@ -157,6 +403,16 @@ module XTwitterScraper
157
403
  # @return [String, nil]
158
404
  optional :quotes_of_tweet_id, String, api_name: :quotesOfTweetId
159
405
 
406
+ # @!attribute relation_targets
407
+ # Profile relations processed within one job.
408
+ #
409
+ # @return [Array<XTwitterScraper::Models::ExtractionRunParams::RelationTarget>, nil]
410
+ optional :relation_targets,
411
+ -> {
412
+ XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::ExtractionRunParams::RelationTarget]
413
+ },
414
+ api_name: :relationTargets
415
+
160
416
  # @!attribute replies
161
417
  # Reply mode (tweet_search_extractor)
162
418
  #
@@ -182,6 +438,24 @@ module XTwitterScraper
182
438
  # @return [String, nil]
183
439
  optional :retweets_of_tweet_id, String, api_name: :retweetsOfTweetId
184
440
 
441
+ # @!attribute safe
442
+ # Enable the safe-search filter.
443
+ #
444
+ # @return [Boolean, nil]
445
+ optional :safe, XTwitterScraper::Internal::Type::Boolean
446
+
447
+ # @!attribute scope
448
+ # Reply depth scope.
449
+ #
450
+ # @return [Symbol, XTwitterScraper::Models::ExtractionRunParams::Scope, nil]
451
+ optional :scope, enum: -> { XTwitterScraper::ExtractionRunParams::Scope }
452
+
453
+ # @!attribute search_queries
454
+ # Search queries processed as one collection job.
455
+ #
456
+ # @return [Array<String>, nil]
457
+ optional :search_queries, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :searchQueries
458
+
185
459
  # @!attribute search_query
186
460
  # Required for tweet_search_extractor & community_search.
187
461
  #
@@ -194,12 +468,54 @@ module XTwitterScraper
194
468
  # @return [Date, nil]
195
469
  optional :since_date, Date, api_name: :sinceDate
196
470
 
471
+ # @!attribute since_id
472
+ # Return Tweets newer than this Tweet ID.
473
+ #
474
+ # @return [String, nil]
475
+ optional :since_id, String, api_name: :sinceId
476
+
477
+ # @!attribute since_time
478
+ # Reply start time as ISO 8601 or Unix seconds.
479
+ #
480
+ # @return [Time, Integer, nil]
481
+ optional :since_time,
482
+ union: -> {
483
+ XTwitterScraper::ExtractionRunParams::SinceTime
484
+ },
485
+ api_name: :sinceTime
486
+
487
+ # @!attribute sort
488
+ # Reply result order.
489
+ #
490
+ # @return [Symbol, XTwitterScraper::Models::ExtractionRunParams::Sort, nil]
491
+ optional :sort, enum: -> { XTwitterScraper::ExtractionRunParams::Sort }
492
+
493
+ # @!attribute source
494
+ # Match the source application.
495
+ #
496
+ # @return [String, nil]
497
+ optional :source, String
498
+
499
+ # @!attribute start_cursor
500
+ # Resume one reply target from this cursor.
501
+ #
502
+ # @return [String, nil]
503
+ optional :start_cursor, String, api_name: :startCursor
504
+
197
505
  # @!attribute target_community_id
198
506
  # Required for community_post_extractor & community_search.
199
507
  #
200
508
  # @return [String, nil]
201
509
  optional :target_community_id, String, api_name: :targetCommunityId
202
510
 
511
+ # @!attribute target_community_ids
512
+ # Community IDs processed as one collection job.
513
+ #
514
+ # @return [Array<String>, nil]
515
+ optional :target_community_ids,
516
+ XTwitterScraper::Internal::Type::ArrayOf[String],
517
+ api_name: :targetCommunityIds
518
+
203
519
  # @!attribute target_list_id
204
520
  # Required for list_follower_explorer, list_member_extractor &
205
521
  # list_post_extractor.
@@ -207,6 +523,19 @@ module XTwitterScraper
207
523
  # @return [String, nil]
208
524
  optional :target_list_id, String, api_name: :targetListId
209
525
 
526
+ # @!attribute target_list_ids
527
+ # List IDs processed as one collection job.
528
+ #
529
+ # @return [Array<String>, nil]
530
+ optional :target_list_ids, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetListIds
531
+
532
+ # @!attribute targets
533
+ # Mixed targets auto-routed within one job.
534
+ #
535
+ # @return [Array<String, XTwitterScraper::Models::ExtractionRunParams::Target::UnionMember1>, nil]
536
+ optional :targets,
537
+ -> { XTwitterScraper::Internal::Type::ArrayOf[union: XTwitterScraper::ExtractionRunParams::Target] }
538
+
210
539
  # @!attribute target_space_id
211
540
  # Required for space_explorer.
212
541
  #
@@ -218,11 +547,23 @@ module XTwitterScraper
218
547
  # @return [String, nil]
219
548
  optional :target_tweet_id, String, api_name: :targetTweetId
220
549
 
550
+ # @!attribute target_tweet_ids
551
+ # Tweet IDs processed as one collection job.
552
+ #
553
+ # @return [Array<String>, nil]
554
+ optional :target_tweet_ids, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetTweetIds
555
+
221
556
  # @!attribute target_username
222
557
  #
223
558
  # @return [String, nil]
224
559
  optional :target_username, String, api_name: :targetUsername
225
560
 
561
+ # @!attribute target_usernames
562
+ # Usernames processed as one collection job.
563
+ #
564
+ # @return [Array<String>, nil]
565
+ optional :target_usernames, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetUsernames
566
+
226
567
  # @!attribute to_user
227
568
  # Filter replies sent to a username (tweet_search_extractor)
228
569
  #
@@ -235,70 +576,184 @@ module XTwitterScraper
235
576
  # @return [Date, nil]
236
577
  optional :until_date, Date, api_name: :untilDate
237
578
 
579
+ # @!attribute until_time
580
+ # Reply end time as ISO 8601 or Unix seconds.
581
+ #
582
+ # @return [Time, Integer, nil]
583
+ optional :until_time,
584
+ union: -> {
585
+ XTwitterScraper::ExtractionRunParams::UntilTime
586
+ },
587
+ api_name: :untilTime
588
+
238
589
  # @!attribute url
239
590
  # URL substring or domain filter (tweet_search_extractor)
240
591
  #
241
592
  # @return [String, nil]
242
593
  optional :url, String
243
594
 
595
+ # @!attribute username_contains
596
+ # Required username text.
597
+ #
598
+ # @return [String, nil]
599
+ optional :username_contains, String, api_name: :usernameContains
600
+
244
601
  # @!attribute verified_only
245
602
  # Only verified authors (tweet_search_extractor)
246
603
  #
247
604
  # @return [Boolean, nil]
248
605
  optional :verified_only, XTwitterScraper::Internal::Type::Boolean, api_name: :verifiedOnly
249
606
 
250
- # @!method initialize(tool_type:, advanced_query: nil, any_words: nil, bounding_box: nil, cashtags: nil, conversation_id: nil, exact_phrase: nil, exclude_words: nil, from_user: nil, hashtags: nil, in_reply_to_tweet_id: nil, language: nil, list_id: nil, media_type: nil, mentioning: nil, min_faves: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, place: nil, place_country: nil, point_radius: nil, quotes: nil, quotes_of_tweet_id: nil, replies: nil, results_limit: nil, retweets: nil, retweets_of_tweet_id: nil, search_query: nil, since_date: nil, target_community_id: nil, target_list_id: nil, target_space_id: nil, target_tweet_id: nil, target_username: nil, to_user: nil, until_date: nil, url: nil, verified_only: nil, request_options: {})
607
+ # @!attribute verified_type
608
+ # Exact profile verification type.
609
+ #
610
+ # @return [String, nil]
611
+ optional :verified_type, String, api_name: :verifiedType
612
+
613
+ # @!attribute within
614
+ # Set the radius for the near filter.
615
+ #
616
+ # @return [String, nil]
617
+ optional :within, String
618
+
619
+ # @!attribute within_time
620
+ # Match Tweets inside a recent time window.
621
+ #
622
+ # @return [String, nil]
623
+ optional :within_time, String, api_name: :withinTime
624
+
625
+ # @!method initialize(tool_type:, dry_run: nil, advanced_query: nil, any_words: nil, bio_contains: nil, blue_verified_only: nil, bounding_box: nil, card_name: nil, cashtags: nil, collection_strategy: nil, conversation_id: nil, dedupe_across_targets: nil, dedupe_mode: nil, exact_phrase: nil, exclude_original_author: nil, exclude_source: nil, exclude_words: nil, from_user: nil, geocode: nil, hashtags: nil, has_location: nil, has_media_only: nil, has_website: nil, include_original_post: nil, include_search_terms: nil, include_target_metadata: nil, in_reply_to_tweet_id: nil, language: nil, list_id: nil, location_contains: nil, max_depth: nil, max_followers: nil, max_following: nil, max_id: nil, max_items_per_target: nil, max_likes: nil, max_pages_per_target: nil, max_posts: nil, max_quotes: nil, max_replies: nil, max_retweets: nil, media_type: nil, mentioning: nil, min_account_age_days: nil, min_bookmarks: nil, min_faves: nil, min_followers: nil, min_following: nil, min_posts: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, min_views: nil, native_retweets: nil, near: nil, news: nil, overlap_mode: nil, place: nil, place_country: nil, point_radius: nil, query_type: nil, quotes: nil, quotes_of_tweet_id: nil, relation_targets: nil, replies: nil, results_limit: nil, retweets: nil, retweets_of_tweet_id: nil, safe: nil, scope: nil, search_queries: nil, search_query: nil, since_date: nil, since_id: nil, since_time: nil, sort: nil, source: nil, start_cursor: nil, target_community_id: nil, target_community_ids: nil, target_list_id: nil, target_list_ids: nil, targets: nil, target_space_id: nil, target_tweet_id: nil, target_tweet_ids: nil, target_username: nil, target_usernames: nil, to_user: nil, until_date: nil, until_time: nil, url: nil, username_contains: nil, verified_only: nil, verified_type: nil, within: nil, within_time: nil, request_options: {})
251
626
  # Some parameter documentations has been truncated, see
252
627
  # {XTwitterScraper::Models::ExtractionRunParams} for more details.
253
628
  #
254
629
  # @param tool_type [Symbol, XTwitterScraper::Models::ExtractionRunParams::ToolType] Identifier for the extraction tool used to run a job.
255
630
  #
631
+ # @param dry_run [Boolean] Estimate cost without creating an extraction.
632
+ #
256
633
  # @param advanced_query [String] Raw advanced search query appended as-is (tweet_search_extractor)
257
634
  #
258
635
  # @param any_words [String] Words or quoted phrases where any one can match. Separate with spaces, commas, o
259
636
  #
637
+ # @param bio_contains [String] Bio terms separated by commas or lines.
638
+ #
639
+ # @param blue_verified_only [Boolean] Return only Blue-verified Tweet authors.
640
+ #
260
641
  # @param bounding_box [String] Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
261
642
  #
643
+ # @param card_name [String] Match the Tweet card name.
644
+ #
262
645
  # @param cashtags [String] Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
263
646
  #
647
+ # @param collection_strategy [Symbol, XTwitterScraper::Models::ExtractionRunParams::CollectionStrategy] Reply collection strategy.
648
+ #
264
649
  # @param conversation_id [String] Conversation ID filter (tweet_search_extractor)
265
650
  #
651
+ # @param dedupe_across_targets [Boolean] Merge duplicate results across collection targets.
652
+ #
653
+ # @param dedupe_mode [Symbol, XTwitterScraper::Models::ExtractionRunParams::DedupeMode] Keep target duplicates, first rows, or merged overlap.
654
+ #
266
655
  # @param exact_phrase [String] Exact phrase to match (tweet_search_extractor)
267
656
  #
657
+ # @param exclude_original_author [Boolean] Exclude replies from the source author.
658
+ #
659
+ # @param exclude_source [String] Exclude a source application.
660
+ #
268
661
  # @param exclude_words [String] Words or quoted phrases to exclude. Separate with spaces, commas, or lines. (twe
269
662
  #
270
663
  # @param from_user [String] Filter by author username (tweet_search_extractor)
271
664
  #
665
+ # @param geocode [String] Match latitude, longitude, and radius.
666
+ #
272
667
  # @param hashtags [String] Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
273
668
  #
669
+ # @param has_location [Boolean] Require a profile location.
670
+ #
671
+ # @param has_media_only [Boolean] Return only replies with media.
672
+ #
673
+ # @param has_website [Boolean] Require a profile website.
674
+ #
675
+ # @param include_original_post [Boolean] Include the source post in reply results.
676
+ #
677
+ # @param include_search_terms [Boolean] Add matching search terms to collection metadata.
678
+ #
679
+ # @param include_target_metadata [Boolean] Add source target metadata to each result.
680
+ #
274
681
  # @param in_reply_to_tweet_id [String] Only replies to this tweet ID (tweet_search_extractor)
275
682
  #
276
683
  # @param language [String] Language code filter (tweet_search_extractor)
277
684
  #
278
685
  # @param list_id [String] Search within a list ID (tweet_search_extractor)
279
686
  #
687
+ # @param location_contains [String] Required profile location text.
688
+ #
689
+ # @param max_depth [Integer] Maximum nested reply depth.
690
+ #
691
+ # @param max_followers [Integer] Maximum follower count for profile results.
692
+ #
693
+ # @param max_following [Integer] Maximum following count for profile results.
694
+ #
695
+ # @param max_id [String] Return Tweets older than this Tweet ID.
696
+ #
697
+ # @param max_items_per_target [Integer] Maximum results collected for each target.
698
+ #
699
+ # @param max_likes [Integer] Maximum Tweet like count.
700
+ #
701
+ # @param max_pages_per_target [Integer] Reply pages collected for each target.
702
+ #
703
+ # @param max_posts [Integer] Maximum post count for profile results.
704
+ #
705
+ # @param max_quotes [Integer] Maximum Tweet quote count.
706
+ #
707
+ # @param max_replies [Integer] Maximum Tweet reply count.
708
+ #
709
+ # @param max_retweets [Integer] Maximum Tweet repost count.
710
+ #
280
711
  # @param media_type [Symbol, XTwitterScraper::Models::ExtractionRunParams::MediaType] Media type filter (tweet_search_extractor)
281
712
  #
282
713
  # @param mentioning [String] Filter tweets mentioning a username (tweet_search_extractor)
283
714
  #
715
+ # @param min_account_age_days [Integer] Minimum profile age in days.
716
+ #
717
+ # @param min_bookmarks [Integer] Minimum Tweet bookmark count.
718
+ #
284
719
  # @param min_faves [Integer] Minimum likes threshold (tweet_search_extractor)
285
720
  #
721
+ # @param min_followers [Integer] Minimum follower count for profile results.
722
+ #
723
+ # @param min_following [Integer] Minimum following count for profile results.
724
+ #
725
+ # @param min_posts [Integer] Minimum post count for profile results.
726
+ #
286
727
  # @param min_quotes [Integer] Minimum quote count threshold (tweet_search_extractor)
287
728
  #
288
729
  # @param min_replies [Integer] Minimum replies threshold (tweet_search_extractor)
289
730
  #
290
731
  # @param min_retweets [Integer] Minimum retweets threshold (tweet_search_extractor)
291
732
  #
733
+ # @param min_views [Integer] Minimum Tweet view count.
734
+ #
735
+ # @param native_retweets [Boolean] Only return native reposts.
736
+ #
737
+ # @param near [String] Match a place name.
738
+ #
739
+ # @param news [Boolean] Only return news results.
740
+ #
741
+ # @param overlap_mode [Boolean] Shortcut for dedupeMode=merge.
742
+ #
292
743
  # @param place [String] Search within a place ID (tweet_search_extractor)
293
744
  #
294
745
  # @param place_country [String] Search within a country code (tweet_search_extractor)
295
746
  #
296
747
  # @param point_radius [String] Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
297
748
  #
749
+ # @param query_type [Symbol, XTwitterScraper::Models::ExtractionRunParams::QueryType] Search ranking applied to every query.
750
+ #
298
751
  # @param quotes [Symbol, XTwitterScraper::Models::ExtractionRunParams::Quotes] Quote mode (tweet_search_extractor)
299
752
  #
300
753
  # @param quotes_of_tweet_id [String] Only quotes of this tweet ID (tweet_search_extractor)
301
754
  #
755
+ # @param relation_targets [Array<XTwitterScraper::Models::ExtractionRunParams::RelationTarget>] Profile relations processed within one job.
756
+ #
302
757
  # @param replies [Symbol, XTwitterScraper::Models::ExtractionRunParams::Replies] Reply mode (tweet_search_extractor)
303
758
  #
304
759
  # @param results_limit [Integer] Maximum number of results to extract. When set, the extraction stops after reach
@@ -307,28 +762,64 @@ module XTwitterScraper
307
762
  #
308
763
  # @param retweets_of_tweet_id [String] Only retweets of this tweet ID (tweet_search_extractor)
309
764
  #
765
+ # @param safe [Boolean] Enable the safe-search filter.
766
+ #
767
+ # @param scope [Symbol, XTwitterScraper::Models::ExtractionRunParams::Scope] Reply depth scope.
768
+ #
769
+ # @param search_queries [Array<String>] Search queries processed as one collection job.
770
+ #
310
771
  # @param search_query [String] Required for tweet_search_extractor & community_search.
311
772
  #
312
773
  # @param since_date [Date] Start date YYYY-MM-DD (tweet_search_extractor)
313
774
  #
775
+ # @param since_id [String] Return Tweets newer than this Tweet ID.
776
+ #
777
+ # @param since_time [Time, Integer] Reply start time as ISO 8601 or Unix seconds.
778
+ #
779
+ # @param sort [Symbol, XTwitterScraper::Models::ExtractionRunParams::Sort] Reply result order.
780
+ #
781
+ # @param source [String] Match the source application.
782
+ #
783
+ # @param start_cursor [String] Resume one reply target from this cursor.
784
+ #
314
785
  # @param target_community_id [String] Required for community_post_extractor & community_search.
315
786
  #
787
+ # @param target_community_ids [Array<String>] Community IDs processed as one collection job.
788
+ #
316
789
  # @param target_list_id [String] Required for list_follower_explorer, list_member_extractor & list_post_extractor
317
790
  #
791
+ # @param target_list_ids [Array<String>] List IDs processed as one collection job.
792
+ #
793
+ # @param targets [Array<String, XTwitterScraper::Models::ExtractionRunParams::Target::UnionMember1>] Mixed targets auto-routed within one job.
794
+ #
318
795
  # @param target_space_id [String] Required for space_explorer.
319
796
  #
320
797
  # @param target_tweet_id [String]
321
798
  #
799
+ # @param target_tweet_ids [Array<String>] Tweet IDs processed as one collection job.
800
+ #
322
801
  # @param target_username [String]
323
802
  #
803
+ # @param target_usernames [Array<String>] Usernames processed as one collection job.
804
+ #
324
805
  # @param to_user [String] Filter replies sent to a username (tweet_search_extractor)
325
806
  #
326
807
  # @param until_date [Date] End date YYYY-MM-DD (tweet_search_extractor)
327
808
  #
809
+ # @param until_time [Time, Integer] Reply end time as ISO 8601 or Unix seconds.
810
+ #
328
811
  # @param url [String] URL substring or domain filter (tweet_search_extractor)
329
812
  #
813
+ # @param username_contains [String] Required username text.
814
+ #
330
815
  # @param verified_only [Boolean] Only verified authors (tweet_search_extractor)
331
816
  #
817
+ # @param verified_type [String] Exact profile verification type.
818
+ #
819
+ # @param within [String] Set the radius for the near filter.
820
+ #
821
+ # @param within_time [String] Match Tweets inside a recent time window.
822
+ #
332
823
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}]
333
824
 
334
825
  # Identifier for the extraction tool used to run a job.
@@ -363,6 +854,32 @@ module XTwitterScraper
363
854
  # @return [Array<Symbol>]
364
855
  end
365
856
 
857
+ # Reply collection strategy.
858
+ module CollectionStrategy
859
+ extend XTwitterScraper::Internal::Type::Enum
860
+
861
+ AUTO = :auto
862
+ COMPLETE = :complete
863
+ DIRECT = :direct
864
+ SEARCH = :search
865
+ THREAD = :thread
866
+
867
+ # @!method self.values
868
+ # @return [Array<Symbol>]
869
+ end
870
+
871
+ # Keep target duplicates, first rows, or merged overlap.
872
+ module DedupeMode
873
+ extend XTwitterScraper::Internal::Type::Enum
874
+
875
+ NONE = :none
876
+ FIRST = :first
877
+ MERGE = :merge
878
+
879
+ # @!method self.values
880
+ # @return [Array<Symbol>]
881
+ end
882
+
366
883
  # Media type filter (tweet_search_extractor)
367
884
  module MediaType
368
885
  extend XTwitterScraper::Internal::Type::Enum
@@ -378,6 +895,18 @@ module XTwitterScraper
378
895
  # @return [Array<Symbol>]
379
896
  end
380
897
 
898
+ # Search ranking applied to every query.
899
+ module QueryType
900
+ extend XTwitterScraper::Internal::Type::Enum
901
+
902
+ LATEST = :Latest
903
+ TOP = :Top
904
+ BOTH = :Both
905
+
906
+ # @!method self.values
907
+ # @return [Array<Symbol>]
908
+ end
909
+
381
910
  # Quote mode (tweet_search_extractor)
382
911
  module Quotes
383
912
  extend XTwitterScraper::Internal::Type::Enum
@@ -390,6 +919,39 @@ module XTwitterScraper
390
919
  # @return [Array<Symbol>]
391
920
  end
392
921
 
922
+ class RelationTarget < XTwitterScraper::Internal::Type::BaseModel
923
+ # @!attribute relation
924
+ #
925
+ # @return [Symbol, XTwitterScraper::Models::ExtractionRunParams::RelationTarget::Relation]
926
+ required :relation, enum: -> { XTwitterScraper::ExtractionRunParams::RelationTarget::Relation }
927
+
928
+ # @!attribute value
929
+ #
930
+ # @return [String]
931
+ required :value, String
932
+
933
+ # @!method initialize(relation:, value:)
934
+ # One target and relation in a mixed profile collection.
935
+ #
936
+ # @param relation [Symbol, XTwitterScraper::Models::ExtractionRunParams::RelationTarget::Relation]
937
+ # @param value [String]
938
+
939
+ # @see XTwitterScraper::Models::ExtractionRunParams::RelationTarget#relation
940
+ module Relation
941
+ extend XTwitterScraper::Internal::Type::Enum
942
+
943
+ COMMUNITY_MEMBERS = :community_members
944
+ FOLLOWERS = :followers
945
+ FOLLOWING = :following
946
+ LIST_FOLLOWERS = :list_followers
947
+ LIST_MEMBERS = :list_members
948
+ VERIFIED_FOLLOWERS = :verified_followers
949
+
950
+ # @!method self.values
951
+ # @return [Array<Symbol>]
952
+ end
953
+ end
954
+
393
955
  # Reply mode (tweet_search_extractor)
394
956
  module Replies
395
957
  extend XTwitterScraper::Internal::Type::Enum
@@ -413,6 +975,105 @@ module XTwitterScraper
413
975
  # @!method self.values
414
976
  # @return [Array<Symbol>]
415
977
  end
978
+
979
+ # Reply depth scope.
980
+ module Scope
981
+ extend XTwitterScraper::Internal::Type::Enum
982
+
983
+ ALL = :all
984
+ DIRECT = :direct
985
+ NESTED = :nested
986
+
987
+ # @!method self.values
988
+ # @return [Array<Symbol>]
989
+ end
990
+
991
+ # Reply start time as ISO 8601 or Unix seconds.
992
+ module SinceTime
993
+ extend XTwitterScraper::Internal::Type::Union
994
+
995
+ variant Time
996
+
997
+ variant Integer
998
+
999
+ # @!method self.variants
1000
+ # @return [Array(Time, Integer)]
1001
+ end
1002
+
1003
+ # Reply result order.
1004
+ module Sort
1005
+ extend XTwitterScraper::Internal::Type::Enum
1006
+
1007
+ RELEVANCE = :relevance
1008
+ LATEST = :latest
1009
+ OLDEST = :oldest
1010
+ LIKES = :likes
1011
+
1012
+ # @!method self.values
1013
+ # @return [Array<Symbol>]
1014
+ end
1015
+
1016
+ # One auto-routed target in a mixed Tweet collection.
1017
+ module Target
1018
+ extend XTwitterScraper::Internal::Type::Union
1019
+
1020
+ # X URL, numeric Tweet ID, @username, kind:value target, or search.
1021
+ variant String
1022
+
1023
+ variant -> { XTwitterScraper::ExtractionRunParams::Target::UnionMember1 }
1024
+
1025
+ class UnionMember1 < XTwitterScraper::Internal::Type::BaseModel
1026
+ # @!attribute kind
1027
+ #
1028
+ # @return [Symbol, XTwitterScraper::Models::ExtractionRunParams::Target::UnionMember1::Kind]
1029
+ required :kind, enum: -> { XTwitterScraper::ExtractionRunParams::Target::UnionMember1::Kind }
1030
+
1031
+ # @!attribute value
1032
+ #
1033
+ # @return [String]
1034
+ required :value, String
1035
+
1036
+ # @!method initialize(kind:, value:)
1037
+ # @param kind [Symbol, XTwitterScraper::Models::ExtractionRunParams::Target::UnionMember1::Kind]
1038
+ # @param value [String]
1039
+
1040
+ # @see XTwitterScraper::Models::ExtractionRunParams::Target::UnionMember1#kind
1041
+ module Kind
1042
+ extend XTwitterScraper::Internal::Type::Enum
1043
+
1044
+ FAVORITERS = :favoriters
1045
+ LIST = :list
1046
+ PROFILE = :profile
1047
+ PROFILE_LIKES = :profile_likes
1048
+ PROFILE_MEDIA = :profile_media
1049
+ PROFILE_REPLIES = :profile_replies
1050
+ QUOTES = :quotes
1051
+ REPLIES = :replies
1052
+ RETWEETERS = :retweeters
1053
+ SEARCH = :search
1054
+ THREAD = :thread
1055
+ TWEET = :tweet
1056
+
1057
+ # @!method self.values
1058
+ # @return [Array<Symbol>]
1059
+ end
1060
+ end
1061
+
1062
+ # @!method self.variants
1063
+ # @return [Array(String, XTwitterScraper::Models::ExtractionRunParams::Target::UnionMember1)]
1064
+ end
1065
+
1066
+ # Reply end time as ISO 8601 or Unix seconds.
1067
+ module UntilTime
1068
+ extend XTwitterScraper::Internal::Type::Union
1069
+
1070
+ variant Time
1071
+
1072
+ variant Integer
1073
+
1074
+ # @!method self.variants
1075
+ # @return [Array(Time, Integer)]
1076
+ end
416
1077
  end
417
1078
  end
418
1079
  end