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
@@ -0,0 +1,241 @@
1
+ # frozen_string_literal: true
2
+
3
+ module XTwitterScraper
4
+ module Models
5
+ module X
6
+ # Paginated user profiles. No-mode follower, following, and verified follower
7
+ # requests merge independent views automatically. Response fields, page size,
8
+ # aliases, filters, and per-returned-profile billing stay unchanged. Existing
9
+ # unprefixed cursors retain legacy behavior. Follow next_cursor while
10
+ # has_next_page is true.
11
+ #
12
+ # @see XTwitterScraper::Resources::X::Users#retrieve_followers
13
+ module UserRetrieveFollowersResponse
14
+ extend XTwitterScraper::Internal::Type::Union
15
+
16
+ # Paginated user profiles. No-mode follower, following, and verified follower requests merge independent views automatically. Response fields, page size, aliases, filters, and per-returned-profile billing stay unchanged. Existing unprefixed cursors retain legacy behavior. Follow next_cursor while has_next_page is true.
17
+ variant -> { XTwitterScraper::PaginatedUsers }
18
+
19
+ # Paginated user profiles. No-mode follower, following, and verified follower requests merge independent views automatically. Response fields, page size, aliases, filters, and per-returned-profile billing stay unchanged. Existing unprefixed cursors retain legacy behavior. Follow next_cursor while has_next_page is true.
20
+ variant -> { XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse }
21
+
22
+ class UserListCoverageResponse < XTwitterScraper::Models::PaginatedUsers
23
+ # @!attribute diagnostic
24
+ # Coverage evidence across parallel relationship strategies.
25
+ #
26
+ # @return [XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic]
27
+ required :diagnostic,
28
+ -> { XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic }
29
+
30
+ # @!attribute has_next_page
31
+ #
32
+ # @return [Boolean, XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::HasNextPage, nil]
33
+ optional :has_next_page,
34
+ enum: -> { XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::HasNextPage }
35
+
36
+ # @!attribute next_cursor
37
+ #
38
+ # @return [Symbol, XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::NextCursor, nil]
39
+ optional :next_cursor,
40
+ enum: -> { XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::NextCursor }
41
+
42
+ # @!method initialize(diagnostic:, has_next_page: nil, next_cursor: nil)
43
+ # Paginated user profiles. No-mode follower, following, and verified follower
44
+ # requests merge independent views automatically. Response fields, page size,
45
+ # aliases, filters, and per-returned-profile billing stay unchanged. Existing
46
+ # unprefixed cursors retain legacy behavior. Follow next_cursor while
47
+ # has_next_page is true.
48
+ #
49
+ # @param diagnostic [XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic] Coverage evidence across parallel relationship strategies.
50
+ #
51
+ # @param has_next_page [Boolean, XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::HasNextPage]
52
+ #
53
+ # @param next_cursor [Symbol, XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::NextCursor]
54
+
55
+ class Diagnostic < XTwitterScraper::Internal::Type::BaseModel
56
+ # @!attribute complete
57
+ # True when every strategy exhausted its source.
58
+ #
59
+ # @return [Boolean]
60
+ required :complete, XTwitterScraper::Internal::Type::Boolean
61
+
62
+ # @!attribute cursor_failure_count
63
+ #
64
+ # @return [Integer]
65
+ required :cursor_failure_count, Integer, api_name: :cursorFailureCount
66
+
67
+ # @!attribute deadline_reached
68
+ #
69
+ # @return [Boolean]
70
+ required :deadline_reached, XTwitterScraper::Internal::Type::Boolean, api_name: :deadlineReached
71
+
72
+ # @!attribute duplicate_count
73
+ #
74
+ # @return [Integer]
75
+ required :duplicate_count, Integer, api_name: :duplicateCount
76
+
77
+ # @!attribute failed_strategy_count
78
+ #
79
+ # @return [Integer]
80
+ required :failed_strategy_count, Integer, api_name: :failedStrategyCount
81
+
82
+ # @!attribute malformed_count
83
+ #
84
+ # @return [Integer]
85
+ required :malformed_count, Integer, api_name: :malformedCount
86
+
87
+ # @!attribute pages_fetched
88
+ #
89
+ # @return [Integer]
90
+ required :pages_fetched, Integer, api_name: :pagesFetched
91
+
92
+ # @!attribute response_truncated
93
+ # Whether credits or the requested limit reduced output.
94
+ #
95
+ # @return [Boolean]
96
+ required :response_truncated,
97
+ XTwitterScraper::Internal::Type::Boolean,
98
+ api_name: :responseTruncated
99
+
100
+ # @!attribute result_limit_reached
101
+ #
102
+ # @return [Boolean]
103
+ required :result_limit_reached,
104
+ XTwitterScraper::Internal::Type::Boolean,
105
+ api_name: :resultLimitReached
106
+
107
+ # @!attribute returned_users
108
+ #
109
+ # @return [Integer]
110
+ required :returned_users, Integer, api_name: :returnedUsers
111
+
112
+ # @!attribute stalled_strategy_count
113
+ #
114
+ # @return [Integer]
115
+ required :stalled_strategy_count, Integer, api_name: :stalledStrategyCount
116
+
117
+ # @!attribute strategies
118
+ #
119
+ # @return [Array<XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic::Strategy>]
120
+ required :strategies,
121
+ -> { XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic::Strategy] }
122
+
123
+ # @!attribute strategy_count
124
+ #
125
+ # @return [Integer]
126
+ required :strategy_count, Integer, api_name: :strategyCount
127
+
128
+ # @!attribute unique_users
129
+ #
130
+ # @return [Integer]
131
+ required :unique_users, Integer, api_name: :uniqueUsers
132
+
133
+ # @!method initialize(complete:, cursor_failure_count:, deadline_reached:, duplicate_count:, failed_strategy_count:, malformed_count:, pages_fetched:, response_truncated:, result_limit_reached:, returned_users:, stalled_strategy_count:, strategies:, strategy_count:, unique_users:)
134
+ # Coverage evidence across parallel relationship strategies.
135
+ #
136
+ # @param complete [Boolean] True when every strategy exhausted its source.
137
+ #
138
+ # @param cursor_failure_count [Integer]
139
+ #
140
+ # @param deadline_reached [Boolean]
141
+ #
142
+ # @param duplicate_count [Integer]
143
+ #
144
+ # @param failed_strategy_count [Integer]
145
+ #
146
+ # @param malformed_count [Integer]
147
+ #
148
+ # @param pages_fetched [Integer]
149
+ #
150
+ # @param response_truncated [Boolean] Whether credits or the requested limit reduced output.
151
+ #
152
+ # @param result_limit_reached [Boolean]
153
+ #
154
+ # @param returned_users [Integer]
155
+ #
156
+ # @param stalled_strategy_count [Integer]
157
+ #
158
+ # @param strategies [Array<XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic::Strategy>]
159
+ #
160
+ # @param strategy_count [Integer]
161
+ #
162
+ # @param unique_users [Integer]
163
+
164
+ class Strategy < XTwitterScraper::Internal::Type::BaseModel
165
+ # @!attribute duplicate_count
166
+ #
167
+ # @return [Integer]
168
+ required :duplicate_count, Integer, api_name: :duplicateCount
169
+
170
+ # @!attribute pages_fetched
171
+ #
172
+ # @return [Integer]
173
+ required :pages_fetched, Integer, api_name: :pagesFetched
174
+
175
+ # @!attribute stop_reason
176
+ #
177
+ # @return [Symbol, XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason]
178
+ required :stop_reason,
179
+ enum: -> { XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason },
180
+ api_name: :stopReason
181
+
182
+ # @!attribute strategy
183
+ #
184
+ # @return [Integer]
185
+ required :strategy, Integer
186
+
187
+ # @!attribute unique_added
188
+ #
189
+ # @return [Integer]
190
+ required :unique_added, Integer, api_name: :uniqueAdded
191
+
192
+ # @!method initialize(duplicate_count:, pages_fetched:, stop_reason:, strategy:, unique_added:)
193
+ # @param duplicate_count [Integer]
194
+ # @param pages_fetched [Integer]
195
+ # @param stop_reason [Symbol, XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason]
196
+ # @param strategy [Integer]
197
+ # @param unique_added [Integer]
198
+
199
+ # @see XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse::Diagnostic::Strategy#stop_reason
200
+ module StopReason
201
+ extend XTwitterScraper::Internal::Type::Enum
202
+
203
+ CURSOR_FAILURE = :cursor_failure
204
+ DEADLINE = :deadline
205
+ EXHAUSTED = :exhausted
206
+ FAILED = :failed
207
+ PAGE_LIMIT = :page_limit
208
+ RESULT_LIMIT = :result_limit
209
+ STALLED = :stalled
210
+
211
+ # @!method self.values
212
+ # @return [Array<Symbol>]
213
+ end
214
+ end
215
+ end
216
+
217
+ module HasNextPage
218
+ extend XTwitterScraper::Internal::Type::Enum
219
+
220
+ FALSE = false
221
+
222
+ # @!method self.values
223
+ # @return [Array<Boolean>]
224
+ end
225
+
226
+ module NextCursor
227
+ extend XTwitterScraper::Internal::Type::Enum
228
+
229
+ EMPTY = :""
230
+
231
+ # @!method self.values
232
+ # @return [Array<Symbol>]
233
+ end
234
+ end
235
+
236
+ # @!method self.variants
237
+ # @return [Array(XTwitterScraper::Models::PaginatedUsers, XTwitterScraper::Models::X::UserRetrieveFollowersResponse::UserListCoverageResponse)]
238
+ end
239
+ end
240
+ end
241
+ end
@@ -17,31 +17,142 @@ module XTwitterScraper
17
17
  # @return [String]
