x-twitter-scraper 0.6.0 → 0.7.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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +1 -1
  4. data/lib/x_twitter_scraper/internal/type/union.rb +25 -9
  5. data/lib/x_twitter_scraper/models/content_disclosure.rb +1 -9
  6. data/lib/x_twitter_scraper/models/embedded_tweet.rb +389 -1
  7. data/lib/x_twitter_scraper/models/paginated_tweets.rb +4 -5
  8. data/lib/x_twitter_scraper/models/search_tweet.rb +371 -1
  9. data/lib/x_twitter_scraper/models/support/ticket_list_response.rb +30 -17
  10. data/lib/x_twitter_scraper/models/support/ticket_retrieve_response.rb +49 -24
  11. data/lib/x_twitter_scraper/models/support/ticket_update_response.rb +18 -6
  12. data/lib/x_twitter_scraper/models/trend_list_response.rb +28 -1
  13. data/lib/x_twitter_scraper/models/tweet_media.rb +213 -1
  14. data/lib/x_twitter_scraper/models/user_profile.rb +211 -21
  15. data/lib/x_twitter_scraper/models/x/account_connection_attempt_retrieve_response.rb +60 -26
  16. data/lib/x_twitter_scraper/models/x/account_connection_challenge_submit_response.rb +4 -4
  17. data/lib/x_twitter_scraper/models/x/account_create_response.rb +149 -2
  18. data/lib/x_twitter_scraper/models/x/account_reauth_response.rb +4 -4
  19. data/lib/x_twitter_scraper/models/x/communities/tweet_list_by_community_params.rb +3 -5
  20. data/lib/x_twitter_scraper/models/x/communities/tweet_list_params.rb +3 -5
  21. data/lib/x_twitter_scraper/models/x/community_retrieve_info_response.rb +1 -17
  22. data/lib/x_twitter_scraper/models/x/community_retrieve_search_params.rb +3 -5
  23. data/lib/x_twitter_scraper/models/x/list_retrieve_tweets_params.rb +3 -5
  24. data/lib/x_twitter_scraper/models/x/tweet_author.rb +14 -1
  25. data/lib/x_twitter_scraper/models/x/tweet_detail.rb +373 -1
  26. data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +3 -5
  27. data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +34 -6
  28. data/lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb +345 -0
  29. data/lib/x_twitter_scraper/models/x/tweet_get_thread_params.rb +3 -5
  30. data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +3 -5
  31. data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +3 -5
  32. data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +3 -5
  33. data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +3 -5
  34. data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +3 -5
  35. data/lib/x_twitter_scraper/models/x_get_article_response.rb +1 -7
  36. data/lib/x_twitter_scraper/models/x_get_trends_response.rb +28 -1
  37. data/lib/x_twitter_scraper/resources/x/account_connection_attempts.rb +1 -1
  38. data/lib/x_twitter_scraper/resources/x/accounts.rb +2 -2
  39. data/lib/x_twitter_scraper/resources/x/communities/tweets.rb +2 -2
  40. data/lib/x_twitter_scraper/resources/x/communities.rb +1 -1
  41. data/lib/x_twitter_scraper/resources/x/lists.rb +1 -1
  42. data/lib/x_twitter_scraper/resources/x/tweets.rb +14 -11
  43. data/lib/x_twitter_scraper/resources/x/users.rb +5 -5
  44. data/lib/x_twitter_scraper/version.rb +1 -1
  45. data/lib/x_twitter_scraper.rb +2 -1
  46. data/rbi/x_twitter_scraper/models/content_disclosure.rbi +1 -15
  47. data/rbi/x_twitter_scraper/models/embedded_tweet.rbi +708 -3
  48. data/rbi/x_twitter_scraper/models/paginated_tweets.rbi +4 -5
  49. data/rbi/x_twitter_scraper/models/search_tweet.rbi +674 -3
  50. data/rbi/x_twitter_scraper/models/support/ticket_list_response.rbi +75 -55
  51. data/rbi/x_twitter_scraper/models/support/ticket_retrieve_response.rbi +129 -87
  52. data/rbi/x_twitter_scraper/models/support/ticket_update_response.rbi +62 -13
  53. data/rbi/x_twitter_scraper/models/trend_list_response.rbi +40 -3
  54. data/rbi/x_twitter_scraper/models/tweet_media.rbi +313 -3
  55. data/rbi/x_twitter_scraper/models/user_profile.rbi +340 -29
  56. data/rbi/x_twitter_scraper/models/x/account_connection_attempt_retrieve_response.rbi +61 -83
  57. data/rbi/x_twitter_scraper/models/x/account_connection_challenge_submit_response.rbi +6 -6
  58. data/rbi/x_twitter_scraper/models/x/account_create_response.rbi +264 -2
  59. data/rbi/x_twitter_scraper/models/x/account_reauth_response.rbi +6 -6
  60. data/rbi/x_twitter_scraper/models/x/communities/tweet_list_by_community_params.rbi +4 -8
  61. data/rbi/x_twitter_scraper/models/x/communities/tweet_list_params.rbi +4 -8
  62. data/rbi/x_twitter_scraper/models/x/community_retrieve_info_response.rbi +0 -22
  63. data/rbi/x_twitter_scraper/models/x/community_retrieve_search_params.rbi +4 -8
  64. data/rbi/x_twitter_scraper/models/x/list_retrieve_tweets_params.rbi +4 -8
  65. data/rbi/x_twitter_scraper/models/x/tweet_author.rbi +13 -3
  66. data/rbi/x_twitter_scraper/models/x/tweet_detail.rbi +690 -3
  67. data/rbi/x_twitter_scraper/models/x/tweet_get_quotes_params.rbi +4 -8
  68. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_params.rbi +68 -8
  69. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_response.rbi +527 -0
  70. data/rbi/x_twitter_scraper/models/x/tweet_get_thread_params.rbi +4 -8
  71. data/rbi/x_twitter_scraper/models/x/user_retrieve_likes_params.rbi +4 -8
  72. data/rbi/x_twitter_scraper/models/x/user_retrieve_media_params.rbi +4 -8
  73. data/rbi/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbi +4 -8
  74. data/rbi/x_twitter_scraper/models/x/user_retrieve_replies_params.rbi +4 -8
  75. data/rbi/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbi +4 -8
  76. data/rbi/x_twitter_scraper/models/x_get_article_response.rbi +0 -9
  77. data/rbi/x_twitter_scraper/models/x_get_trends_response.rbi +40 -3
  78. data/rbi/x_twitter_scraper/resources/x/accounts.rbi +1 -1
  79. data/rbi/x_twitter_scraper/resources/x/communities/tweets.rbi +4 -8
  80. data/rbi/x_twitter_scraper/resources/x/communities.rbi +2 -4
  81. data/rbi/x_twitter_scraper/resources/x/lists.rbi +2 -4
  82. data/rbi/x_twitter_scraper/resources/x/tweets.rbi +20 -18
  83. data/rbi/x_twitter_scraper/resources/x/users.rbi +10 -20
  84. data/sig/x_twitter_scraper/models/content_disclosure.rbs +1 -11
  85. data/sig/x_twitter_scraper/models/embedded_tweet.rbs +343 -62
  86. data/sig/x_twitter_scraper/models/search_tweet.rbs +333 -70
  87. data/sig/x_twitter_scraper/models/support/ticket_list_response.rbs +29 -32
  88. data/sig/x_twitter_scraper/models/support/ticket_retrieve_response.rbs +49 -48
  89. data/sig/x_twitter_scraper/models/support/ticket_update_response.rbs +25 -7
  90. data/sig/x_twitter_scraper/models/trend_list_response.rbs +16 -20
  91. data/sig/x_twitter_scraper/models/tweet_media.rbs +146 -15
  92. data/sig/x_twitter_scraper/models/user_profile.rbs +164 -86
  93. data/sig/x_twitter_scraper/models/x/account_connection_attempt_retrieve_response.rbs +50 -33
  94. data/sig/x_twitter_scraper/models/x/account_connection_challenge_submit_response.rbs +5 -5
  95. data/sig/x_twitter_scraper/models/x/account_create_response.rbs +147 -1
  96. data/sig/x_twitter_scraper/models/x/account_reauth_response.rbs +5 -5
  97. data/sig/x_twitter_scraper/models/x/community_retrieve_info_response.rbs +0 -14
  98. data/sig/x_twitter_scraper/models/x/tweet_author.rbs +11 -3
  99. data/sig/x_twitter_scraper/models/x/tweet_detail.rbs +333 -70
  100. data/sig/x_twitter_scraper/models/x/tweet_get_replies_params.rbs +26 -0
  101. data/sig/x_twitter_scraper/models/x/tweet_get_replies_response.rbs +274 -0
  102. data/sig/x_twitter_scraper/models/x_get_article_response.rbs +0 -7
  103. data/sig/x_twitter_scraper/models/x_get_trends_response.rbs +25 -3
  104. data/sig/x_twitter_scraper/resources/x/accounts.rbs +1 -1
  105. data/sig/x_twitter_scraper/resources/x/tweets.rbs +3 -1
  106. metadata +4 -1
