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
@@ -113,13 +113,6 @@ module XTwitterScraper
113
113
  sig { params(invites_policy: String).void }
114
114
  attr_writer :invites_policy
115
115
 
116
- # Whether the authenticated viewer is a member
117
- sig { returns(T.nilable(T::Boolean)) }
118
- attr_reader :is_member
119
-
120
- sig { params(is_member: T::Boolean).void }
121
- attr_writer :is_member
122
-
123
116
  # Whether the community is marked sensitive
124
117
  sig { returns(T.nilable(T::Boolean)) }
125
118
  attr_reader :is_nsfw
@@ -173,13 +166,6 @@ module XTwitterScraper
173
166
  end
174
167
  attr_writer :primary_topic
175
168
 
176
- # Authenticated viewer's community role
177
- sig { returns(T.nilable(String)) }
178
- attr_reader :role
179
-
180
- sig { params(role: String).void }
181
- attr_writer :role
182
-
183
169
  # Community rules
184
170
  sig do
185
171
  returns(
@@ -212,7 +198,6 @@ module XTwitterScraper
212
198
  XTwitterScraper::Models::X::CommunityRetrieveInfoResponse::Community::Creator::OrHash,
213
199
  description: String,
214
200
  invites_policy: String,
215
- is_member: T::Boolean,
216
201
  is_nsfw: T::Boolean,
217
202
  join_policy: String,
218
203
  member_count: Integer,
@@ -220,7 +205,6 @@ module XTwitterScraper
220
205
  name: String,
221
206
  primary_topic:
222
207
  XTwitterScraper::Models::X::CommunityRetrieveInfoResponse::Community::PrimaryTopic::OrHash,
223
- role: String,
224
208
  rules:
225
209
  T::Array[
226
210
  XTwitterScraper::Models::X::CommunityRetrieveInfoResponse::Community::Rule::OrHash
@@ -239,8 +223,6 @@ module XTwitterScraper
239
223
  description: nil,
240
224
  # Invitation policy
241
225
  invites_policy: nil,
242
- # Whether the authenticated viewer is a member
243
- is_member: nil,
244
226
  # Whether the community is marked sensitive
245
227
  is_nsfw: nil,
246
228
  # Join policy (open or restricted)
@@ -253,8 +235,6 @@ module XTwitterScraper
253
235
  name: nil,
254
236
  # Primary topic
255
237
  primary_topic: nil,
256
- # Authenticated viewer's community role
257
- role: nil,
258
238
  # Community rules
259
239
  rules: nil
260
240
  )
@@ -270,7 +250,6 @@ module XTwitterScraper
270
250
  XTwitterScraper::Models::X::CommunityRetrieveInfoResponse::Community::Creator,
271
251
  description: String,
272
252
  invites_policy: String,
273
- is_member: T::Boolean,
274
253
  is_nsfw: T::Boolean,
275
254
  join_policy: String,
276
255
  member_count: Integer,
@@ -278,7 +257,6 @@ module XTwitterScraper
278
257
  name: String,
279
258
  primary_topic:
280
259
  XTwitterScraper::Models::X::CommunityRetrieveInfoResponse::Community::PrimaryTopic,
281
- role: String,
282
260
  rules:
283
261
  T::Array[
284
262
  XTwitterScraper::Models::X::CommunityRetrieveInfoResponse::Community::Rule
@@ -34,10 +34,8 @@ module XTwitterScraper
34
34
  sig { params(cursor: String).void }
35
35
  attr_writer :cursor
36
36
 
37
- # Maximum items requested from this page (1-100, default 20). The response can
38
- # contain fewer items because the source returned fewer, filters removed items, or
39
- # remaining credits cover fewer results. Keep requesting next_cursor while
40
- # has_next_page is true, even when a page is empty. The deprecated limit and count
37
+ # Maximum page items (1-100, default 20). Source, filters, or credits can reduce
38
+ # results. Continue while has_next_page is true. Deprecated limit and count
41
39
  # aliases remain accepted.
42
40
  sig { returns(T.nilable(Integer)) }
43
41
  attr_reader :page_size
@@ -81,10 +79,8 @@ module XTwitterScraper
81
79
  q:,
82
80
  # Pagination cursor for community search
83
81
  cursor: nil,
84
- # Maximum items requested from this page (1-100, default 20). The response can
85
- # contain fewer items because the source returned fewer, filters removed items, or
86
- # remaining credits cover fewer results. Keep requesting next_cursor while
87
- # has_next_page is true, even when a page is empty. The deprecated limit and count
82
+ # Maximum page items (1-100, default 20). Source, filters, or credits can reduce
83
+ # results. Continue while has_next_page is true. Deprecated limit and count
88
84
  # aliases remain accepted.
89
85
  page_size: nil,
90
86
  # Sort order (Latest or Top)
@@ -36,10 +36,8 @@ module XTwitterScraper
36
36
  sig { params(include_replies: T::Boolean).void }
37
37
  attr_writer :include_replies
38
38
 
39
- # Maximum items requested from this page (1-100, default 20). The response can
40
- # contain fewer items because the source returned fewer, filters removed items, or
41
- # remaining credits cover fewer results. Keep requesting next_cursor while
42
- # has_next_page is true, even when a page is empty. The deprecated limit and count
39
+ # Maximum page items (1-100, default 20). Source, filters, or credits can reduce
40
+ # results. Continue while has_next_page is true. Deprecated limit and count
43
41
  # aliases remain accepted.
44
42
  sig { returns(T.nilable(Integer)) }
45
43
  attr_reader :page_size
@@ -78,10 +76,8 @@ module XTwitterScraper
78
76
  cursor: nil,
79
77
  # Include replies (default false)
80
78
  include_replies: nil,
81
- # Maximum items requested from this page (1-100, default 20). The response can
82
- # contain fewer items because the source returned fewer, filters removed items, or
83
- # remaining credits cover fewer results. Keep requesting next_cursor while
84
- # has_next_page is true, even when a page is empty. The deprecated limit and count
79
+ # Maximum page items (1-100, default 20). Source, filters, or credits can reduce
80
+ # results. Continue while has_next_page is true. Deprecated limit and count
85
81
  # aliases remain accepted.
86
82
  page_size: nil,
87
83
  # Unix timestamp - filter after
@@ -16,13 +16,23 @@ module XTwitterScraper
16
16
  )
17
17
  end
18
18
 
19
+ sig { returns(Integer) }
20
+ attr_accessor :followers
21
+
22
+ sig { returns(T::Boolean) }
23
+ attr_accessor :verified
24
+
19
25
  # Tweet author profile. The lookup route always includes follower count and
20
26
  # verification state. Other profile fields appear when available.
21
- sig { returns(T.attached_class) }
22
- def self.new
27
+ sig do
28
+ params(followers: Integer, verified: T::Boolean).returns(
29
+ T.attached_class
30
+ )
31
+ end
32
+ def self.new(followers:, verified:)
23
33
  end
24
34
 
25
- sig { override.returns({}) }
35
+ sig { override.returns({ followers: Integer, verified: T::Boolean }) }
26
36
  def to_hash
27
37
  end
28
38
  end