18
18
  required :id, String
19
19
 
20
+ # @!attribute bio_contains
21
+ # Match any comma-separated or line-separated bio term, ignoring case.
22
+ #
23
+ # @return [String, nil]
24
+ optional :bio_contains, String
25
+
20
26
  # @!attribute cursor
21
27
  # Pagination cursor for followers-you-know
22
28
  #
23
29
  # @return [String, nil]
24
30
  optional :cursor, String
25
31
 
32
+ # @!attribute has_location
33
+ # Only return profiles with a location.
34
+ #
35
+ # @return [Boolean, nil]
36
+ optional :has_location, XTwitterScraper::Internal::Type::Boolean
37
+
38
+ # @!attribute has_website
39
+ # Only return profiles with a website.
40
+ #
41
+ # @return [Boolean, nil]
42
+ optional :has_website, XTwitterScraper::Internal::Type::Boolean
43
+
44
+ # @!attribute location_contains
45
+ # Match a location substring, ignoring case.
46
+ #
47
+ # @return [String, nil]
48
+ optional :location_contains, String
49
+
50
+ # @!attribute max_followers
51
+ # Maximum follower count. Missing counts pass this maximum.
52
+ #
53
+ # @return [Integer, nil]
54
+ optional :max_followers, Integer
55
+
56
+ # @!attribute max_following
57
+ # Maximum following count.
58
+ #
59
+ # @return [Integer, nil]
60
+ optional :max_following, Integer
61
+
62
+ # @!attribute max_statuses
63
+ # Maximum post count. maxPosts is also accepted.
64
+ #
65
+ # @return [Integer, nil]
66
+ optional :max_statuses, Integer
67
+
68
+ # @!attribute min_account_age_days
69
+ # Minimum account age in whole days.
70
+ #
71
+ # @return [Integer, nil]
72
+ optional :min_account_age_days, Integer
73
+
74
+ # @!attribute min_followers
75
+ # Minimum follower count. Filtering happens before billing.
76
+ #
77
+ # @return [Integer, nil]
78
+ optional :min_followers, Integer
79
+
80
+ # @!attribute min_following
81
+ # Minimum following count.
82
+ #
83
+ # @return [Integer, nil]
84
+ optional :min_following, Integer
85
+
86
+ # @!attribute min_statuses
87
+ # Minimum post count. minPosts is also accepted.
88
+ #
89
+ # @return [Integer, nil]
90
+ optional :min_statuses, Integer
91
+
26
92
  # @!attribute page_size