@@ -48,6 +48,12 @@ module XTwitterScraper
48
48
  # @return [Integer]
49
49
  required :view_count, Integer, api_name: :viewCount
50
50
 
51
+ # @!attribute article
52
+ # Article metadata attached to a tweet.
53
+ #
54
+ # @return [XTwitterScraper::Models::X::TweetDetail::Article, nil]
55
+ optional :article, -> { XTwitterScraper::X::TweetDetail::Article }
56
+
51
57
  # @!attribute author
52
58
  # Tweet author profile. The lookup route always includes follower count and
53
59
  # verification state. Other profile fields appear when available.
@@ -55,6 +61,22 @@ module XTwitterScraper
55
61
  # @return [XTwitterScraper::Models::X::TweetAuthor, nil]
56
62
  optional :author, -> { XTwitterScraper::X::TweetAuthor }
57
63
 
64
+ # @!attribute card
65
+ # Public card metadata attached to a tweet.
66
+ #
67
+ # @return [XTwitterScraper::Models::X::TweetDetail::Card, nil]
68
+ optional :card, -> { XTwitterScraper::X::TweetDetail::Card }
69
+
70
+ # @!attribute community_note
71
+ # Community Note presentation metadata returned by X.
72
+ #
73
+ # @return [XTwitterScraper::Models::X::TweetDetail::CommunityNote, nil]
74
+ optional :community_note,
75
+ -> {
76
+ XTwitterScraper::X::TweetDetail::CommunityNote
77
+ },
78
+ api_name: :communityNote
79
+
58
80
  # @!attribute content_disclosure
