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
@@ -204,7 +204,7 @@ module XTwitterScraper
204
204
  #
205
205
  # @param min_retweets [Integer] Minimum retweets threshold.
206
206
  #
207
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
207
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
208
208
  #
209
209
  # @param quotes [Symbol, XTwitterScraper::Models::X::TweetGetQuotesParams::Quotes] Quote mode.
210
210
  #
@@ -272,13 +272,12 @@ module XTwitterScraper
272
272
  # Some parameter documentations has been truncated, see
273
273
  # {XTwitterScraper::Models::X::TweetGetRepliesParams} for more details.
274
274
  #
275
- # Returns visible replies. For an unfiltered first page, Xquik compares a terminal
276
- # page with the post's reported reply count. If the page is visibly incomplete,
277
- # the endpoint returns 424 `replies_incomplete` instead of presenting partial
278
- # coverage as complete. Use tweet search with a `conversation_id:{id}` query as
279
- # the broader fallback.
275
+ # Returns direct replies. Complete mode merges available timeline views, supported
276
+ # rankings, every forward cursor module, labeled hidden-content branches,
277
+ # exact-parent time partitions scaled to the reported reply count, and search. It
278
+ # separates nested replies and returns 424 below 80% coverage.
280
279
  #
281
- # @overload get_replies(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: {})
280
+ # @overload get_replies(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: {})
282
281
  #
283
282
  # @param id [String] Tweet ID to get replies
284
283
  #
@@ -302,6 +301,8 @@ module XTwitterScraper
302
301
  #
303
302
  # @param language [String] Language code filter, e.g. en or tr.
304
303
  #
304
+ # @param limit [Integer] With mode=complete, maximum combined direct and nested reply rows (1-25000). Wit
305
+ #
305
306
  # @param media_type [Symbol, XTwitterScraper::Models::X::TweetGetRepliesParams::MediaType] Filter by media type.
306
307
  #
307
308
  # @param mentioning [String] Filter tweets mentioning a username.
@@ -314,7 +315,9 @@ module XTwitterScraper
314
315
  #
315
316
  # @param min_retweets [Integer] Minimum retweets threshold.
316
317
  #
317
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
318
+ # @param mode [Symbol, XTwitterScraper::Models::X::TweetGetRepliesParams::Mode] Set complete for maximum-coverage collection. Complete mode accepts only limit.
319
+ #
320
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
318
321
  #
319
322
  # @param quotes [Symbol, XTwitterScraper::Models::X::TweetGetRepliesParams::Quotes] Quote mode.
320
323
  #
@@ -342,7 +345,7 @@ module XTwitterScraper
342
345
  #
343
346
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}, nil]
344
347
  #
345
- # @return [XTwitterScraper::Models::PaginatedTweets]
348
+ # @return [XTwitterScraper::Models::X::TweetGetRepliesResponse]
346
349
  #
347
350
  # @see XTwitterScraper::Models::X::TweetGetRepliesParams
348
351
  def get_replies(id, params = {})
@@ -373,7 +376,7 @@ module XTwitterScraper
373
376
  until_time: "untilTime",
374
377
  verified_only: "verifiedOnly"
375
378
  ),
376
- model: XTwitterScraper::PaginatedTweets,
379
+ model: XTwitterScraper::Models::X::TweetGetRepliesResponse,
377
380
  options: options
378
381
  )
379
382
  end
@@ -419,7 +422,7 @@ module XTwitterScraper
419
422
  #
420
423
  # @param cursor [String] Pagination cursor for thread tweets
421
424
  #
422
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
425
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
423
426
  #
424
427
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}, nil]
425
428
  #
@@ -229,7 +229,7 @@ module XTwitterScraper
229
229
  #
230
230
  # @param min_retweets [Integer] Minimum retweets threshold.
231
231
  #
232
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
232
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
233
233
  #
234
234
  # @param quotes [Symbol, XTwitterScraper::Models::X::UserRetrieveLikesParams::Quotes] Quote mode.
235
235
  #
@@ -328,7 +328,7 @@ module XTwitterScraper
328
328
  #
329
329
  # @param min_retweets [Integer] Minimum retweets threshold.
330
330
  #
331
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
331
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
332
332
  #
333
333
  # @param quotes [Symbol, XTwitterScraper::Models::X::UserRetrieveMediaParams::Quotes] Quote mode.
334
334
  #
@@ -427,7 +427,7 @@ module XTwitterScraper
427
427
  #
428
428
  # @param min_retweets [Integer] Minimum retweets threshold.
429
429
  #
430
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
430
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
431
431
  #
432
432
  # @param quotes [Symbol, XTwitterScraper::Models::X::UserRetrieveMentionsParams::Quotes] Quote mode.
433
433
  #