27
- # Maximum user profiles requested from this page (20-200, default 200). The
28
- # response can contain fewer profiles because the source returned fewer or
29
- # remaining credits cover fewer results. Keep requesting next_cursor while
30
- # has_next_page is true. The deprecated limit and count aliases remain accepted.
93
+ # Maximum user profiles requested from this page (20-200, default 200). Source,
94
+ # filters, or credits can return fewer profiles. Keep requesting next_cursor while
95
+ # has_next_page is true. Deprecated aliases remain accepted.
31
96
  #
32
97
  # @return [Integer, nil]
33
98
  optional :page_size, Integer
34
99
 
35
- # @!method initialize(id:, cursor: nil, page_size: nil, request_options: {})
100
+ # @!attribute username_contains
101
+ # Match a username substring, ignoring case.
102
+ #
103
+ # @return [String, nil]
104
+ optional :username_contains, String
105
+
106
+ # @!attribute verified_only
107
+ # Only return verified profiles.
108
+ #
109
+ # @return [Boolean, nil]
110
+ optional :verified_only, XTwitterScraper::Internal::Type::Boolean
111
+
112
+ # @!attribute verified_type
113
+ # Match the verification type exactly, ignoring case.
114
+ #
115
+ # @return [String, nil]
116
+ optional :verified_type, String
117
+
118
+ # @!method initialize(id:, bio_contains: nil, cursor: nil, has_location: nil, has_website: nil, location_contains: nil, max_followers: nil, max_following: nil, max_statuses: nil, min_account_age_days: nil, min_followers: nil, min_following: nil, min_statuses: nil, page_size: nil, username_contains: nil, verified_only: nil, verified_type: nil, request_options: {})
36
119
  # Some parameter documentations has been truncated, see