59
81
  # Content disclosure metadata shown by X when a tweet is labeled as paid
60
82
  # partnership content or AI-generated media.
@@ -81,6 +103,12 @@ module XTwitterScraper
81
103
  XTwitterScraper::Internal::Type::ArrayOf[Integer],
82
104
  api_name: :displayTextRange
83
105
 
106
+ # @!attribute edit
107
+ # Edit history metadata returned by X.
108
+ #
109
+ # @return [XTwitterScraper::Models::X::TweetDetail::Edit, nil]
110
+ optional :edit, -> { XTwitterScraper::X::TweetDetail::Edit }
111
+
84
112
  # @!attribute entities
85
113
  # Parsed entities from the tweet text (URLs, mentions, hashtags, media)
86
114
  #
@@ -129,6 +157,11 @@ module XTwitterScraper
129
157
  # @return [Boolean, nil]
130
158
  optional :is_reply, XTwitterScraper::Internal::Type::Boolean, api_name: :isReply
131
159
 
160
+ # @!attribute is_translatable
161
+ #
162
+ # @return [Boolean, nil]
163
+ optional :is_translatable, XTwitterScraper::Internal::Type::Boolean, api_name: :isTranslatable
164
+
132
165
  # @!attribute lang
133
166
  # Tweet language code
134
167
  #
@@ -141,6 +174,31 @@ module XTwitterScraper
141
174
  # @return [Array<XTwitterScraper::Models::TweetMedia>, nil]
142
175
  optional :media, -> { XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::TweetMedia] }
143
176
 
177
+ # @!attribute note_tweet
178
+ # Complete Note Tweet content and rich-text metadata.
179
+ #
180
+ # @return [XTwitterScraper::Models::X::TweetDetail::NoteTweet, nil]
181
+ optional :note_tweet, -> { XTwitterScraper::X::TweetDetail::NoteTweet }, api_name: :noteTweet
182
+
183
+ # @!attribute place
184
+ # Public place metadata attached to a tweet.
185
+ #
186
+ # @return [XTwitterScraper::Models::X::TweetDetail::Place, nil]
187
+ optional :place, -> { XTwitterScraper::X::TweetDetail::Place }
188
+
189
+ # @!attribute possibly_sensitive
190
+ #
191
+ # @return [Boolean, nil]
192
+ optional :possibly_sensitive, XTwitterScraper::Internal::Type::Boolean, api_name: :possiblySensitive
193
+
194
+ # @!attribute previous_counts
195
+ # Engagement counts retained from a prior tweet edit.
196
+ #
197
+ # @return [XTwitterScraper::Models::X::TweetDetail::PreviousCounts, nil]
198
+ optional :previous_counts,
199
+ -> { XTwitterScraper::X::TweetDetail::PreviousCounts },
200
+ api_name: :previousCounts
201
+
144
202
  # @!attribute quoted_tweet
