x-twitter-scraper 0.10.4 → 0.10.6
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -0
- data/README.md +69 -29
- data/lib/x_twitter_scraper/client.rb +0 -13
- data/lib/x_twitter_scraper/file_part.rb +0 -3
- data/lib/x_twitter_scraper/internal/transport/base_client.rb +3 -211
- data/lib/x_twitter_scraper/internal/transport/pooled_net_requester.rb +2 -56
- data/lib/x_twitter_scraper/internal/type/array_of.rb +1 -77
- data/lib/x_twitter_scraper/internal/type/base_model.rb +3 -133
- data/lib/x_twitter_scraper/internal/type/base_page.rb +0 -13
- data/lib/x_twitter_scraper/internal/type/boolean.rb +0 -38
- data/lib/x_twitter_scraper/internal/type/converter.rb +0 -136
- data/lib/x_twitter_scraper/internal/type/enum.rb +1 -80
- data/lib/x_twitter_scraper/internal/type/file_input.rb +0 -39
- data/lib/x_twitter_scraper/internal/type/hash_of.rb +1 -77
- data/lib/x_twitter_scraper/internal/type/request_parameters.rb +0 -13
- data/lib/x_twitter_scraper/internal/type/union.rb +0 -101
- data/lib/x_twitter_scraper/internal/type/unknown.rb +0 -40
- data/lib/x_twitter_scraper/internal/util.rb +2 -307
- data/lib/x_twitter_scraper/models/account_retrieve_response.rb +0 -3
- data/lib/x_twitter_scraper/models/compose_create_params.rb +0 -4
- data/lib/x_twitter_scraper/models/compose_create_response.rb +0 -4
- data/lib/x_twitter_scraper/models/credit_retrieve_balance_response.rb +0 -3
- data/lib/x_twitter_scraper/models/credit_topup_balance_response.rb +0 -3
- data/lib/x_twitter_scraper/models/draft_list_params.rb +0 -3
- data/lib/x_twitter_scraper/models/draw_export_params.rb +0 -3
- data/lib/x_twitter_scraper/models/draw_list_params.rb +0 -3
- data/lib/x_twitter_scraper/models/draw_run_response.rb +0 -3
- data/lib/x_twitter_scraper/models/embedded_tweet.rb +0 -3
- data/lib/x_twitter_scraper/models/event.rb +0 -3
- data/lib/x_twitter_scraper/models/event_list_params.rb +0 -3
- data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +0 -3
- data/lib/x_twitter_scraper/models/extraction_list_params.rb +0 -3
- data/lib/x_twitter_scraper/models/extraction_run_params.rb +0 -3
- data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +0 -3
- data/lib/x_twitter_scraper/models/guest_wallet_retrieve_status_response.rb +0 -3
- data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +0 -3
- data/lib/x_twitter_scraper/models/radar_item.rb +0 -3
- data/lib/x_twitter_scraper/models/radar_retrieve_trending_topics_params.rb +0 -3
- data/lib/x_twitter_scraper/models/search_tweet.rb +0 -3
- data/lib/x_twitter_scraper/models/trend_list_params.rb +0 -3
- data/lib/x_twitter_scraper/models/webhook.rb +0 -3
- data/lib/x_twitter_scraper/models/x/communities/join_create_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/communities/join_delete_all_response.rb +0 -4
- data/lib/x_twitter_scraper/models/x/communities/tweet_list_by_community_params.rb +0 -4
- data/lib/x_twitter_scraper/models/x/communities/tweet_list_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/community_create_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/community_delete_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/community_retrieve_members_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/community_retrieve_moderators_params.rb +0 -4
- data/lib/x_twitter_scraper/models/x/community_retrieve_search_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/dm_retrieve_history_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/dm_retrieve_history_response.rb +0 -4
- data/lib/x_twitter_scraper/models/x/dm_send_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/list_retrieve_followers_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/list_retrieve_members_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/list_retrieve_tweets_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/media_upload_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/profile_update_avatar_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/profile_update_banner_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/profile_update_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_create_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_create_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_delete_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_detail.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_get_favoriters_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_get_retweeters_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_get_thread_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_retrieve_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweet_search_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweets/like_create_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweets/like_delete_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweets/retweet_create_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/tweets/retweet_delete_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_remove_follower_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_batch_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_batch_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_followers_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rb +0 -4
- data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_search_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +0 -3
- data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rb +0 -4
- data/lib/x_twitter_scraper/models/x/users/follow_create_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/users/follow_delete_all_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/write_action_retrieve_response.rb +0 -3
- data/lib/x_twitter_scraper/models/x/x_account.rb +0 -3
- data/lib/x_twitter_scraper/models/x_get_article_response.rb +0 -4
- data/lib/x_twitter_scraper/request_options.rb +0 -2
- data/lib/x_twitter_scraper/resources/drafts.rb +0 -3
- data/lib/x_twitter_scraper/resources/draws.rb +0 -6
- data/lib/x_twitter_scraper/resources/events.rb +0 -3
- data/lib/x_twitter_scraper/resources/extractions.rb +0 -9
- data/lib/x_twitter_scraper/resources/guest_wallets.rb +0 -6
- data/lib/x_twitter_scraper/resources/monitors/keywords.rb +1 -1
- data/lib/x_twitter_scraper/resources/monitors.rb +1 -1
- data/lib/x_twitter_scraper/resources/radar.rb +0 -3
- data/lib/x_twitter_scraper/resources/support/tickets.rb +0 -6
- data/lib/x_twitter_scraper/resources/trends.rb +0 -3
- data/lib/x_twitter_scraper/resources/x/communities/join.rb +0 -6
- data/lib/x_twitter_scraper/resources/x/communities/tweets.rb +0 -7
- data/lib/x_twitter_scraper/resources/x/communities.rb +0 -16
- data/lib/x_twitter_scraper/resources/x/dm.rb +0 -6
- data/lib/x_twitter_scraper/resources/x/lists.rb +0 -9
- data/lib/x_twitter_scraper/resources/x/media.rb +0 -3
- data/lib/x_twitter_scraper/resources/x/profile.rb +0 -9
- data/lib/x_twitter_scraper/resources/x/tweets/like.rb +0 -6
- data/lib/x_twitter_scraper/resources/x/tweets/retweet.rb +0 -6
- data/lib/x_twitter_scraper/resources/x/tweets.rb +0 -24
- data/lib/x_twitter_scraper/resources/x/users/follow.rb +0 -6
- data/lib/x_twitter_scraper/resources/x/users.rb +0 -38
- data/lib/x_twitter_scraper/resources/x.rb +0 -3
- data/lib/x_twitter_scraper/version.rb +1 -1
- data/lib/x_twitter_scraper.rb +0 -5
- data/rbi/x_twitter_scraper/client.rbi +0 -4
- data/rbi/x_twitter_scraper/file_part.rbi +0 -1
- data/rbi/x_twitter_scraper/internal/transport/base_client.rbi +0 -19
- data/rbi/x_twitter_scraper/internal/transport/pooled_net_requester.rbi +0 -9
- data/rbi/x_twitter_scraper/internal/type/array_of.rbi +0 -10
- data/rbi/x_twitter_scraper/internal/type/base_model.rbi +0 -47
- data/rbi/x_twitter_scraper/internal/type/base_page.rbi +0 -4
- data/rbi/x_twitter_scraper/internal/type/boolean.rbi +0 -8
- data/rbi/x_twitter_scraper/internal/type/converter.rbi +0 -36
- data/rbi/x_twitter_scraper/internal/type/enum.rbi +0 -20
- data/rbi/x_twitter_scraper/internal/type/file_input.rbi +0 -10
- data/rbi/x_twitter_scraper/internal/type/hash_of.rbi +0 -10
- data/rbi/x_twitter_scraper/internal/type/request_parameters.rbi +0 -4
- data/rbi/x_twitter_scraper/internal/type/union.rbi +0 -18
- data/rbi/x_twitter_scraper/internal/type/unknown.rbi +0 -8
- data/rbi/x_twitter_scraper/internal/util.rbi +0 -75
- data/rbi/x_twitter_scraper/internal.rbi +0 -2
- data/rbi/x_twitter_scraper/request_options.rbi +0 -1
- data/rbi/x_twitter_scraper/resources/monitors/keywords.rbi +1 -1
- data/rbi/x_twitter_scraper/resources/monitors.rbi +1 -1
- data/sig/x_twitter_scraper/internal/transport/base_client.rbs +0 -1
- metadata +13 -5
|
@@ -6,16 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
module XTwitterScraper
|
|
8
8
|
module Internal
|
|
9
|
-
# @api private
|
|
10
9
|
module Util
|
|
11
10
|
extend XTwitterScraper::Internal::Util::SorbetRuntimeSupport
|
|
12
11
|
|
|
13
|
-
# @api private
|
|
14
12
|
sig { returns(Float) }
|
|
15
13
|
def self.monotonic_secs
|
|
16
14
|
end
|
|
17
15
|
|
|
18
|
-
# @api private
|
|
19
16
|
sig do
|
|
20
17
|
params(ns: T.any(T::Module[T.anything], T::Class[T.anything])).returns(
|
|
21
18
|
T::Enumerable[T.any(T::Module[T.anything], T::Class[T.anything])]
|
|
@@ -25,24 +22,20 @@ module XTwitterScraper
|
|
|
25
22
|
end
|
|
26
23
|
|
|
27
24
|
class << self
|
|
28
|
-
# @api private
|
|
29
25
|
sig { returns(String) }
|
|
30
26
|
def arch
|
|
31
27
|
end
|
|
32
28
|
|
|
33
|
-
# @api private
|
|
34
29
|
sig { returns(String) }
|
|
35
30
|
def os
|
|
36
31
|
end
|
|
37
32
|
end
|
|
38
33
|
|
|
39
34
|
class << self
|
|
40
|
-
# @api private
|
|
41
35
|
sig { params(input: T.anything).returns(T::Boolean) }
|
|
42
36
|
def primitive?(input)
|
|
43
37
|
end
|
|
44
38
|
|
|
45
|
-
# @api private
|
|
46
39
|
sig do
|
|
47
40
|
params(input: T.any(String, T::Boolean)).returns(
|
|
48
41
|
T.any(T::Boolean, T.anything)
|
|
@@ -51,7 +44,6 @@ module XTwitterScraper
|
|
|
51
44
|
def coerce_boolean(input)
|
|
52
45
|
end
|
|
53
46
|
|
|
54
|
-
# @api private
|
|
55
47
|
sig do
|
|
56
48
|
params(input: T.any(String, T::Boolean)).returns(
|
|
57
49
|
T.nilable(T::Boolean)
|
|
@@ -60,7 +52,6 @@ module XTwitterScraper
|
|
|
60
52
|
def coerce_boolean!(input)
|
|
61
53
|
end
|
|
62
54
|
|
|
63
|
-
# @api private
|
|
64
55
|
sig do
|
|
65
56
|
params(input: T.any(String, Integer)).returns(
|
|
66
57
|
T.any(Integer, T.anything)
|
|
@@ -69,7 +60,6 @@ module XTwitterScraper
|
|
|
69
60
|
def coerce_integer(input)
|
|
70
61
|
end
|
|
71
62
|
|
|
72
|
-
# @api private
|
|
73
63
|
sig do
|
|
74
64
|
params(input: T.any(String, Integer, Float)).returns(
|
|
75
65
|
T.any(Float, T.anything)
|
|
@@ -78,7 +68,6 @@ module XTwitterScraper
|
|
|
78
68
|
def coerce_float(input)
|
|
79
69
|
end
|
|
80
70
|
|
|
81
|
-
# @api private
|
|
82
71
|
sig do
|
|
83
72
|
params(input: T.anything).returns(
|
|
84
73
|
T.any(T::Hash[T.anything, T.anything], T.anything)
|
|
@@ -87,7 +76,6 @@ module XTwitterScraper
|
|
|
87
76
|
def coerce_hash(input)
|
|
88
77
|
end
|
|
89
78
|
|
|
90
|
-
# @api private
|
|
91
79
|
sig do
|
|
92
80
|
params(input: T.anything).returns(
|
|
93
81
|
T.nilable(T::Hash[T.anything, T.anything])
|
|
@@ -98,7 +86,6 @@ module XTwitterScraper
|
|
|
98
86
|
end
|
|
99
87
|
|
|
100
88
|
class << self
|
|
101
|
-
# @api private
|
|
102
89
|
sig do
|
|
103
90
|
params(lhs: T.anything, rhs: T.anything, concat: T::Boolean).returns(
|
|
104
91
|
T.anything
|
|
@@ -107,10 +94,6 @@ module XTwitterScraper
|
|
|
107
94
|
private def deep_merge_lr(lhs, rhs, concat: false)
|
|
108
95
|
end
|
|
109
96
|
|
|
110
|
-
# @api private
|
|
111
|
-
#
|
|
112
|
-
# Recursively merge one hash with another. If the values at a given key are not
|
|
113
|
-
# both hashes, just take the new value.
|
|
114
97
|
sig do
|
|
115
98
|
params(
|
|
116
99
|
values: T::Array[T.anything],
|
|
@@ -120,14 +103,11 @@ module XTwitterScraper
|
|
|
120
103
|
end
|
|
121
104
|
def deep_merge(
|
|
122
105
|
*values,
|
|
123
|
-
# the value to return if no values are provided.
|
|
124
106
|
sentinel: nil,
|
|
125
|
-
# whether to merge sequences by concatenation.
|
|
126
107
|
concat: false
|
|
127
108
|
)
|
|
128
109
|
end
|
|
129
110
|
|
|
130
|
-
# @api private
|
|
131
111
|
sig do
|
|
132
112
|
params(
|
|
133
113
|
data:
|
|
@@ -152,28 +132,23 @@ module XTwitterScraper
|
|
|
152
132
|
end
|
|
153
133
|
end
|
|
154
134
|
|
|
155
|
-
# https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
|
|
156
135
|
RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
|
|
157
136
|
|
|
158
137
|
class << self
|
|
159
|
-
# @api private
|
|
160
138
|
sig { params(uri: URI::Generic).returns(String) }
|
|
161
139
|
def uri_origin(uri)
|
|
162
140
|
end
|
|
163
141
|
|
|
164
|
-
# @api private
|
|
165
142
|
sig { params(path: T.any(String, Integer)).returns(String) }
|
|
166
143
|
def encode_path(path)
|
|
167
144
|
end
|
|
168
145
|
|
|
169
|
-
# @api private
|
|
170
146
|
sig { params(path: T.any(String, T::Array[String])).returns(String) }
|
|
171
147
|
def interpolate_path(path)
|
|
172
148
|
end
|
|
173
149
|
end
|
|
174
150
|
|
|
175
151
|
class << self
|
|
176
|
-
# @api private
|
|
177
152
|
sig do
|
|
178
153
|
params(query: T.nilable(String)).returns(
|
|
179
154
|
T::Hash[String, T::Array[String]]
|
|
@@ -182,7 +157,6 @@ module XTwitterScraper
|
|
|
182
157
|
def decode_query(query)
|
|
183
158
|
end
|
|
184
159
|
|
|
185
|
-
# @api private
|
|
186
160
|
sig do
|
|
187
161
|
params(
|
|
188
162
|
query:
|
|
@@ -207,7 +181,6 @@ module XTwitterScraper
|
|
|
207
181
|
end
|
|
208
182
|
|
|
209
183
|
class << self
|
|
210
|
-
# @api private
|
|
211
184
|
sig do
|
|
212
185
|
params(url: T.any(URI::Generic, String)).returns(
|
|
213
186
|
XTwitterScraper::Internal::Util::ParsedUri
|
|
@@ -216,7 +189,6 @@ module XTwitterScraper
|
|
|
216
189
|
def parse_uri(url)
|
|
217
190
|
end
|
|
218
191
|
|
|
219
|
-
# @api private
|
|
220
192
|
sig do
|
|
221
193
|
params(parsed: XTwitterScraper::Internal::Util::ParsedUri).returns(
|
|
222
194
|
URI::Generic
|
|
@@ -225,7 +197,6 @@ module XTwitterScraper
|
|
|
225
197
|
def unparse_uri(parsed)
|
|
226
198
|
end
|
|
227
199
|
|
|
228
|
-
# @api private
|
|
229
200
|
sig do
|
|
230
201
|
params(
|
|
231
202
|
lhs: XTwitterScraper::Internal::Util::ParsedUri,
|
|
@@ -237,7 +208,6 @@ module XTwitterScraper
|
|
|
237
208
|
end
|
|
238
209
|
|
|
239
210
|
class << self
|
|
240
|
-
# @api private
|
|
241
211
|
sig do
|
|
242
212
|
params(
|
|
243
213
|
headers:
|
|
@@ -257,26 +227,19 @@ module XTwitterScraper
|
|
|
257
227
|
end
|
|
258
228
|
end
|
|
259
229
|
|
|
260
|
-
# @api private
|
|
261
|
-
#
|
|
262
|
-
# An adapter that satisfies the IO interface required by `::IO.copy_stream`
|
|
263
230
|
class ReadIOAdapter
|
|
264
|
-
# @api private
|
|
265
231
|
sig { returns(T.nilable(T::Boolean)) }
|
|
266
232
|
def close?
|
|
267
233
|
end
|
|
268
234
|
|
|
269
|
-
# @api private
|
|
270
235
|
sig { void }
|
|
271
236
|
def close
|
|
272
237
|
end
|
|
273
238
|
|
|
274
|
-
# @api private
|
|
275
239
|
sig { params(max_len: T.nilable(Integer)).returns(String) }
|
|
276
240
|
private def read_enum(max_len)
|
|
277
241
|
end
|
|
278
242
|
|
|
279
|
-
# @api private
|
|
280
243
|
sig do
|
|
281
244
|
params(
|
|
282
245
|
max_len: T.nilable(Integer),
|
|
@@ -286,7 +249,6 @@ module XTwitterScraper
|
|
|
286
249
|
def read(max_len = nil, out_string = nil)
|
|
287
250
|
end
|
|
288
251
|
|
|
289
|
-
# @api private
|
|
290
252
|
sig do
|
|
291
253
|
params(
|
|
292
254
|
src: T.any(String, Pathname, StringIO, T::Enumerable[String]),
|
|
@@ -313,7 +275,6 @@ module XTwitterScraper
|
|
|
313
275
|
T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
|
|
314
276
|
|
|
315
277
|
class << self
|
|
316
|
-
# @api private
|
|
317
278
|
sig do
|
|
318
279
|
params(query: XTwitterScraper::Internal::AnyHash).returns(
|
|
319
280
|
XTwitterScraper::Internal::AnyHash
|
|
@@ -322,7 +283,6 @@ module XTwitterScraper
|
|
|
322
283
|
def encode_query_params(query)
|
|
323
284
|
end
|
|
324
285
|
|
|
325
|
-
# @api private
|
|
326
286
|
sig do
|
|
327
287
|
params(
|
|
328
288
|
collection: XTwitterScraper::Internal::AnyHash,
|
|
@@ -333,7 +293,6 @@ module XTwitterScraper
|
|
|
333
293
|
private def write_query_param_element!(collection, key, element)
|
|
334
294
|
end
|
|
335
295
|
|
|
336
|
-
# @api private
|
|
337
296
|
sig do
|
|
338
297
|
params(
|
|
339
298
|
y: Enumerator::Yielder,
|
|
@@ -350,7 +309,6 @@ module XTwitterScraper
|
|
|
350
309
|
)
|
|
351
310
|
end
|
|
352
311
|
|
|
353
|
-
# @api private
|
|
354
312
|
sig do
|
|
355
313
|
params(
|
|
356
314
|
y: Enumerator::Yielder,
|
|
@@ -363,16 +321,12 @@ module XTwitterScraper
|
|
|
363
321
|
private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
|
|
364
322
|
end
|
|
365
323
|
|
|
366
|
-
# @api private
|
|
367
|
-
#
|
|
368
|
-
# https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#special-considerations-for-multipart-content
|
|
369
324
|
sig do
|
|
370
325
|
params(body: T.anything).returns([String, T::Enumerable[String]])
|
|
371
326
|
end
|
|
372
327
|
private def encode_multipart_streaming(body)
|
|
373
328
|
end
|
|
374
329
|
|
|
375
|
-
# @api private
|
|
376
330
|
sig do
|
|
377
331
|
params(headers: T::Hash[String, String], body: T.anything).returns(
|
|
378
332
|
T.anything
|
|
@@ -381,16 +335,10 @@ module XTwitterScraper
|
|
|
381
335
|
def encode_content(headers, body)
|
|
382
336
|
end
|
|
383
337
|
|
|
384
|
-
# @api private
|
|
385
|
-
#
|
|
386
|
-
# https://www.iana.org/assignments/character-sets/character-sets.xhtml
|
|
387
338
|
sig { params(content_type: String, text: String).void }
|
|
388
339
|
def force_charset!(content_type, text:)
|
|
389
340
|
end
|
|
390
341
|
|
|
391
|
-
# @api private
|
|
392
|
-
#
|
|
393
|
-
# Assumes each chunk in stream has `Encoding::BINARY`.
|
|
394
342
|
sig do
|
|
395
343
|
params(
|
|
396
344
|
headers: T::Hash[String, String],
|
|
@@ -403,9 +351,6 @@ module XTwitterScraper
|
|
|
403
351
|
end
|
|
404
352
|
|
|
405
353
|
class << self
|
|
406
|
-
# @api private
|
|
407
|
-
#
|
|
408
|
-
# https://doc.rust-lang.org/std/iter/trait.FusedIterator.html
|
|
409
354
|
sig do
|
|
410
355
|
params(
|
|
411
356
|
enum: T::Enumerable[T.anything],
|
|
@@ -416,12 +361,10 @@ module XTwitterScraper
|
|
|
416
361
|
def fused_enum(enum, external: false, &close)
|
|
417
362
|
end
|
|
418
363
|
|
|
419
|
-
# @api private
|
|
420
364
|
sig { params(enum: T.nilable(T::Enumerable[T.anything])).void }
|
|
421
365
|
def close_fused!(enum)
|
|
422
366
|
end
|
|
423
367
|
|
|
424
|
-
# @api private
|
|
425
368
|
sig do
|
|
426
369
|
params(
|
|
427
370
|
enum: T.nilable(T::Enumerable[T.anything]),
|
|
@@ -443,23 +386,12 @@ module XTwitterScraper
|
|
|
443
386
|
end
|
|
444
387
|
|
|
445
388
|
class << self
|
|
446
|
-
# @api private
|
|
447
|
-
#
|
|
448
|
-
# Assumes Strings have been forced into having `Encoding::BINARY`.
|
|
449
|
-
#
|
|
450
|
-
# This decoder is responsible for reassembling lines split across multiple
|
|
451
|
-
# fragments.
|
|
452
389
|
sig do
|
|
453
390
|
params(enum: T::Enumerable[String]).returns(T::Enumerable[String])
|
|
454
391
|
end
|
|
455
392
|
def decode_lines(enum)
|
|
456
393
|
end
|
|
457
394
|
|
|
458
|
-
# @api private
|
|
459
|
-
#
|
|
460
|
-
# https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream
|
|
461
|
-
#
|
|
462
|
-
# Assumes that `lines` has been decoded with `#decode_lines`.
|
|
463
395
|
sig do
|
|
464
396
|
params(lines: T::Enumerable[String]).returns(
|
|
465
397
|
T::Enumerable[XTwitterScraper::Internal::Util::ServerSentEvent]
|
|
@@ -469,38 +401,31 @@ module XTwitterScraper
|
|
|
469
401
|
end
|
|
470
402
|
end
|
|
471
403
|
|
|
472
|
-
# @api private
|
|
473
404
|
module SorbetRuntimeSupport
|
|
474
405
|
class MissingSorbetRuntimeError < ::RuntimeError
|
|
475
406
|
end
|
|
476
407
|
|
|
477
|
-
# @api private
|
|
478
408
|
sig { returns(T::Hash[Symbol, T.anything]) }
|
|
479
409
|
private def sorbet_runtime_constants
|
|
480
410
|
end
|
|
481
411
|
|
|
482
|
-
# @api private
|
|
483
412
|
sig { params(name: Symbol).void }
|
|
484
413
|
def const_missing(name)
|
|
485
414
|
end
|
|
486
415
|
|
|
487
|
-
# @api private
|
|
488
416
|
sig { params(name: Symbol).returns(T::Boolean) }
|
|
489
417
|
def sorbet_constant_defined?(name)
|
|
490
418
|
end
|
|
491
419
|
|
|
492
|
-
# @api private
|
|
493
420
|
sig { params(name: Symbol, blk: T.proc.returns(T.anything)).void }
|
|
494
421
|
def define_sorbet_constant!(name, &blk)
|
|
495
422
|
end
|
|
496
423
|
|
|
497
|
-
# @api private
|
|
498
424
|
sig { returns(T.anything) }
|
|
499
425
|
def to_sorbet_type
|
|
500
426
|
end
|
|
501
427
|
|
|
502
428
|
class << self
|
|
503
|
-
# @api private
|
|
504
429
|
sig do
|
|
505
430
|
params(
|
|
506
431
|
type:
|
|
@@ -8,8 +8,6 @@ module XTwitterScraper
|
|
|
8
8
|
module Internal
|
|
9
9
|
extend XTwitterScraper::Internal::Util::SorbetRuntimeSupport
|
|
10
10
|
|
|
11
|
-
# Due to the current WIP status of Shapes support in Sorbet, types referencing
|
|
12
|
-
# this alias might be refined in the future.
|
|
13
11
|
AnyHash = T.type_alias { T::Hash[Symbol, T.anything] }
|
|
14
12
|
|
|
15
13
|
FileInput =
|
|
@@ -10,7 +10,7 @@ module XTwitterScraper
|
|
|
10
10
|
# X account monitoring with 1-second checks
|
|
11
11
|
class Keywords
|
|
12
12
|
# Creates a keyword monitor. Keyword monitors are unlimited. Active monitors check
|
|
13
|
-
# every 1 second and cost
|
|
13
|
+
# every 1 second and cost 30 credits per hour. Events and webhook deliveries are
|
|
14
14
|
# included. Creation requires available credits for the first hourly charge.
|
|
15
15
|
sig do
|
|
16
16
|
params(
|
|
@@ -13,7 +13,7 @@ module XTwitterScraper
|
|
|
13
13
|
attr_reader :keywords
|
|
14
14
|
|
|
15
15
|
# Creates an account monitor. Monitors are unlimited. Active monitors check every
|
|
16
|
-
# 1 second and cost
|
|
16
|
+
# 1 second and cost 30 credits per hour. Events and webhook deliveries are
|
|
17
17
|
# included. Creation requires available credits for the first hourly charge and
|
|
18
18
|
# username lookup.
|
|
19
19
|
sig do
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: x-twitter-scraper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.10.
|
|
4
|
+
version: 0.10.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Xquik
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 2026-10-21 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: base64
|
|
@@ -51,6 +51,11 @@ dependencies:
|
|
|
51
51
|
- - ">="
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '0'
|
|
54
|
+
description: X API & Twitter API SDK for Ruby by Xquik. Scrape Twitter search, timelines,
|
|
55
|
+
profiles & followers as a typed Twitter scraper & tweet scraper. Manage media, webhooks,
|
|
56
|
+
monitors & X automation through documented Xquik REST routes. Xquik is the world's
|
|
57
|
+
fastest and cheapest X Twitter scraper service with the most complete X data. Not
|
|
58
|
+
affiliated with X Corp.
|
|
54
59
|
email: support@xquik.com
|
|
55
60
|
executables: []
|
|
56
61
|
extensions: []
|
|
@@ -955,6 +960,9 @@ licenses:
|
|
|
955
960
|
metadata:
|
|
956
961
|
homepage_uri: https://docs.xquik.com/sdks/ruby
|
|
957
962
|
source_code_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby
|
|
963
|
+
documentation_uri: https://docs.xquik.com/api-reference/overview
|
|
964
|
+
changelog_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby/blob/main/CHANGELOG.md
|
|
965
|
+
bug_tracker_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby/issues
|
|
958
966
|
rubygems_mfa_required: 'false'
|
|
959
967
|
rdoc_options: []
|
|
960
968
|
require_paths:
|
|
@@ -970,8 +978,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
970
978
|
- !ruby/object:Gem::Version
|
|
971
979
|
version: '0'
|
|
972
980
|
requirements: []
|
|
973
|
-
rubygems_version: 4.0.
|
|
981
|
+
rubygems_version: 4.0.11
|
|
974
982
|
specification_version: 4
|
|
975
|
-
summary:
|
|
976
|
-
with X Corp.
|
|
983
|
+
summary: X API & Twitter API SDK for Ruby. Scrape Twitter search, profiles & followers
|
|
984
|
+
as a Twitter scraper & tweet scraper. Not affiliated with X Corp.
|
|
977
985
|
test_files: []
|