37
120
  # {XTwitterScraper::Models::X::UserRetrieveFollowersYouKnowParams} for more
38
121
  # details.
39
122
  #
40
123
  # @param id [String]
41
124
  #
125
+ # @param bio_contains [String] Match any comma-separated or line-separated bio term, ignoring case.
126
+ #
42
127
  # @param cursor [String] Pagination cursor for followers-you-know
43
128
  #
44
- # @param page_size [Integer] Maximum user profiles requested from this page (20-200, default 200). The respon
129
+ # @param has_location [Boolean] Only return profiles with a location.
130
+ #
131
+ # @param has_website [Boolean] Only return profiles with a website.
132
+ #
133
+ # @param location_contains [String] Match a location substring, ignoring case.
134
+ #
135
+ # @param max_followers [Integer] Maximum follower count. Missing counts pass this maximum.
136
+ #
137
+ # @param max_following [Integer] Maximum following count.
138
+ #
139
+ # @param max_statuses [Integer] Maximum post count. maxPosts is also accepted.
140
+ #
141
+ # @param min_account_age_days [Integer] Minimum account age in whole days.
142
+ #
143
+ # @param min_followers [Integer] Minimum follower count. Filtering happens before billing.
144
+ #
145
+ # @param min_following [Integer] Minimum following count.
146
+ #
147
+ # @param min_statuses [Integer] Minimum post count. minPosts is also accepted.
148
+ #
149
+ # @param page_size [Integer] Maximum user profiles requested from this page (20-200, default 200). Source, fi
150
+ #
151
+ # @param username_contains [String] Match a username substring, ignoring case.
152
+ #
153
+ # @param verified_only [Boolean] Only return verified profiles.
154
+ #
155
+ # @param verified_type [String] Match the verification type exactly, ignoring case.
45
156
  #
46
157
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}]
47
158
  end
@@ -23,28 +23,119 @@ module XTwitterScraper
23
23
  # @return [String, nil]
24
24
  optional :after, String