145
203
  # Quoted or retweeted tweet context. Every object includes id, text, and
146
204
  # engagement metrics. A zero metric can mean X did not report the count. Author,
@@ -175,7 +233,12 @@ module XTwitterScraper
175
233
  # @return [String, nil]
176
234
  optional :url, String
177
235
 
178
- # @!method initialize(id:, bookmark_count:, like_count:, quote_count:, reply_count:, retweet_count:, text:, view_count:, author: nil, content_disclosure: nil, conversation_id: nil, created_at: nil, display_text_range: nil, entities: nil, in_reply_to_id: nil, in_reply_to_user_id: nil, in_reply_to_username: nil, is_limited_reply: nil, is_note_tweet: nil, is_quote_status: nil, is_reply: nil, lang: nil, media: nil, quoted_tweet: nil, retweeted_tweet: nil, source: nil, type: nil, url: nil)
236
+ # @!attribute view_state
237
+ #
238
+ # @return [String, nil]
239
+ optional :view_state, String, api_name: :viewState
240
+
241
+ # @!method initialize(id:, bookmark_count:, like_count:, quote_count:, reply_count:, retweet_count:, text:, view_count:, article: nil, author: nil, card: nil, community_note: nil, content_disclosure: nil, conversation_id: nil, created_at: nil, display_text_range: nil, edit: nil, entities: nil, in_reply_to_id: nil, in_reply_to_user_id: nil, in_reply_to_username: nil, is_limited_reply: nil, is_note_tweet: nil, is_quote_status: nil, is_reply: nil, is_translatable: nil, lang: nil, media: nil, note_tweet: nil, place: nil, possibly_sensitive: nil, previous_counts: nil, quoted_tweet: nil, retweeted_tweet: nil, source: nil, type: nil, url: nil, view_state: nil)
179
242
  # Some parameter documentations has been truncated, see
180
243
  # {XTwitterScraper::Models::X::TweetDetail} for more details.
181
244
  #
@@ -198,8 +261,14 @@ module XTwitterScraper
198
261
  #
199
262
  # @param view_count [Integer]
200
263
  #
264
+ # @param article [XTwitterScraper::Models::X::TweetDetail::Article] Article metadata attached to a tweet.
265
+ #
201
266
  # @param author [XTwitterScraper::Models::X::TweetAuthor] Tweet author profile. The lookup route always includes follower count and verifi
202
267
  #
268
+ # @param card [XTwitterScraper::Models::X::TweetDetail::Card] Public card metadata attached to a tweet.
269
+ #
270
+ # @param community_note [XTwitterScraper::Models::X::TweetDetail::CommunityNote] Community Note presentation metadata returned by X.
271
+ #
203
272
  # @param content_disclosure [XTwitterScraper::Models::ContentDisclosure] Content disclosure metadata shown by X when a tweet is labeled as paid partnersh
204
273
  #
205
274
  # @param conversation_id [String] ID of the root tweet in the conversation thread
@@ -208,6 +277,8 @@ module XTwitterScraper
208
277
  #
209
278
  # @param display_text_range [Array<Integer>] Start and end offsets for rendered tweet text
210
279
  #
280
+ # @param edit [XTwitterScraper::Models::X::TweetDetail::Edit] Edit history metadata returned by X.
281
+ #
211
282
  # @param entities [Hash{Symbol=>Object}] Parsed entities from the tweet text (URLs, mentions, hashtags, media)
212
283
  #
213
284
  # @param in_reply_to_id [String] Tweet ID being replied to
@@ -224,10 +295,20 @@ module XTwitterScraper
224
295
  #
225
296
  # @param is_reply [Boolean] Whether this tweet is a reply to another tweet
226
297
  #
298
+ # @param is_translatable [Boolean]
299
+ #
227
300
  # @param lang [String] Tweet language code
228
301
  #
229
302
  # @param media [Array<XTwitterScraper::Models::TweetMedia>] Attached media items, omitted when the tweet has no media
230
303
  #