@@ -534,7 +534,7 @@ module XTwitterScraper
534
534
  #
535
535
  # @param min_retweets [Integer] Minimum retweets threshold.
536
536
  #
537
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
537
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
538
538
  #
539
539
  # @param quotes [Symbol, XTwitterScraper::Models::X::UserRetrieveRepliesParams::Quotes] Quote mode.
540
540
  #
@@ -663,7 +663,7 @@ module XTwitterScraper
663
663
  #
664
664
  # @param min_retweets [Integer] Minimum retweets threshold.
665
665
  #
666
- # @param page_size [Integer] Maximum items requested from this page (1-100, default 20). The response can con
666
+ # @param page_size [Integer] Maximum page items (1-100, default 20). Source, filters, or credits can reduce r
667
667
  #
668
668
  # @param quotes [Symbol, XTwitterScraper::Models::X::UserRetrieveTweetsParams::Quotes] Quote mode.
669
669
  #
@@ -5,5 +5,5 @@
5
5
  # frozen_string_literal: true
6
6
 
7
7
  module XTwitterScraper
8
- VERSION = "0.6.0"
8
+ VERSION = "0.7.0"
9
9
  end
@@ -57,6 +57,7 @@ require_relative "x_twitter_scraper/internal/transport/base_client"
57
57
  require_relative "x_twitter_scraper/internal/transport/pooled_net_requester"
58
58
  require_relative "x_twitter_scraper/client"
59
59
  require_relative "x_twitter_scraper/models/user_profile"
60
+ require_relative "x_twitter_scraper/models/paginated_tweets"
60
61
  require_relative "x_twitter_scraper/models/account_retrieve_params"
61
62
  require_relative "x_twitter_scraper/models/account_retrieve_response"
62
63
  require_relative "x_twitter_scraper/models/account_set_x_username_params"
@@ -134,7 +135,6 @@ require_relative "x_twitter_scraper/models/monitors/keyword_retrieve_response"
134
135
  require_relative "x_twitter_scraper/models/monitors/keyword_update_params"
135
136
  require_relative "x_twitter_scraper/models/monitors/keyword_update_response"
136
137
  require_relative "x_twitter_scraper/models/monitor_update_params"
137
- require_relative "x_twitter_scraper/models/paginated_tweets"
138
138
  require_relative "x_twitter_scraper/models/paginated_users"
139
139
  require_relative "x_twitter_scraper/models/radar_item"
140
140
  require_relative "x_twitter_scraper/models/radar_retrieve_trending_topics_params"
@@ -243,6 +243,7 @@ require_relative "x_twitter_scraper/models/x/tweet_detail"
243
243
  require_relative "x_twitter_scraper/models/x/tweet_get_favoriters_params"
244
244
  require_relative "x_twitter_scraper/models/x/tweet_get_quotes_params"
245
245
  require_relative "x_twitter_scraper/models/x/tweet_get_replies_params"
246
+ require_relative "x_twitter_scraper/models/x/tweet_get_replies_response"
246
247
  require_relative "x_twitter_scraper/models/x/tweet_get_retweeters_params"
247
248
  require_relative "x_twitter_scraper/models/x/tweet_get_thread_params"
248
249
  require_relative "x_twitter_scraper/models/x/tweet_list_params"
@@ -98,13 +98,6 @@ module XTwitterScraper
98
98
  )
99
99
  end
100
100
 
101
- # Whether the disclosure can be edited on X.
102
- sig { returns(T.nilable(T::Boolean)) }
103
- attr_reader :can_edit
104
-
105
- sig { params(can_edit: T::Boolean).void }
106
- attr_writer :can_edit
107
-
108
101
  # Source of the AI-generated media disclosure.
109
102
  sig { returns(T.nilable(String)) }
110
103
  attr_reader :detection_source
@@ -121,14 +114,11 @@ module XTwitterScraper
121
114
 
122
115
  sig do
123
116
  params(
124
- can_edit: T::Boolean,
125
117
  detection_source: String,
126
118
  has_ai_generated_media: T::Boolean
127
119
  ).returns(T.attached_class)
128
120
  end
129
121
  def self.new(
130
- # Whether the disclosure can be edited on X.
131
- can_edit: nil,
132
122
  # Source of the AI-generated media disclosure.
133
123
  detection_source: nil,
134
124
  # True when X labels the tweet as containing AI-generated media.
@@ -138,11 +128,7 @@ module XTwitterScraper
138
128
 
139
129
  sig do
140
130
  override.returns(
141
- {
142
- can_edit: T::Boolean,
143
- detection_source: String,
144
- has_ai_generated_media: T::Boolean
145
- }
131
+ { detection_source: String, has_ai_generated_media: T::Boolean }
146
132
  )
147
133
  end
148
134
  def to_hash