25
25
 
26
+ # @!attribute bio_contains
27
+ # Match any comma-separated or line-separated bio term, ignoring case.
28
+ #
29
+ # @return [String, nil]
30
+ optional :bio_contains, String
31
+
26
32
  # @!attribute cursor
27
- # Pagination cursor for following list
33
+ # Cursor from the previous response. Xquik cursors resume automatic coverage.
34
+ # Existing unprefixed cursors keep legacy standard behavior.
28
35
  #
29
36
  # @return [String, nil]
30
37
  optional :cursor, String
31
38
 
39
+ # @!attribute has_location
40
+ # Only return profiles with a location.
41
+ #
42
+ # @return [Boolean, nil]
43
+ optional :has_location, XTwitterScraper::Internal::Type::Boolean
44
+
45
+ # @!attribute has_website
46
+ # Only return profiles with a website.
47
+ #
48
+ # @return [Boolean, nil]
49
+ optional :has_website, XTwitterScraper::Internal::Type::Boolean
50
+
32
51
  # @!attribute limit
33
- # Legacy page size alias. Prefer pageSize.
52
+ # Legacy page-size alias outside explicit coverage mode. Coverage accepts 1-10000.
53
+ # Prefer pageSize.
34
54
  #
35
55
  # @return [Integer, nil]
36
56
  optional :limit, Integer
37
57
 
58
+ # @!attribute location_contains
59
+ # Match a location substring, ignoring case.
60
+ #
61
+ # @return [String, nil]
62
+ optional :location_contains, String
63
+
64
+ # @!attribute max_followers
65
+ # Maximum follower count. Missing counts pass this maximum.
66
+ #
67
+ # @return [Integer, nil]
68
+ optional :max_followers, Integer
69
+
70
+ # @!attribute max_following
71
+ # Maximum following count.
72
+ #
73
+ # @return [Integer, nil]
74
+ optional :max_following, Integer
75
+
76
+ # @!attribute max_statuses
77
+ # Maximum post count. maxPosts is also accepted.
78
+ #
79
+ # @return [Integer, nil]
80
+ optional :max_statuses, Integer
81
+
82
+ # @!attribute min_account_age_days
83
+ # Minimum account age in whole days.
84
+ #
85
+ # @return [Integer, nil]
86
+ optional :min_account_age_days, Integer
87
+
88
+ # @!attribute min_followers
89
+ # Minimum follower count. Filtering happens before billing.
90
+ #
91
+ # @return [Integer, nil]
92
+ optional :min_followers, Integer
93
+
94
+ # @!attribute min_following
95
+ # Minimum following count.
96
+ #
97
+ # @return [Integer, nil]
98
+ optional :min_following, Integer
99
+
100
+ # @!attribute min_statuses
101
+ # Minimum post count. minPosts is also accepted.
102
+ #
103
+ # @return [Integer, nil]
104
+ optional :min_statuses, Integer
105
+
106
+ # @!attribute mode
107
+ # Omit mode for resumable maximum coverage. Standard keeps legacy pagination.
108
+ # Coverage returns diagnostics once and rejects cursors.
109
+ #
110
+ # @return [Symbol, XTwitterScraper::Models::X::UserRetrieveFollowingParams::Mode, nil]
111
+ optional :mode, enum: -> { XTwitterScraper::X::UserRetrieveFollowingParams::Mode }
112
+
38
113
  # @!attribute page_size
39
- # Maximum user profiles requested from this page (20-200, default 200). The
40
- # response can contain fewer profiles because the source returned fewer or
41
- # remaining credits cover fewer results. Keep requesting next_cursor while
42
- # has_next_page is true. The deprecated limit and count aliases remain accepted.
114
+ # Maximum user profiles: automatic 300; standard 200. Sources return fewer
115
+ # profiles. Continue with has_next_page.
43
116
  #
44
117
  # @return [Integer, nil]
45
118
  optional :page_size, Integer
46
119
 