304
+ # @param note_tweet [XTwitterScraper::Models::X::TweetDetail::NoteTweet] Complete Note Tweet content and rich-text metadata.
305
+ #
306
+ # @param place [XTwitterScraper::Models::X::TweetDetail::Place] Public place metadata attached to a tweet.
307
+ #
308
+ # @param possibly_sensitive [Boolean]
309
+ #
310
+ # @param previous_counts [XTwitterScraper::Models::X::TweetDetail::PreviousCounts] Engagement counts retained from a prior tweet edit.
311
+ #
231
312
  # @param quoted_tweet [XTwitterScraper::Models::EmbeddedTweet] Quoted or retweeted tweet context. Every object includes id, text, and engagemen
232
313
  #
233
314
  # @param retweeted_tweet [XTwitterScraper::Models::EmbeddedTweet] Quoted or retweeted tweet context. Every object includes id, text, and engagemen
@@ -237,6 +318,297 @@ module XTwitterScraper
237
318
  # @param type [String] Tweet result type
238
319
  #
239
320
  # @param url [String] Tweet permalink URL
321
+ #
322
+ # @param view_state [String]
323
+
324
+ # @see XTwitterScraper::Models::X::TweetDetail#article
325
+ class Article < XTwitterScraper::Internal::Type::BaseModel
326
+ # @!attribute id
327
+ #
328
+ # @return [String, nil]
329
+ optional :id, String
330
+
331
+ # @!attribute cover_media_url
332
+ #
333
+ # @return [String, nil]
334
+ optional :cover_media_url, String, api_name: :coverMediaUrl
335
+
336
+ # @!attribute preview_text
337
+ #
338
+ # @return [String, nil]
339
+ optional :preview_text, String, api_name: :previewText
340
+
341
+ # @!attribute title
342
+ #
343
+ # @return [String, nil]
344
+ optional :title, String
345
+
346
+ # @!method initialize(id: nil, cover_media_url: nil, preview_text: nil, title: nil)
347
+ # Article metadata attached to a tweet.
348
+ #
349
+ # @param id [String]
350
+ # @param cover_media_url [String]
351
+ # @param preview_text [String]
352
+ # @param title [String]
353
+ end
354
+
355
+ # @see XTwitterScraper::Models::X::TweetDetail#card
356
+ class Card < XTwitterScraper::Internal::Type::BaseModel
357
+ # @!attribute id
358
+ #
359
+ # @return [String, nil]
360
+ optional :id, String
361
+
362
+ # @!attribute binding_values
363
+ #
364
+ # @return [Hash{Symbol=>Object}, nil]
365
+ optional :binding_values,
366
+ XTwitterScraper::Internal::Type::HashOf[XTwitterScraper::Internal::Type::Unknown],
367
+ api_name: :bindingValues
368
+
369
+ # @!attribute name
370
+ #
371
+ # @return [String, nil]
372
+ optional :name, String
373
+
374
+ # @!attribute url
375
+ #
376
+ # @return [String, nil]
377
+ optional :url, String
378
+
379
+ # @!method initialize(id: nil, binding_values: nil, name: nil, url: nil)
380
+ # Public card metadata attached to a tweet.
381
+ #
382
+ # @param id [String]
383
+ # @param binding_values [Hash{Symbol=>Object}]
384
+ # @param name [String]
385
+ # @param url [String]
386
+ end
387
+
388
+ # @see XTwitterScraper::Models::X::TweetDetail#community_note
389
+ class CommunityNote < XTwitterScraper::Internal::Type::BaseModel
390
+ # @!attribute id
391
+ #
392
+ # @return [String, nil]
393
+ optional :id, String
394
+
395
+ # @!attribute destination_url
396
+ #
397
+ # @return [String, nil]
398
+ optional :destination_url, String, api_name: :destinationUrl
399
+
400
+ # @!attribute footer
401
+ #
402
+ # @return [String, nil]
403
+ optional :footer, String
404
+
405
+ # @!attribute short_title
406
+ #
407
+ # @return [String, nil]
408
+ optional :short_title, String, api_name: :shortTitle
409
+
410
+ # @!attribute subtitle
411
+ #
412
+ # @return [String, nil]
413
+ optional :subtitle, String
414
+
415
+ # @!attribute title
416
+ #
417
+ # @return [String, nil]
418
+ optional :title, String
419
+
420
+ # @!attribute visual_style
421
+ #
422
+ # @return [String, nil]
423
+ optional :visual_style, String, api_name: :visualStyle
424
+
425
+ # @!method initialize(id: nil, destination_url: nil, footer: nil, short_title: nil, subtitle: nil, title: nil, visual_style: nil)
426
+ # Community Note presentation metadata returned by X.
427
+ #
428
+ # @param id [String]
429
+ # @param destination_url [String]
430
+ # @param footer [String]
431
+ # @param short_title [String]
432
+ # @param subtitle [String]
433
+ # @param title [String]
434
+ # @param visual_style [String]
435
+ end
436
+
437
+ # @see XTwitterScraper::Models::X::TweetDetail#edit
438
+ class Edit < XTwitterScraper::Internal::Type::BaseModel
439
+ # @!attribute editable_until_msecs
440
+ #
441
+ # @return [String, nil]
442
+ optional :editable_until_msecs, String, api_name: :editableUntilMsecs
443
+
444
+ # @!attribute edit_tweet_ids
445
+ #
446
+ # @return [Array<String>, nil]
447
+ optional :edit_tweet_ids, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :editTweetIds
448
+
449
+ # @!method initialize(editable_until_msecs: nil, edit_tweet_ids: nil)
450
+ # Edit history metadata returned by X.
451
+ #
452
+ # @param editable_until_msecs [String]
453
+ # @param edit_tweet_ids [Array<String>]
454
+ end
455
+
456
+ # @see XTwitterScraper::Models::X::TweetDetail#note_tweet
457
+ class NoteTweet < XTwitterScraper::Internal::Type::BaseModel
458
+ # @!attribute text
459
+ #
460
+ # @return [String]
461
+ required :text, String
462
+
463
+ # @!attribute id
464
+ #
465
+ # @return [String, nil]
466
+ optional :id, String
467
+
468
+ # @!attribute entities
469
+ #
470
+ # @return [Hash{Symbol=>Object}, nil]
471
+ optional :entities, XTwitterScraper::Internal::Type::HashOf[XTwitterScraper::Internal::Type::Unknown]
472
+
473
+ # @!attribute is_expandable
474
+ #
475
+ # @return [Boolean, nil]
476
+ optional :is_expandable, XTwitterScraper::Internal::Type::Boolean, api_name: :isExpandable
477
+
478
+ # @!attribute richtext_tags
479
+ #
480
+ # @return [Array<XTwitterScraper::Models::X::TweetDetail::NoteTweet::RichtextTag>, nil]
481
+ optional :richtext_tags,
482
+ -> {
483
+ XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::X::TweetDetail::NoteTweet::RichtextTag]
484
+ },
485
+ api_name: :richtextTags
486
+
487
+ # @!method initialize(text:, id: nil, entities: nil, is_expandable: nil, richtext_tags: nil)
488
+ # Complete Note Tweet content and rich-text metadata.
489
+ #
490
+ # @param text [String]
491
+ # @param id [String]
492
+ # @param entities [Hash{Symbol=>Object}]
493
+ # @param is_expandable [Boolean]
494
+ # @param richtext_tags [Array<XTwitterScraper::Models::X::TweetDetail::NoteTweet::RichtextTag>]
495
+
496
+ class RichtextTag < XTwitterScraper::Internal::Type::BaseModel
497
+ # @!attribute from_index
498
+ #
499
+ # @return [Integer]
500
+ required :from_index, Integer, api_name: :fromIndex
501
+
502
+ # @!attribute to_index
503
+ #
504
+ # @return [Integer]
505
+ required :to_index, Integer, api_name: :toIndex
506
+
507
+ # @!attribute types
508
+ #
509
+ # @return [Array<String>]
510
+ required :types, XTwitterScraper::Internal::Type::ArrayOf[String]
511
+
512
+ # @!method initialize(from_index:, to_index:, types:)
513
+ # @param from_index [Integer]
514
+ # @param to_index [Integer]
515
+ # @param types [Array<String>]
516
+ end
517
+ end
518
+
519
+ # @see XTwitterScraper::Models::X::TweetDetail#place
520
+ class Place < XTwitterScraper::Internal::Type::BaseModel
521
+ # @!attribute id
522
+ #
523
+ # @return [String, nil]
524
+ optional :id, String
525
+
526
+ # @!attribute bounding_box
527
+ #
528
+ # @return [Hash{Symbol=>Object}, nil]
529
+ optional :bounding_box,
530
+ XTwitterScraper::Internal::Type::HashOf[XTwitterScraper::Internal::Type::Unknown],
531
+ api_name: :boundingBox
532
+
533
+ # @!attribute country
534
+ #
535
+ # @return [String, nil]
536
+ optional :country, String
537
+
538
+ # @!attribute country_code
539
+ #
540
+ # @return [String, nil]
541
+ optional :country_code, String, api_name: :countryCode
542
+
543
+ # @!attribute full_name
544
+ #
545
+ # @return [String, nil]
546
+ optional :full_name, String, api_name: :fullName
547
+
548
+ # @!attribute name
549
+ #
550
+ # @return [String, nil]
551
+ optional :name, String
552
+
553
+ # @!attribute place_type
554
+ #
555
+ # @return [String, nil]
556
+ optional :place_type, String, api_name: :placeType
557
+
558
+ # @!attribute url
559
+ #
560
+ # @return [String, nil]
561
+ optional :url, String
562
+
563
+ # @!method initialize(id: nil, bounding_box: nil, country: nil, country_code: nil, full_name: nil, name: nil, place_type: nil, url: nil)
564
+ # Public place metadata attached to a tweet.
565
+ #
566
+ # @param id [String]
567
+ # @param bounding_box [Hash{Symbol=>Object}]
568
+ # @param country [String]
569
+ # @param country_code [String]
570
+ # @param full_name [String]
571
+ # @param name [String]
572
+ # @param place_type [String]
573
+ # @param url [String]
574
+ end
575
+
576
+ # @see XTwitterScraper::Models::X::TweetDetail#previous_counts
577
+ class PreviousCounts < XTwitterScraper::Internal::Type::BaseModel
578
+ # @!attribute bookmark_count
579
+ #
580
+ # @return [Integer, nil]
581
+ optional :bookmark_count, Integer, api_name: :bookmarkCount
582
+
583
+ # @!attribute like_count
584
+ #
585
+ # @return [Integer, nil]
586
+ optional :like_count, Integer, api_name: :likeCount
587
+
588
+ # @!attribute quote_count
589
+ #
590
+ # @return [Integer, nil]
591
+ optional :quote_count, Integer, api_name: :quoteCount
592
+
593
+ # @!attribute reply_count
594
+ #
595
+ # @return [Integer, nil]
596
+ optional :reply_count, Integer, api_name: :replyCount
597
+
598
+ # @!attribute retweet_count
599
+ #
600
+ # @return [Integer, nil]
601
+ optional :retweet_count, Integer, api_name: :retweetCount
602
+
603
+ # @!method initialize(bookmark_count: nil, like_count: nil, quote_count: nil, reply_count: nil, retweet_count: nil)
604
+ # Engagement counts retained from a prior tweet edit.
605
+ #
606
+ # @param bookmark_count [Integer]
607
+ # @param like_count [Integer]
608
+ # @param quote_count [Integer]
609
+ # @param reply_count [Integer]
610
+ # @param retweet_count [Integer]
611
+ end
240
612
  end
241
613
  end
242
614
  end
@@ -121,10 +121,8 @@ module XTwitterScraper
121
121
  optional :min_retweets, Integer
122
122
 
123
123
  # @!attribute page_size
124
- # Maximum items requested from this page (1-100, default 20). The response can
125
- # contain fewer items because the source returned fewer, filters removed items, or
126
- # remaining credits cover fewer results. Keep requesting next_cursor while
127
- # has_next_page is true, even when a page is empty. The deprecated limit and count
124
+ # Maximum page items (1-100, default 20). Source, filters, or credits can reduce
125
+ # results. Continue while has_next_page is true. Deprecated limit and count
128
126
  # aliases remain accepted.
129
127
  #
130
128
  # @return [Integer, nil]
@@ -242,7 +240,7 @@ module XTwitterScraper
242
240
  #
243
241
  # @param min_retweets [Integer] Minimum retweets threshold.
244
242
  #
245
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
243
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
246
244
  #
247
245
  # @param quotes [Symbol, XTwitterScraper::Models::X::TweetGetQuotesParams::Quotes] Quote mode.
248
246
  #
@@ -78,6 +78,14 @@ module XTwitterScraper
78
78
  # @return [String, nil]
79
79
  optional :language, String
80
80
 
81
+ # @!attribute limit
82
+ # With mode=complete, maximum combined direct and nested reply rows (1-25000).
83
+ # Without complete mode, this is the deprecated pageSize alias and uses the normal
84
+ # 1-100 page range.
85
+ #
86
+ # @return [Integer, nil]
87
+ optional :limit, Integer
88
+
81
89
  # @!attribute media_type