47
- # @!method initialize(id:, after: nil, cursor: nil, limit: nil, page_size: nil, request_options: {})
120
+ # @!attribute username_contains
121
+ # Match a username substring, ignoring case.
122
+ #
123
+ # @return [String, nil]
124
+ optional :username_contains, String
125
+
126
+ # @!attribute verified_only
127
+ # Only return verified profiles.
128
+ #
129
+ # @return [Boolean, nil]
130
+ optional :verified_only, XTwitterScraper::Internal::Type::Boolean
131
+
132
+ # @!attribute verified_type
133
+ # Match the verification type exactly, ignoring case.
134
+ #
135
+ # @return [String, nil]
136
+ optional :verified_type, String
137
+
138
+ # @!method initialize(id:, after: nil, bio_contains: nil, cursor: nil, has_location: nil, has_website: nil, limit: nil, location_contains: nil, max_followers: nil, max_following: nil, max_statuses: nil, min_account_age_days: nil, min_followers: nil, min_following: nil, min_statuses: nil, mode: nil, page_size: nil, username_contains: nil, verified_only: nil, verified_type: nil, request_options: {})
48
139
  # Some parameter documentations has been truncated, see
49
140
  # {XTwitterScraper::Models::X::UserRetrieveFollowingParams} for more details.
50
141
  #
@@ -52,13 +143,55 @@ module XTwitterScraper
52
143
  #
53
144
  # @param after [String] Deprecated following cursor alias. Prefer cursor.
54
145
  #
55
- # @param cursor [String] Pagination cursor for following list
146
+ # @param bio_contains [String] Match any comma-separated or line-separated bio term, ignoring case.
147
+ #
148
+ # @param cursor [String] Cursor from the previous response. Xquik cursors resume automatic coverage. Exis
149
+ #
150
+ # @param has_location [Boolean] Only return profiles with a location.
151
+ #
152
+ # @param has_website [Boolean] Only return profiles with a website.
153
+ #
154
+ # @param limit [Integer] Legacy page-size alias outside explicit coverage mode. Coverage accepts 1-10000.
56
155
  #
57
- # @param limit [Integer] Legacy page size alias. Prefer pageSize.
156
+ # @param location_contains [String] Match a location substring, ignoring case.
58
157
  #
59
- # @param page_size [Integer] Maximum user profiles requested from this page (20-200, default 200). The respon
158
+ # @param max_followers [Integer] Maximum follower count. Missing counts pass this maximum.
159
+ #
160
+ # @param max_following [Integer] Maximum following count.
161
+ #
162
+ # @param max_statuses [Integer] Maximum post count. maxPosts is also accepted.
163
+ #
164
+ # @param min_account_age_days [Integer] Minimum account age in whole days.
165
+ #
166
+ # @param min_followers [Integer] Minimum follower count. Filtering happens before billing.
167
+ #
168
+ # @param min_following [Integer] Minimum following count.
169
+ #
170
+ # @param min_statuses [Integer] Minimum post count. minPosts is also accepted.
171
+ #
172
+ # @param mode [Symbol, XTwitterScraper::Models::X::UserRetrieveFollowingParams::Mode] Omit mode for resumable maximum coverage. Standard keeps legacy pagination. Cove
173
+ #
174
+ # @param page_size [Integer] Maximum user profiles: automatic 300; standard 200. Sources return fewer profile
175
+ #
176
+ # @param username_contains [String] Match a username substring, ignoring case.
177
+ #
178
+ # @param verified_only [Boolean] Only return verified profiles.
179
+ #
180
+ # @param verified_type [String] Match the verification type exactly, ignoring case.
60
181
  #
61
182
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}]
183
+
184
+ # Omit mode for resumable maximum coverage. Standard keeps legacy pagination.
185
+ # Coverage returns diagnostics once and rejects cursors.
186
+ module Mode
187
+ extend XTwitterScraper::Internal::Type::Enum
188
+
189
+ STANDARD = :standard
190
+ COVERAGE = :coverage
191
+
192
+ # @!method self.values
193
+ # @return [Array<Symbol>]
194
+ end
62
195
  end
63
196
  end
64
197
  end