82
90
  # Filter by media type.
83
91
  #
@@ -114,11 +122,16 @@ module XTwitterScraper
114
122
  # @return [Integer, nil]
115
123
  optional :min_retweets, Integer
116
124
 
125
+ # @!attribute mode
126
+ # Set complete for maximum-coverage collection. Complete mode accepts only limit.
127
+ # Remove cursor, pageSize, count, time ranges, and tweet filters.
128
+ #
129
+ # @return [Symbol, XTwitterScraper::Models::X::TweetGetRepliesParams::Mode, nil]
130
+ optional :mode, enum: -> { XTwitterScraper::X::TweetGetRepliesParams::Mode }
131
+
117
132
  # @!attribute page_size
118
- # Maximum items requested from this page (1-100, default 20). The response can
119
- # contain fewer items because the source returned fewer, filters removed items, or
120
- # remaining credits cover fewer results. Keep requesting next_cursor while
121
- # has_next_page is true, even when a page is empty. The deprecated limit and count
133
+ # Maximum page items (1-100, default 20). Source, filters, or credits can reduce
134
+ # results. Continue while has_next_page is true. Deprecated limit and count
122
135
  # aliases remain accepted.
123
136
  #
124
137
  # @return [Integer, nil]
@@ -196,7 +209,7 @@ module XTwitterScraper
196
209
  # @return [Boolean, nil]
197
210
  optional :verified_only, XTwitterScraper::Internal::Type::Boolean
198
211
 
199
- # @!method initialize(id:, any_words: nil, cashtags: nil, conversation_id: nil, cursor: nil, exact_phrase: nil, exclude_words: nil, from_user: nil, hashtags: nil, in_reply_to_tweet_id: nil, language: nil, media_type: nil, mentioning: nil, min_faves: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, page_size: nil, quotes: nil, quotes_of_tweet_id: nil, replies: nil, retweets: nil, retweets_of_tweet_id: nil, since_date: nil, since_time: nil, to_user: nil, until_date: nil, until_time: nil, url: nil, verified_only: nil, request_options: {})
212
+ # @!method initialize(id:, any_words: nil, cashtags: nil, conversation_id: nil, cursor: nil, exact_phrase: nil, exclude_words: nil, from_user: nil, hashtags: nil, in_reply_to_tweet_id: nil, language: nil, limit: nil, media_type: nil, mentioning: nil, min_faves: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, mode: nil, page_size: nil, quotes: nil, quotes_of_tweet_id: nil, replies: nil, retweets: nil, retweets_of_tweet_id: nil, since_date: nil, since_time: nil, to_user: nil, until_date: nil, until_time: nil, url: nil, verified_only: nil, request_options: {})
200
213
  # Some parameter documentations has been truncated, see
201
214
  # {XTwitterScraper::Models::X::TweetGetRepliesParams} for more details.
202
215
  #
@@ -222,6 +235,8 @@ module XTwitterScraper
222
235
  #
223
236
  # @param language [String] Language code filter, e.g. en or tr.
224
237
  #
238
+ # @param limit [Integer] With mode=complete, maximum combined direct and nested reply rows (1-25000). Wit
239
+ #
225
240
  # @param media_type [Symbol, XTwitterScraper::Models::X::TweetGetRepliesParams::MediaType] Filter by media type.
226
241
  #
227
242
  # @param mentioning [String] Filter tweets mentioning a username.
@@ -234,7 +249,9 @@ module XTwitterScraper
234
249
  #
235
250
  # @param min_retweets [Integer] Minimum retweets threshold.
236
251
  #
237
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
252
+ # @param mode [Symbol, XTwitterScraper::Models::X::TweetGetRepliesParams::Mode] Set complete for maximum-coverage collection. Complete mode accepts only limit.
253
+ #
254
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
238
255
  #
239
256
  # @param quotes [Symbol, XTwitterScraper::Models::X::TweetGetRepliesParams::Quotes] Quote mode.
240
257
  #
@@ -277,6 +294,17 @@ module XTwitterScraper
277
294
  # @return [Array<Symbol>]
278
295
  end
279
296
 
297
+ # Set complete for maximum-coverage collection. Complete mode accepts only limit.
298
+ # Remove cursor, pageSize, count, time ranges, and tweet filters.
299
+ module Mode
300
+ extend XTwitterScraper::Internal::Type::Enum
301
+
302
+ COMPLETE = :complete
303
+
304
+ # @!method self.values
305
+ # @return [Array<Symbol>]
306
+ end
307
+
280
308
  # Quote mode.
281
309
  module Quotes
282
310
  extend XTwitterScraper::Internal::Type::Enum