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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +3 -3
- data/lib/x_twitter_scraper/models/credit_topup_balance_response.rb +5 -5
- data/lib/x_twitter_scraper/models/draw_export_params.rb +8 -3
- data/lib/x_twitter_scraper/models/draw_list_params.rb +2 -2
- data/lib/x_twitter_scraper/models/error.rb +8 -0
- data/lib/x_twitter_scraper/models/event_list_params.rb +13 -5
- data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +731 -82
- data/lib/x_twitter_scraper/models/extraction_estimate_cost_response.rb +1 -0
- data/lib/x_twitter_scraper/models/extraction_export_results_params.rb +145 -1
- data/lib/x_twitter_scraper/models/extraction_list_params.rb +2 -2
- data/lib/x_twitter_scraper/models/extraction_retrieve_params.rb +70 -3
- data/lib/x_twitter_scraper/models/extraction_run_params.rb +662 -1
- data/lib/x_twitter_scraper/models/extraction_run_response.rb +27 -48
- data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +8 -8
- data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +9 -9
- data/lib/x_twitter_scraper/models/monitor.rb +29 -1
- data/lib/x_twitter_scraper/models/paginated_tweets.rb +4 -4
- data/lib/x_twitter_scraper/models/paginated_users.rb +5 -5
- data/lib/x_twitter_scraper/models/support/attachment_download_params.rb +28 -0
- data/lib/x_twitter_scraper/models/x/community_retrieve_members_params.rb +113 -1
- data/lib/x_twitter_scraper/models/x/community_retrieve_moderators_params.rb +117 -1
- data/lib/x_twitter_scraper/models/x/list_retrieve_followers_params.rb +117 -6
- data/lib/x_twitter_scraper/models/x/list_retrieve_members_params.rb +116 -1
- data/lib/x_twitter_scraper/models/x/tweet_get_favoriters_params.rb +117 -6
- data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +153 -1
- data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +246 -16
- data/lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb +3 -2
- data/lib/x_twitter_scraper/models/x/tweet_get_retweeters_params.rb +117 -6
- data/lib/x_twitter_scraper/models/x/tweet_search_params.rb +187 -14
- data/lib/x_twitter_scraper/models/x/tweet_search_response.rb +299 -0
- data/lib/x_twitter_scraper/models/x/user_retrieve_followers_params.rb +143 -10
- data/lib/x_twitter_scraper/models/x/user_retrieve_followers_response.rb +241 -0
- data/lib/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rb +117 -6
- data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +143 -10
- data/lib/x_twitter_scraper/models/x/user_retrieve_following_response.rb +241 -0
- data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +153 -1
- data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +153 -1
- data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +153 -1
- data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +159 -7
- data/lib/x_twitter_scraper/models/x/user_retrieve_search_params.rb +116 -1
- data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +159 -7
- data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rb +157 -8
- data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rb +245 -0
- data/lib/x_twitter_scraper/models/x/x_account.rb +7 -11
- data/lib/x_twitter_scraper/resources/credits.rb +2 -2
- data/lib/x_twitter_scraper/resources/draws.rb +5 -2
- data/lib/x_twitter_scraper/resources/events.rb +10 -4
- data/lib/x_twitter_scraper/resources/extractions.rb +383 -84
- data/lib/x_twitter_scraper/resources/guest_wallets.rb +9 -13
- data/lib/x_twitter_scraper/resources/support/attachments.rb +42 -0
- data/lib/x_twitter_scraper/resources/support.rb +5 -0
- data/lib/x_twitter_scraper/resources/x/communities.rb +95 -4
- data/lib/x_twitter_scraper/resources/x/lists.rb +96 -5
- data/lib/x_twitter_scraper/resources/x/tweets.rb +286 -28
- data/lib/x_twitter_scraper/resources/x/users.rb +531 -41
- data/lib/x_twitter_scraper/version.rb +1 -1
- data/lib/x_twitter_scraper.rb +7 -1
- data/rbi/x_twitter_scraper/models/credit_topup_balance_response.rbi +6 -6
- data/rbi/x_twitter_scraper/models/draw_export_params.rbi +6 -3
- data/rbi/x_twitter_scraper/models/draw_list_params.rbi +2 -2
- data/rbi/x_twitter_scraper/models/error.rbi +40 -0
- data/rbi/x_twitter_scraper/models/event_list_params.rbi +15 -4
- data/rbi/x_twitter_scraper/models/extraction_estimate_cost_params.rbi +1338 -86
- data/rbi/x_twitter_scraper/models/extraction_estimate_cost_response.rbi +5 -0
- data/rbi/x_twitter_scraper/models/extraction_export_results_params.rbi +198 -0
- data/rbi/x_twitter_scraper/models/extraction_list_params.rbi +2 -2
- data/rbi/x_twitter_scraper/models/extraction_retrieve_params.rbi +194 -2
- data/rbi/x_twitter_scraper/models/extraction_run_params.rbi +1221 -0
- data/rbi/x_twitter_scraper/models/extraction_run_response.rbi +35 -162
- data/rbi/x_twitter_scraper/models/guest_wallet_create_response.rbi +8 -6
- data/rbi/x_twitter_scraper/models/guest_wallet_topup_response.rbi +9 -7
- data/rbi/x_twitter_scraper/models/monitor.rbi +54 -3
- data/rbi/x_twitter_scraper/models/paginated_tweets.rbi +4 -4
- data/rbi/x_twitter_scraper/models/paginated_users.rbi +5 -5
- data/rbi/x_twitter_scraper/models/support/attachment_download_params.rbi +51 -0
- data/rbi/x_twitter_scraper/models/x/community_retrieve_members_params.rbi +154 -0
- data/rbi/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbi +154 -0
- data/rbi/x_twitter_scraper/models/x/list_retrieve_followers_params.rbi +160 -8
- data/rbi/x_twitter_scraper/models/x/list_retrieve_members_params.rbi +154 -0
- data/rbi/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbi +160 -8
- data/rbi/x_twitter_scraper/models/x/tweet_get_quotes_params.rbi +209 -0
- data/rbi/x_twitter_scraper/models/x/tweet_get_replies_params.rbi +403 -20
- data/rbi/x_twitter_scraper/models/x/tweet_get_replies_response.rbi +3 -2
- data/rbi/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbi +160 -8
- data/rbi/x_twitter_scraper/models/x/tweet_search_params.rbi +279 -16
- data/rbi/x_twitter_scraper/models/x/tweet_search_response.rbi +543 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_params.rbi +228 -12
- data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_response.rbi +440 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbi +160 -8
- data/rbi/x_twitter_scraper/models/x/user_retrieve_following_params.rbi +228 -12
- data/rbi/x_twitter_scraper/models/x/user_retrieve_following_response.rbi +440 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_likes_params.rbi +209 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_media_params.rbi +209 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbi +209 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_replies_params.rbi +217 -8
- data/rbi/x_twitter_scraper/models/x/user_retrieve_search_params.rbi +154 -0
- data/rbi/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbi +217 -8
- data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbi +248 -10
- data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbi +440 -0
- data/rbi/x_twitter_scraper/models/x/x_account.rbi +9 -15
- data/rbi/x_twitter_scraper/resources/credits.rbi +2 -2
- data/rbi/x_twitter_scraper/resources/draws.rbi +3 -2
- data/rbi/x_twitter_scraper/resources/events.rbi +5 -2
- data/rbi/x_twitter_scraper/resources/extractions.rbi +525 -83
- data/rbi/x_twitter_scraper/resources/guest_wallets.rbi +9 -13
- data/rbi/x_twitter_scraper/resources/support/attachments.rbi +35 -0
- data/rbi/x_twitter_scraper/resources/support.rbi +4 -0
- data/rbi/x_twitter_scraper/resources/x/communities.rbi +84 -0
- data/rbi/x_twitter_scraper/resources/x/lists.rbi +87 -4
- data/rbi/x_twitter_scraper/resources/x/tweets.rbi +307 -31
- data/rbi/x_twitter_scraper/resources/x/users.rbi +558 -34
- data/sig/x_twitter_scraper/models/error.rbs +16 -0
- data/sig/x_twitter_scraper/models/event_list_params.rbs +7 -0
- data/sig/x_twitter_scraper/models/extraction_estimate_cost_params.rbs +605 -1
- data/sig/x_twitter_scraper/models/extraction_estimate_cost_response.rbs +2 -0
- data/sig/x_twitter_scraper/models/extraction_export_results_params.rbs +127 -1
- data/sig/x_twitter_scraper/models/extraction_retrieve_params.rbs +74 -1
- data/sig/x_twitter_scraper/models/extraction_run_params.rbs +611 -1
- data/sig/x_twitter_scraper/models/extraction_run_response.rbs +29 -67
- data/sig/x_twitter_scraper/models/guest_wallet_create_response.rbs +4 -4
- data/sig/x_twitter_scraper/models/guest_wallet_topup_response.rbs +4 -4
- data/sig/x_twitter_scraper/models/monitor.rbs +29 -3
- data/sig/x_twitter_scraper/models/support/attachment_download_params.rbs +32 -0
- data/sig/x_twitter_scraper/models/x/community_retrieve_members_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbs +102 -1
- data/sig/x_twitter_scraper/models/x/list_retrieve_followers_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/list_retrieve_members_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/tweet_get_quotes_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/tweet_get_replies_params.rbs +207 -2
- data/sig/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/tweet_search_params.rbs +154 -1
- data/sig/x_twitter_scraper/models/x/tweet_search_response.rbs +258 -0
- data/sig/x_twitter_scraper/models/x/user_retrieve_followers_params.rbs +119 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_followers_response.rbs +216 -0
- data/sig/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbs +103 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_following_params.rbs +119 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_following_response.rbs +216 -0
- data/sig/x_twitter_scraper/models/x/user_retrieve_likes_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_media_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_replies_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_search_params.rbs +102 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbs +134 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbs +137 -1
- data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbs +216 -0
- data/sig/x_twitter_scraper/resources/events.rbs +1 -0
- data/sig/x_twitter_scraper/resources/extractions.rbs +137 -0
- data/sig/x_twitter_scraper/resources/support/attachments.rbs +15 -0
- data/sig/x_twitter_scraper/resources/support.rbs +2 -0
- data/sig/x_twitter_scraper/resources/x/communities.rbs +28 -0
- data/sig/x_twitter_scraper/resources/x/lists.rbs +28 -0
- data/sig/x_twitter_scraper/resources/x/tweets.rbs +93 -1
- data/sig/x_twitter_scraper/resources/x/users.rbs +173 -3
- metadata +19 -1
|
@@ -20,82 +20,255 @@ module XTwitterScraper
|
|
|
20
20
|
api_name: :toolType
|
|
21
21
|
|
|
22
22
|
# @!attribute advanced_query
|
|
23
|
-
# Raw advanced query
|
|
23
|
+
# Raw advanced search query appended as-is (tweet_search_extractor)
|
|
24
24
|
#
|
|
25
25
|
# @return [String, nil]
|
|
26
26
|
optional :advanced_query, String, api_name: :advancedQuery
|
|
27
27
|
|
|
28
28
|
# @!attribute any_words
|
|
29
|
-
#
|
|
30
|
-
#
|
|
29
|
+
# Words or quoted phrases where any one can match. Separate with spaces, commas,
|
|
30
|
+
# or lines. (tweet_search_extractor)
|
|
31
31
|
#
|
|
32
32
|
# @return [String, nil]
|
|
33
33
|
optional :any_words, String, api_name: :anyWords
|
|
34
34
|
|
|
35
|
+
# @!attribute bio_contains
|
|
36
|
+
# Bio terms separated by commas or lines.
|
|
37
|
+
#
|
|
38
|
+
# @return [String, nil]
|
|
39
|
+
optional :bio_contains, String, api_name: :bioContains
|
|
40
|
+
|
|
41
|
+
# @!attribute blue_verified_only
|
|
42
|
+
# Return only Blue-verified Tweet authors.
|
|
43
|
+
#
|
|
44
|
+
# @return [Boolean, nil]
|
|
45
|
+
optional :blue_verified_only, XTwitterScraper::Internal::Type::Boolean, api_name: :blueVerifiedOnly
|
|
46
|
+
|
|
35
47
|
# @!attribute bounding_box
|
|
36
|
-
# Geo bounding box
|
|
37
|
-
# (tweet_search_extractor)
|
|
48
|
+
# Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
|
|
38
49
|
#
|
|
39
50
|
# @return [String, nil]
|
|
40
51
|
optional :bounding_box, String, api_name: :boundingBox
|
|
41
52
|
|
|
53
|
+
# @!attribute card_name
|
|
54
|
+
# Match the Tweet card name.
|
|
55
|
+
#
|
|
56
|
+
# @return [String, nil]
|
|
57
|
+
optional :card_name, String, api_name: :cardName
|
|
58
|
+
|
|
42
59
|
# @!attribute cashtags
|
|
43
|
-
# Cashtags
|
|
60
|
+
# Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
|
|
44
61
|
#
|
|
45
62
|
# @return [String, nil]
|
|
46
63
|
optional :cashtags, String
|
|
47
64
|
|
|
65
|
+
# @!attribute collection_strategy
|
|
66
|
+
# Reply collection strategy.
|
|
67
|
+
#
|
|
68
|
+
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::CollectionStrategy, nil]
|
|
69
|
+
optional :collection_strategy,
|
|
70
|
+
enum: -> { XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy },
|
|
71
|
+
api_name: :collectionStrategy
|
|
72
|
+
|
|
48
73
|
# @!attribute conversation_id
|
|
49
|
-
# Conversation ID filter
|
|
74
|
+
# Conversation ID filter (tweet_search_extractor)
|
|
50
75
|
#
|
|
51
76
|
# @return [String, nil]
|
|
52
77
|
optional :conversation_id, String, api_name: :conversationId
|
|
53
78
|
|
|
79
|
+
# @!attribute dedupe_across_targets
|
|
80
|
+
# Merge duplicate results across collection targets.
|
|
81
|
+
#
|
|
82
|
+
# @return [Boolean, nil]
|
|
83
|
+
optional :dedupe_across_targets,
|
|
84
|
+
XTwitterScraper::Internal::Type::Boolean,
|
|
85
|
+
api_name: :dedupeAcrossTargets
|
|
86
|
+
|
|
87
|
+
# @!attribute dedupe_mode
|
|
88
|
+
# Keep target duplicates, first rows, or merged overlap.
|
|
89
|
+
#
|
|
90
|
+
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::DedupeMode, nil]
|
|
91
|
+
optional :dedupe_mode,
|
|
92
|
+
enum: -> { XTwitterScraper::ExtractionEstimateCostParams::DedupeMode },
|
|
93
|
+
api_name: :dedupeMode
|
|
94
|
+
|
|
54
95
|
# @!attribute exact_phrase
|
|
55
|
-
# Exact phrase
|
|
96
|
+
# Exact phrase to match (tweet_search_extractor)
|
|
56
97
|
#
|
|
57
98
|
# @return [String, nil]
|
|
58
99
|
optional :exact_phrase, String, api_name: :exactPhrase
|
|
59
100
|
|
|
101
|
+
# @!attribute exclude_original_author
|
|
102
|
+
# Exclude replies from the source author.
|
|
103
|
+
#
|
|
104
|
+
# @return [Boolean, nil]
|
|
105
|
+
optional :exclude_original_author,
|
|
106
|
+
XTwitterScraper::Internal::Type::Boolean,
|
|
107
|
+
api_name: :excludeOriginalAuthor
|
|
108
|
+
|
|
109
|
+
# @!attribute exclude_source
|
|
110
|
+
# Exclude a source application.
|
|
111
|
+
#
|
|
112
|
+
# @return [String, nil]
|
|
113
|
+
optional :exclude_source, String, api_name: :excludeSource
|
|
114
|
+
|
|
60
115
|
# @!attribute exclude_words
|
|
61
|
-
# Words or quoted phrases
|
|
62
|
-
#
|
|
116
|
+
# Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
|
|
117
|
+
# (tweet_search_extractor)
|
|
63
118
|
#
|
|
64
119
|
# @return [String, nil]
|
|
65
120
|
optional :exclude_words, String, api_name: :excludeWords
|
|
66
121
|
|
|
67
122
|
# @!attribute from_user
|
|
68
|
-
#
|
|
123
|
+
# Filter by author username (tweet_search_extractor)
|
|
69
124
|
#
|
|
70
125
|
# @return [String, nil]
|
|
71
126
|
optional :from_user, String, api_name: :fromUser
|
|
72
127
|
|
|
128
|
+
# @!attribute geocode
|
|
129
|
+
# Match latitude, longitude, and radius.
|
|
130
|
+
#
|
|
131
|
+
# @return [String, nil]
|
|
132
|
+
optional :geocode, String
|
|
133
|
+
|
|
73
134
|
# @!attribute hashtags
|
|
74
|
-
# Hashtags
|
|
135
|
+
# Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
|
|
75
136
|
#
|
|
76
137
|
# @return [String, nil]
|
|
77
138
|
optional :hashtags, String
|
|
78
139
|
|
|
140
|
+
# @!attribute has_location
|
|
141
|
+
# Require a profile location.
|
|
142
|
+
#
|
|
143
|
+
# @return [Boolean, nil]
|
|
144
|
+
optional :has_location, XTwitterScraper::Internal::Type::Boolean, api_name: :hasLocation
|
|
145
|
+
|
|
146
|
+
# @!attribute has_media_only
|
|
147
|
+
# Return only replies with media.
|
|
148
|
+
#
|
|
149
|
+
# @return [Boolean, nil]
|
|
150
|
+
optional :has_media_only, XTwitterScraper::Internal::Type::Boolean, api_name: :hasMediaOnly
|
|
151
|
+
|
|
152
|
+
# @!attribute has_website
|
|
153
|
+
# Require a profile website.
|
|
154
|
+
#
|
|
155
|
+
# @return [Boolean, nil]
|
|
156
|
+
optional :has_website, XTwitterScraper::Internal::Type::Boolean, api_name: :hasWebsite
|
|
157
|
+
|
|
158
|
+
# @!attribute include_original_post
|
|
159
|
+
# Include the source post in reply results.
|
|
160
|
+
#
|
|
161
|
+
# @return [Boolean, nil]
|
|
162
|
+
optional :include_original_post,
|
|
163
|
+
XTwitterScraper::Internal::Type::Boolean,
|
|
164
|
+
api_name: :includeOriginalPost
|
|
165
|
+
|
|
166
|
+
# @!attribute include_search_terms
|
|
167
|
+
# Add matching search terms to collection metadata.
|
|
168
|
+
#
|
|
169
|
+
# @return [Boolean, nil]
|
|
170
|
+
optional :include_search_terms, XTwitterScraper::Internal::Type::Boolean, api_name: :includeSearchTerms
|
|
171
|
+
|
|
172
|
+
# @!attribute include_target_metadata
|
|
173
|
+
# Add source target metadata to each result.
|
|
174
|
+
#
|
|
175
|
+
# @return [Boolean, nil]
|
|
176
|
+
optional :include_target_metadata,
|
|
177
|
+
XTwitterScraper::Internal::Type::Boolean,
|
|
178
|
+
api_name: :includeTargetMetadata
|
|
179
|
+
|
|
79
180
|
# @!attribute in_reply_to_tweet_id
|
|
80
|
-
#
|
|
181
|
+
# Only replies to this tweet ID (tweet_search_extractor)
|
|
81
182
|
#
|
|
82
183
|
# @return [String, nil]
|
|
83
184
|
optional :in_reply_to_tweet_id, String, api_name: :inReplyToTweetId
|
|
84
185
|
|
|
85
186
|
# @!attribute language
|
|
86
|
-
# Language code
|
|
187
|
+
# Language code filter (tweet_search_extractor)
|
|
87
188
|
#
|
|
88
189
|
# @return [String, nil]
|
|
89
190
|
optional :language, String
|
|
90
191
|
|
|
91
192
|
# @!attribute list_id
|
|
92
|
-
#
|
|
193
|
+
# Search within a list ID (tweet_search_extractor)
|
|
93
194
|
#
|
|
94
195
|
# @return [String, nil]
|
|
95
196
|
optional :list_id, String, api_name: :listId
|
|
96
197
|
|
|
198
|
+
# @!attribute location_contains
|
|
199
|
+
# Required profile location text.
|
|
200
|
+
#
|
|
201
|
+
# @return [String, nil]
|
|
202
|
+
optional :location_contains, String, api_name: :locationContains
|
|
203
|
+
|
|
204
|
+
# @!attribute max_depth
|
|
205
|
+
# Maximum nested reply depth.
|
|
206
|
+
#
|
|
207
|
+
# @return [Integer, nil]
|
|
208
|
+
optional :max_depth, Integer, api_name: :maxDepth
|
|
209
|
+
|
|
210
|
+
# @!attribute max_followers
|
|
211
|
+
# Maximum follower count for profile results.
|
|
212
|
+
#
|
|
213
|
+
# @return [Integer, nil]
|
|
214
|
+
optional :max_followers, Integer, api_name: :maxFollowers
|
|
215
|
+
|
|
216
|
+
# @!attribute max_following
|
|
217
|
+
# Maximum following count for profile results.
|
|
218
|
+
#
|
|
219
|
+
# @return [Integer, nil]
|
|
220
|
+
optional :max_following, Integer, api_name: :maxFollowing
|
|
221
|
+
|
|
222
|
+
# @!attribute max_id
|
|
223
|
+
# Return Tweets older than this Tweet ID.
|
|
224
|
+
#
|
|
225
|
+
# @return [String, nil]
|
|
226
|
+
optional :max_id, String, api_name: :maxId
|
|
227
|
+
|
|
228
|
+
# @!attribute max_items_per_target
|
|
229
|
+
# Maximum results collected for each target.
|
|
230
|
+
#
|
|
231
|
+
# @return [Integer, nil]
|
|
232
|
+
optional :max_items_per_target, Integer, api_name: :maxItemsPerTarget
|
|
233
|
+
|
|
234
|
+
# @!attribute max_likes
|
|
235
|
+
# Maximum Tweet like count.
|
|
236
|
+
#
|
|
237
|
+
# @return [Integer, nil]
|
|
238
|
+
optional :max_likes, Integer, api_name: :maxLikes
|
|
239
|
+
|
|
240
|
+
# @!attribute max_pages_per_target
|
|
241
|
+
# Reply pages collected for each target.
|
|
242
|
+
#
|
|
243
|
+
# @return [Integer, nil]
|
|
244
|
+
optional :max_pages_per_target, Integer, api_name: :maxPagesPerTarget
|
|
245
|
+
|
|
246
|
+
# @!attribute max_posts
|
|
247
|
+
# Maximum post count for profile results.
|
|
248
|
+
#
|
|
249
|
+
# @return [Integer, nil]
|
|
250
|
+
optional :max_posts, Integer, api_name: :maxPosts
|
|
251
|
+
|
|
252
|
+
# @!attribute max_quotes
|
|
253
|
+
# Maximum Tweet quote count.
|
|
254
|
+
#
|
|
255
|
+
# @return [Integer, nil]
|
|
256
|
+
optional :max_quotes, Integer, api_name: :maxQuotes
|
|
257
|
+
|
|
258
|
+
# @!attribute max_replies
|
|
259
|
+
# Maximum Tweet reply count.
|
|
260
|
+
#
|
|
261
|
+
# @return [Integer, nil]
|
|
262
|
+
optional :max_replies, Integer, api_name: :maxReplies
|
|
263
|
+
|
|
264
|
+
# @!attribute max_retweets
|
|
265
|
+
# Maximum Tweet repost count.
|
|
266
|
+
#
|
|
267
|
+
# @return [Integer, nil]
|
|
268
|
+
optional :max_retweets, Integer, api_name: :maxRetweets
|
|
269
|
+
|
|
97
270
|
# @!attribute media_type
|
|
98
|
-
# Media type
|
|
271
|
+
# Media type filter (tweet_search_extractor)
|
|
99
272
|
#
|
|
100
273
|
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::MediaType, nil]
|
|
101
274
|
optional :media_type,
|
|
@@ -103,118 +276,266 @@ module XTwitterScraper
|
|
|
103
276
|
api_name: :mediaType
|
|
104
277
|
|
|
105
278
|
# @!attribute mentioning
|
|
106
|
-
#
|
|
279
|
+
# Filter tweets mentioning a username (tweet_search_extractor)
|
|
107
280
|
#
|
|
108
281
|
# @return [String, nil]
|
|
109
282
|
optional :mentioning, String
|
|
110
283
|
|
|
284
|
+
# @!attribute min_account_age_days
|
|
285
|
+
# Minimum profile age in days.
|
|
286
|
+
#
|
|
287
|
+
# @return [Integer, nil]
|
|
288
|
+
optional :min_account_age_days, Integer, api_name: :minAccountAgeDays
|
|
289
|
+
|
|
290
|
+
# @!attribute min_bookmarks
|
|
291
|
+
# Minimum Tweet bookmark count.
|
|
292
|
+
#
|
|
293
|
+
# @return [Integer, nil]
|
|
294
|
+
optional :min_bookmarks, Integer, api_name: :minBookmarks
|
|
295
|
+
|
|
111
296
|
# @!attribute min_faves
|
|
112
|
-
# Minimum likes threshold
|
|
297
|
+
# Minimum likes threshold (tweet_search_extractor)
|
|
113
298
|
#
|
|
114
299
|
# @return [Integer, nil]
|
|
115
300
|
optional :min_faves, Integer, api_name: :minFaves
|
|
116
301
|
|
|
302
|
+
# @!attribute min_followers
|
|
303
|
+
# Minimum follower count for profile results.
|
|
304
|
+
#
|
|
305
|
+
# @return [Integer, nil]
|
|
306
|
+
optional :min_followers, Integer, api_name: :minFollowers
|
|
307
|
+
|
|
308
|
+
# @!attribute min_following
|
|
309
|
+
# Minimum following count for profile results.
|
|
310
|
+
#
|
|
311
|
+
# @return [Integer, nil]
|
|
312
|
+
optional :min_following, Integer, api_name: :minFollowing
|
|
313
|
+
|
|
314
|
+
# @!attribute min_posts
|
|
315
|
+
# Minimum post count for profile results.
|
|
316
|
+
#
|
|
317
|
+
# @return [Integer, nil]
|
|
318
|
+
optional :min_posts, Integer, api_name: :minPosts
|
|
319
|
+
|
|
117
320
|
# @!attribute min_quotes
|
|
118
|
-
# Minimum quote count threshold
|
|
321
|
+
# Minimum quote count threshold (tweet_search_extractor)
|
|
119
322
|
#
|
|
120
323
|
# @return [Integer, nil]
|
|
121
324
|
optional :min_quotes, Integer, api_name: :minQuotes
|
|
122
325
|
|
|
123
326
|
# @!attribute min_replies
|
|
124
|
-
# Minimum replies threshold
|
|
327
|
+
# Minimum replies threshold (tweet_search_extractor)
|
|
125
328
|
#
|
|
126
329
|
# @return [Integer, nil]
|
|
127
330
|
optional :min_replies, Integer, api_name: :minReplies
|
|
128
331
|
|
|
129
332
|
# @!attribute min_retweets
|
|
130
|
-
# Minimum retweets threshold
|
|
333
|
+
# Minimum retweets threshold (tweet_search_extractor)
|
|
131
334
|
#
|
|
132
335
|
# @return [Integer, nil]
|
|
133
336
|
optional :min_retweets, Integer, api_name: :minRetweets
|
|
134
337
|
|
|
338
|
+
# @!attribute min_views
|
|
339
|
+
# Minimum Tweet view count.
|
|
340
|
+
#
|
|
341
|
+
# @return [Integer, nil]
|
|
342
|
+
optional :min_views, Integer, api_name: :minViews
|
|
343
|
+
|
|
344
|
+
# @!attribute native_retweets
|
|
345
|
+
# Only return native reposts.
|
|
346
|
+
#
|
|
347
|
+
# @return [Boolean, nil]
|
|
348
|
+
optional :native_retweets, XTwitterScraper::Internal::Type::Boolean, api_name: :nativeRetweets
|
|
349
|
+
|
|
350
|
+
# @!attribute near
|
|
351
|
+
# Match a place name.
|
|
352
|
+
#
|
|
353
|
+
# @return [String, nil]
|
|
354
|
+
optional :near, String
|
|
355
|
+
|
|
356
|
+
# @!attribute news
|
|
357
|
+
# Only return news results.
|
|
358
|
+
#
|
|
359
|
+
# @return [Boolean, nil]
|
|
360
|
+
optional :news, XTwitterScraper::Internal::Type::Boolean
|
|
361
|
+
|
|
362
|
+
# @!attribute overlap_mode
|
|
363
|
+
# Shortcut for dedupeMode=merge.
|
|
364
|
+
#
|
|
365
|
+
# @return [Boolean, nil]
|
|
366
|
+
optional :overlap_mode, XTwitterScraper::Internal::Type::Boolean, api_name: :overlapMode
|
|
367
|
+
|
|
135
368
|
# @!attribute place
|
|
136
|
-
#
|
|
369
|
+
# Search within a place ID (tweet_search_extractor)
|
|
137
370
|
#
|
|
138
371
|
# @return [String, nil]
|
|
139
372
|
optional :place, String
|
|
140
373
|
|
|
141
374
|
# @!attribute place_country
|
|
142
|
-
#
|
|
375
|
+
# Search within a country code (tweet_search_extractor)
|
|
143
376
|
#
|
|
144
377
|
# @return [String, nil]
|
|
145
378
|
optional :place_country, String, api_name: :placeCountry
|
|
146
379
|
|
|
147
380
|
# @!attribute point_radius
|
|
148
|
-
# Geo point radius
|
|
149
|
-
# (tweet_search_extractor)
|
|
381
|
+
# Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
|
|
150
382
|
#
|
|
151
383
|
# @return [String, nil]
|
|
152
384
|
optional :point_radius, String, api_name: :pointRadius
|
|
153
385
|
|
|
386
|
+
# @!attribute query_type
|
|
387
|
+
# Search ranking applied to every query.
|
|
388
|
+
#
|
|
389
|
+
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::QueryType, nil]
|
|
390
|
+
optional :query_type,
|
|
391
|
+
enum: -> { XTwitterScraper::ExtractionEstimateCostParams::QueryType },
|
|
392
|
+
api_name: :queryType
|
|
393
|
+
|
|
154
394
|
# @!attribute quotes
|
|
155
|
-
# Quote mode
|
|
395
|
+
# Quote mode (tweet_search_extractor)
|
|
156
396
|
#
|
|
157
397
|
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Quotes, nil]
|
|
158
398
|
optional :quotes, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Quotes }
|
|
159
399
|
|
|
160
400
|
# @!attribute quotes_of_tweet_id
|
|
161
|
-
#
|
|
401
|
+
# Only quotes of this tweet ID (tweet_search_extractor)
|
|
162
402
|
#
|
|
163
403
|
# @return [String, nil]
|
|
164
404
|
optional :quotes_of_tweet_id, String, api_name: :quotesOfTweetId
|
|
165
405
|
|
|
406
|
+
# @!attribute relation_targets
|
|
407
|
+
# Profile relations processed within one job.
|
|
408
|
+
#
|
|
409
|
+
# @return [Array<XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget>, nil]
|
|
410
|
+
optional :relation_targets,
|
|
411
|
+
-> {
|
|
412
|
+
XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::ExtractionEstimateCostParams::RelationTarget]
|
|
413
|
+
},
|
|
414
|
+
api_name: :relationTargets
|
|
415
|
+
|
|
166
416
|
# @!attribute replies
|
|
167
|
-
# Reply mode
|
|
417
|
+
# Reply mode (tweet_search_extractor)
|
|
168
418
|
#
|
|
169
419
|
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Replies, nil]
|
|
170
420
|
optional :replies, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Replies }
|
|
171
421
|
|
|
172
422
|
# @!attribute results_limit
|
|
173
|
-
# Maximum number of results to
|
|
174
|
-
#
|
|
423
|
+
# Maximum number of results to extract. When set, the extraction stops after
|
|
424
|
+
# reaching this limit.
|
|
175
425
|
#
|
|
176
426
|
# @return [Integer, nil]
|
|
177
427
|
optional :results_limit, Integer, api_name: :resultsLimit
|
|
178
428
|
|
|
179
429
|
# @!attribute retweets
|
|
180
|
-
# Retweet mode
|
|
430
|
+
# Retweet mode (tweet_search_extractor)
|
|
181
431
|
#
|
|
182
432
|
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Retweets, nil]
|
|
183
433
|
optional :retweets, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Retweets }
|
|
184
434
|
|
|
185
435
|
# @!attribute retweets_of_tweet_id
|
|
186
|
-
#
|
|
436
|
+
# Only retweets of this tweet ID (tweet_search_extractor)
|
|
187
437
|
#
|
|
188
438
|
# @return [String, nil]
|
|
189
439
|
optional :retweets_of_tweet_id, String, api_name: :retweetsOfTweetId
|
|
190
440
|
|
|
441
|
+
# @!attribute safe
|
|
442
|
+
# Enable the safe-search filter.
|
|
443
|
+
#
|
|
444
|
+
# @return [Boolean, nil]
|
|
445
|
+
optional :safe, XTwitterScraper::Internal::Type::Boolean
|
|
446
|
+
|
|
447
|
+
# @!attribute scope
|
|
448
|
+
# Reply depth scope.
|
|
449
|
+
#
|
|
450
|
+
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Scope, nil]
|
|
451
|
+
optional :scope, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Scope }
|
|
452
|
+
|
|
453
|
+
# @!attribute search_queries
|
|
454
|
+
# Search queries processed as one collection job.
|
|
455
|
+
#
|
|
456
|
+
# @return [Array<String>, nil]
|
|
457
|
+
optional :search_queries, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :searchQueries
|
|
458
|
+
|
|
191
459
|
# @!attribute search_query
|
|
192
|
-
#
|
|
460
|
+
# Required for tweet_search_extractor & community_search.
|
|
193
461
|
#
|
|
194
462
|
# @return [String, nil]
|
|
195
463
|
optional :search_query, String, api_name: :searchQuery
|
|
196
464
|
|
|
197
465
|
# @!attribute since_date
|
|
198
|
-
#
|
|
466
|
+
# Start date YYYY-MM-DD (tweet_search_extractor)
|
|
199
467
|
#
|
|
200
468
|
# @return [Date, nil]
|
|
201
469
|
optional :since_date, Date, api_name: :sinceDate
|
|
202
470
|
|
|
471
|
+
# @!attribute since_id
|
|
472
|
+
# Return Tweets newer than this Tweet ID.
|
|
473
|
+
#
|
|
474
|
+
# @return [String, nil]
|
|
475
|
+
optional :since_id, String, api_name: :sinceId
|
|
476
|
+
|
|
477
|
+
# @!attribute since_time
|
|
478
|
+
# Reply start time as ISO 8601 or Unix seconds.
|
|
479
|
+
#
|
|
480
|
+
# @return [Time, Integer, nil]
|
|
481
|
+
optional :since_time,
|
|
482
|
+
union: -> { XTwitterScraper::ExtractionEstimateCostParams::SinceTime },
|
|
483
|
+
api_name: :sinceTime
|
|
484
|
+
|
|
485
|
+
# @!attribute sort
|
|
486
|
+
# Reply result order.
|
|
487
|
+
#
|
|
488
|
+
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Sort, nil]
|
|
489
|
+
optional :sort, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Sort }
|
|
490
|
+
|
|
491
|
+
# @!attribute source
|
|
492
|
+
# Match the source application.
|
|
493
|
+
#
|
|
494
|
+
# @return [String, nil]
|
|
495
|
+
optional :source, String
|
|
496
|
+
|
|
497
|
+
# @!attribute start_cursor
|
|
498
|
+
# Resume one reply target from this cursor.
|
|
499
|
+
#
|
|
500
|
+
# @return [String, nil]
|
|
501
|
+
optional :start_cursor, String, api_name: :startCursor
|
|
502
|
+
|
|
203
503
|
# @!attribute target_community_id
|
|
204
|
-
#
|
|
504
|
+
# Required for community_post_extractor & community_search.
|
|
205
505
|
#
|
|
206
506
|
# @return [String, nil]
|
|
207
507
|
optional :target_community_id, String, api_name: :targetCommunityId
|
|
208
508
|
|
|
509
|
+
# @!attribute target_community_ids
|
|
510
|
+
# Community IDs processed as one collection job.
|
|
511
|
+
#
|
|
512
|
+
# @return [Array<String>, nil]
|
|
513
|
+
optional :target_community_ids,
|
|
514
|
+
XTwitterScraper::Internal::Type::ArrayOf[String],
|
|
515
|
+
api_name: :targetCommunityIds
|
|
516
|
+
|
|
209
517
|
# @!attribute target_list_id
|
|
210
|
-
#
|
|
518
|
+
# Required for list_follower_explorer, list_member_extractor &
|
|
211
519
|
# list_post_extractor.
|
|
212
520
|
#
|
|
213
521
|
# @return [String, nil]
|
|
214
522
|
optional :target_list_id, String, api_name: :targetListId
|
|
215
523
|
|
|
524
|
+
# @!attribute target_list_ids
|
|
525
|
+
# List IDs processed as one collection job.
|
|
526
|
+
#
|
|
527
|
+
# @return [Array<String>, nil]
|
|
528
|
+
optional :target_list_ids, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetListIds
|
|
529
|
+
|
|
530
|
+
# @!attribute targets
|
|
531
|
+
# Mixed targets auto-routed within one job.
|
|
532
|
+
#
|
|
533
|
+
# @return [Array<String, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1>, nil]
|
|
534
|
+
optional :targets,
|
|
535
|
+
-> { XTwitterScraper::Internal::Type::ArrayOf[union: XTwitterScraper::ExtractionEstimateCostParams::Target] }
|
|
536
|
+
|
|
216
537
|
# @!attribute target_space_id
|
|
217
|
-
#
|
|
538
|
+
# Required for space_explorer.
|
|
218
539
|
#
|
|
219
540
|
# @return [String, nil]
|
|
220
541
|
optional :target_space_id, String, api_name: :targetSpaceId
|
|
@@ -224,116 +545,274 @@ module XTwitterScraper
|
|
|
224
545
|
# @return [String, nil]
|
|
225
546
|
optional :target_tweet_id, String, api_name: :targetTweetId
|
|
226
547
|
|
|
548
|
+
# @!attribute target_tweet_ids
|
|
549
|
+
# Tweet IDs processed as one collection job.
|
|
550
|
+
#
|
|
551
|
+
# @return [Array<String>, nil]
|
|
552
|
+
optional :target_tweet_ids, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetTweetIds
|
|
553
|
+
|
|
227
554
|
# @!attribute target_username
|
|
228
555
|
#
|
|
229
556
|
# @return [String, nil]
|
|
230
557
|
optional :target_username, String, api_name: :targetUsername
|
|
231
558
|
|
|
559
|
+
# @!attribute target_usernames
|
|
560
|
+
# Usernames processed as one collection job.
|
|
561
|
+
#
|
|
562
|
+
# @return [Array<String>, nil]
|
|
563
|
+
optional :target_usernames, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetUsernames
|
|
564
|
+
|
|
232
565
|
# @!attribute to_user
|
|
233
|
-
#
|
|
566
|
+
# Filter replies sent to a username (tweet_search_extractor)
|
|
234
567
|
#
|
|
235
568
|
# @return [String, nil]
|
|
236
569
|
optional :to_user, String, api_name: :toUser
|
|
237
570
|
|
|
238
571
|
# @!attribute until_date
|
|
239
|
-
#
|
|
572
|
+
# End date YYYY-MM-DD (tweet_search_extractor)
|
|
240
573
|
#
|
|
241
574
|
# @return [Date, nil]
|
|
242
575
|
optional :until_date, Date, api_name: :untilDate
|
|
243
576
|
|
|
577
|
+
# @!attribute until_time
|
|
578
|
+
# Reply end time as ISO 8601 or Unix seconds.
|
|
579
|
+
#
|
|
580
|
+
# @return [Time, Integer, nil]
|
|
581
|
+
optional :until_time,
|
|
582
|
+
union: -> { XTwitterScraper::ExtractionEstimateCostParams::UntilTime },
|
|
583
|
+
api_name: :untilTime
|
|
584
|
+
|
|
244
585
|
# @!attribute url
|
|
245
|
-
# URL substring or domain filter
|
|
586
|
+
# URL substring or domain filter (tweet_search_extractor)
|
|
246
587
|
#
|
|
247
588
|
# @return [String, nil]
|
|
248
589
|
optional :url, String
|
|
249
590
|
|
|
591
|
+
# @!attribute username_contains
|
|
592
|
+
# Required username text.
|
|
593
|
+
#
|
|
594
|
+
# @return [String, nil]
|
|
595
|
+
optional :username_contains, String, api_name: :usernameContains
|
|
596
|
+
|
|
250
597
|
# @!attribute verified_only
|
|
251
|
-
#
|
|
598
|
+
# Only verified authors (tweet_search_extractor)
|
|
252
599
|
#
|
|
253
600
|
# @return [Boolean, nil]
|
|
254
601
|
optional :verified_only, XTwitterScraper::Internal::Type::Boolean, api_name: :verifiedOnly
|
|
255
602
|
|
|
256
|
-
# @!
|
|
603
|
+
# @!attribute verified_type
|
|
604
|
+
# Exact profile verification type.
|
|
605
|
+
#
|
|
606
|
+
# @return [String, nil]
|
|
607
|
+
optional :verified_type, String, api_name: :verifiedType
|
|
608
|
+
|
|
609
|
+
# @!attribute within
|
|
610
|
+
# Set the radius for the near filter.
|
|
611
|
+
#
|
|
612
|
+
# @return [String, nil]
|
|
613
|
+
optional :within, String
|
|
614
|
+
|
|
615
|
+
# @!attribute within_time
|
|
616
|
+
# Match Tweets inside a recent time window.
|
|
617
|
+
#
|
|
618
|
+
# @return [String, nil]
|
|
619
|
+
optional :within_time, String, api_name: :withinTime
|
|
620
|
+
|
|
621
|
+
# @!method initialize(tool_type:, advanced_query: nil, any_words: nil, bio_contains: nil, blue_verified_only: nil, bounding_box: nil, card_name: nil, cashtags: nil, collection_strategy: nil, conversation_id: nil, dedupe_across_targets: nil, dedupe_mode: nil, exact_phrase: nil, exclude_original_author: nil, exclude_source: nil, exclude_words: nil, from_user: nil, geocode: nil, hashtags: nil, has_location: nil, has_media_only: nil, has_website: nil, include_original_post: nil, include_search_terms: nil, include_target_metadata: nil, in_reply_to_tweet_id: nil, language: nil, list_id: nil, location_contains: nil, max_depth: nil, max_followers: nil, max_following: nil, max_id: nil, max_items_per_target: nil, max_likes: nil, max_pages_per_target: nil, max_posts: nil, max_quotes: nil, max_replies: nil, max_retweets: nil, media_type: nil, mentioning: nil, min_account_age_days: nil, min_bookmarks: nil, min_faves: nil, min_followers: nil, min_following: nil, min_posts: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, min_views: nil, native_retweets: nil, near: nil, news: nil, overlap_mode: nil, place: nil, place_country: nil, point_radius: nil, query_type: nil, quotes: nil, quotes_of_tweet_id: nil, relation_targets: nil, replies: nil, results_limit: nil, retweets: nil, retweets_of_tweet_id: nil, safe: nil, scope: nil, search_queries: nil, search_query: nil, since_date: nil, since_id: nil, since_time: nil, sort: nil, source: nil, start_cursor: nil, target_community_id: nil, target_community_ids: nil, target_list_id: nil, target_list_ids: nil, targets: nil, target_space_id: nil, target_tweet_id: nil, target_tweet_ids: nil, target_username: nil, target_usernames: nil, to_user: nil, until_date: nil, until_time: nil, url: nil, username_contains: nil, verified_only: nil, verified_type: nil, within: nil, within_time: nil, request_options: {})
|
|
257
622
|
# Some parameter documentations has been truncated, see
|
|
258
623
|
# {XTwitterScraper::Models::ExtractionEstimateCostParams} for more details.
|
|
259
624
|
#
|
|
260
625
|
# @param tool_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::ToolType] Identifier for the extraction tool used to run a job.
|
|
261
626
|
#
|
|
262
|
-
# @param advanced_query [String] Raw advanced query
|
|
627
|
+
# @param advanced_query [String] Raw advanced search query appended as-is (tweet_search_extractor)
|
|
628
|
+
#
|
|
629
|
+
# @param any_words [String] Words or quoted phrases where any one can match. Separate with spaces, commas, o
|
|
630
|
+
#
|
|
631
|
+
# @param bio_contains [String] Bio terms separated by commas or lines.
|
|
632
|
+
#
|
|
633
|
+
# @param blue_verified_only [Boolean] Return only Blue-verified Tweet authors.
|
|
634
|
+
#
|
|
635
|
+
# @param bounding_box [String] Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
|
|
636
|
+
#
|
|
637
|
+
# @param card_name [String] Match the Tweet card name.
|
|
638
|
+
#
|
|
639
|
+
# @param cashtags [String] Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
|
|
640
|
+
#
|
|
641
|
+
# @param collection_strategy [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::CollectionStrategy] Reply collection strategy.
|
|
642
|
+
#
|
|
643
|
+
# @param conversation_id [String] Conversation ID filter (tweet_search_extractor)
|
|
644
|
+
#
|
|
645
|
+
# @param dedupe_across_targets [Boolean] Merge duplicate results across collection targets.
|
|
646
|
+
#
|
|
647
|
+
# @param dedupe_mode [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::DedupeMode] Keep target duplicates, first rows, or merged overlap.
|
|
648
|
+
#
|
|
649
|
+
# @param exact_phrase [String] Exact phrase to match (tweet_search_extractor)
|
|
650
|
+
#
|
|
651
|
+
# @param exclude_original_author [Boolean] Exclude replies from the source author.
|
|
652
|
+
#
|
|
653
|
+
# @param exclude_source [String] Exclude a source application.
|
|
654
|
+
#
|
|
655
|
+
# @param exclude_words [String] Words or quoted phrases to exclude. Separate with spaces, commas, or lines. (twe
|
|
656
|
+
#
|
|
657
|
+
# @param from_user [String] Filter by author username (tweet_search_extractor)
|
|
658
|
+
#
|
|
659
|
+
# @param geocode [String] Match latitude, longitude, and radius.
|
|
263
660
|
#
|
|
264
|
-
# @param
|
|
661
|
+
# @param hashtags [String] Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
|
|
265
662
|
#
|
|
266
|
-
# @param
|
|
663
|
+
# @param has_location [Boolean] Require a profile location.
|
|
267
664
|
#
|
|
268
|
-
# @param
|
|
665
|
+
# @param has_media_only [Boolean] Return only replies with media.
|
|
269
666
|
#
|
|
270
|
-
# @param
|
|
667
|
+
# @param has_website [Boolean] Require a profile website.
|
|
271
668
|
#
|
|
272
|
-
# @param
|
|
669
|
+
# @param include_original_post [Boolean] Include the source post in reply results.
|
|
273
670
|
#
|
|
274
|
-
# @param
|
|
671
|
+
# @param include_search_terms [Boolean] Add matching search terms to collection metadata.
|
|
275
672
|
#
|
|
276
|
-
# @param
|
|
673
|
+
# @param include_target_metadata [Boolean] Add source target metadata to each result.
|
|
277
674
|
#
|
|
278
|
-
# @param
|
|
675
|
+
# @param in_reply_to_tweet_id [String] Only replies to this tweet ID (tweet_search_extractor)
|
|
279
676
|
#
|
|
280
|
-
# @param
|
|
677
|
+
# @param language [String] Language code filter (tweet_search_extractor)
|
|
281
678
|
#
|
|
282
|
-
# @param
|
|
679
|
+
# @param list_id [String] Search within a list ID (tweet_search_extractor)
|
|
283
680
|
#
|
|
284
|
-
# @param
|
|
681
|
+
# @param location_contains [String] Required profile location text.
|
|
285
682
|
#
|
|
286
|
-
# @param
|
|
683
|
+
# @param max_depth [Integer] Maximum nested reply depth.
|
|
287
684
|
#
|
|
288
|
-
# @param
|
|
685
|
+
# @param max_followers [Integer] Maximum follower count for profile results.
|
|
289
686
|
#
|
|
290
|
-
# @param
|
|
687
|
+
# @param max_following [Integer] Maximum following count for profile results.
|
|
291
688
|
#
|
|
292
|
-
# @param
|
|
689
|
+
# @param max_id [String] Return Tweets older than this Tweet ID.
|
|
293
690
|
#
|
|
294
|
-
# @param
|
|
691
|
+
# @param max_items_per_target [Integer] Maximum results collected for each target.
|
|
295
692
|
#
|
|
296
|
-
# @param
|
|
693
|
+
# @param max_likes [Integer] Maximum Tweet like count.
|
|
297
694
|
#
|
|
298
|
-
# @param
|
|
695
|
+
# @param max_pages_per_target [Integer] Reply pages collected for each target.
|
|
299
696
|
#
|
|
300
|
-
# @param
|
|
697
|
+
# @param max_posts [Integer] Maximum post count for profile results.
|
|
301
698
|
#
|
|
302
|
-
# @param
|
|
699
|
+
# @param max_quotes [Integer] Maximum Tweet quote count.
|
|
303
700
|
#
|
|
304
|
-
# @param
|
|
701
|
+
# @param max_replies [Integer] Maximum Tweet reply count.
|
|
305
702
|
#
|
|
306
|
-
# @param
|
|
703
|
+
# @param max_retweets [Integer] Maximum Tweet repost count.
|
|
307
704
|
#
|
|
308
|
-
# @param
|
|
705
|
+
# @param media_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::MediaType] Media type filter (tweet_search_extractor)
|
|
309
706
|
#
|
|
310
|
-
# @param
|
|
707
|
+
# @param mentioning [String] Filter tweets mentioning a username (tweet_search_extractor)
|
|
311
708
|
#
|
|
312
|
-
# @param
|
|
709
|
+
# @param min_account_age_days [Integer] Minimum profile age in days.
|
|
313
710
|
#
|
|
314
|
-
# @param
|
|
711
|
+
# @param min_bookmarks [Integer] Minimum Tweet bookmark count.
|
|
315
712
|
#
|
|
316
|
-
# @param
|
|
713
|
+
# @param min_faves [Integer] Minimum likes threshold (tweet_search_extractor)
|
|
317
714
|
#
|
|
318
|
-
# @param
|
|
715
|
+
# @param min_followers [Integer] Minimum follower count for profile results.
|
|
319
716
|
#
|
|
320
|
-
# @param
|
|
717
|
+
# @param min_following [Integer] Minimum following count for profile results.
|
|
321
718
|
#
|
|
322
|
-
# @param
|
|
719
|
+
# @param min_posts [Integer] Minimum post count for profile results.
|
|
323
720
|
#
|
|
324
|
-
# @param
|
|
721
|
+
# @param min_quotes [Integer] Minimum quote count threshold (tweet_search_extractor)
|
|
722
|
+
#
|
|
723
|
+
# @param min_replies [Integer] Minimum replies threshold (tweet_search_extractor)
|
|
724
|
+
#
|
|
725
|
+
# @param min_retweets [Integer] Minimum retweets threshold (tweet_search_extractor)
|
|
726
|
+
#
|
|
727
|
+
# @param min_views [Integer] Minimum Tweet view count.
|
|
728
|
+
#
|
|
729
|
+
# @param native_retweets [Boolean] Only return native reposts.
|
|
730
|
+
#
|
|
731
|
+
# @param near [String] Match a place name.
|
|
732
|
+
#
|
|
733
|
+
# @param news [Boolean] Only return news results.
|
|
734
|
+
#
|
|
735
|
+
# @param overlap_mode [Boolean] Shortcut for dedupeMode=merge.
|
|
736
|
+
#
|
|
737
|
+
# @param place [String] Search within a place ID (tweet_search_extractor)
|
|
738
|
+
#
|
|
739
|
+
# @param place_country [String] Search within a country code (tweet_search_extractor)
|
|
740
|
+
#
|
|
741
|
+
# @param point_radius [String] Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
|
|
742
|
+
#
|
|
743
|
+
# @param query_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::QueryType] Search ranking applied to every query.
|
|
744
|
+
#
|
|
745
|
+
# @param quotes [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Quotes] Quote mode (tweet_search_extractor)
|
|
746
|
+
#
|
|
747
|
+
# @param quotes_of_tweet_id [String] Only quotes of this tweet ID (tweet_search_extractor)
|
|
748
|
+
#
|
|
749
|
+
# @param relation_targets [Array<XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget>] Profile relations processed within one job.
|
|
750
|
+
#
|
|
751
|
+
# @param replies [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Replies] Reply mode (tweet_search_extractor)
|
|
752
|
+
#
|
|
753
|
+
# @param results_limit [Integer] Maximum number of results to extract. When set, the extraction stops after reach
|
|
754
|
+
#
|
|
755
|
+
# @param retweets [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Retweets] Retweet mode (tweet_search_extractor)
|
|
756
|
+
#
|
|
757
|
+
# @param retweets_of_tweet_id [String] Only retweets of this tweet ID (tweet_search_extractor)
|
|
758
|
+
#
|
|
759
|
+
# @param safe [Boolean] Enable the safe-search filter.
|
|
760
|
+
#
|
|
761
|
+
# @param scope [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Scope] Reply depth scope.
|
|
762
|
+
#
|
|
763
|
+
# @param search_queries [Array<String>] Search queries processed as one collection job.
|
|
764
|
+
#
|
|
765
|
+
# @param search_query [String] Required for tweet_search_extractor & community_search.
|
|
766
|
+
#
|
|
767
|
+
# @param since_date [Date] Start date YYYY-MM-DD (tweet_search_extractor)
|
|
768
|
+
#
|
|
769
|
+
# @param since_id [String] Return Tweets newer than this Tweet ID.
|
|
770
|
+
#
|
|
771
|
+
# @param since_time [Time, Integer] Reply start time as ISO 8601 or Unix seconds.
|
|
772
|
+
#
|
|
773
|
+
# @param sort [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Sort] Reply result order.
|
|
774
|
+
#
|
|
775
|
+
# @param source [String] Match the source application.
|
|
776
|
+
#
|
|
777
|
+
# @param start_cursor [String] Resume one reply target from this cursor.
|
|
778
|
+
#
|
|
779
|
+
# @param target_community_id [String] Required for community_post_extractor & community_search.
|
|
780
|
+
#
|
|
781
|
+
# @param target_community_ids [Array<String>] Community IDs processed as one collection job.
|
|
782
|
+
#
|
|
783
|
+
# @param target_list_id [String] Required for list_follower_explorer, list_member_extractor & list_post_extractor
|
|
784
|
+
#
|
|
785
|
+
# @param target_list_ids [Array<String>] List IDs processed as one collection job.
|
|
786
|
+
#
|
|
787
|
+
# @param targets [Array<String, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1>] Mixed targets auto-routed within one job.
|
|
788
|
+
#
|
|
789
|
+
# @param target_space_id [String] Required for space_explorer.
|
|
325
790
|
#
|
|
326
791
|
# @param target_tweet_id [String]
|
|
327
792
|
#
|
|
793
|
+
# @param target_tweet_ids [Array<String>] Tweet IDs processed as one collection job.
|
|
794
|
+
#
|
|
328
795
|
# @param target_username [String]
|
|
329
796
|
#
|
|
330
|
-
# @param
|
|
797
|
+
# @param target_usernames [Array<String>] Usernames processed as one collection job.
|
|
331
798
|
#
|
|
332
|
-
# @param
|
|
799
|
+
# @param to_user [String] Filter replies sent to a username (tweet_search_extractor)
|
|
333
800
|
#
|
|
334
|
-
# @param
|
|
801
|
+
# @param until_date [Date] End date YYYY-MM-DD (tweet_search_extractor)
|
|
335
802
|
#
|
|
336
|
-
# @param
|
|
803
|
+
# @param until_time [Time, Integer] Reply end time as ISO 8601 or Unix seconds.
|
|
804
|
+
#
|
|
805
|
+
# @param url [String] URL substring or domain filter (tweet_search_extractor)
|
|
806
|
+
#
|
|
807
|
+
# @param username_contains [String] Required username text.
|
|
808
|
+
#
|
|
809
|
+
# @param verified_only [Boolean] Only verified authors (tweet_search_extractor)
|
|
810
|
+
#
|
|
811
|
+
# @param verified_type [String] Exact profile verification type.
|
|
812
|
+
#
|
|
813
|
+
# @param within [String] Set the radius for the near filter.
|
|
814
|
+
#
|
|
815
|
+
# @param within_time [String] Match Tweets inside a recent time window.
|
|
337
816
|
#
|
|
338
817
|
# @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}]
|
|
339
818
|
|
|
@@ -369,7 +848,33 @@ module XTwitterScraper
|
|
|
369
848
|
# @return [Array<Symbol>]
|
|
370
849
|
end
|
|
371
850
|
|
|
372
|
-
#
|
|
851
|
+
# Reply collection strategy.
|
|
852
|
+
module CollectionStrategy
|
|
853
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
854
|
+
|
|
855
|
+
AUTO = :auto
|
|
856
|
+
COMPLETE = :complete
|
|
857
|
+
DIRECT = :direct
|
|
858
|
+
SEARCH = :search
|
|
859
|
+
THREAD = :thread
|
|
860
|
+
|
|
861
|
+
# @!method self.values
|
|
862
|
+
# @return [Array<Symbol>]
|
|
863
|
+
end
|
|
864
|
+
|
|
865
|
+
# Keep target duplicates, first rows, or merged overlap.
|
|
866
|
+
module DedupeMode
|
|
867
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
868
|
+
|
|
869
|
+
NONE = :none
|
|
870
|
+
FIRST = :first
|
|
871
|
+
MERGE = :merge
|
|
872
|
+
|
|
873
|
+
# @!method self.values
|
|
874
|
+
# @return [Array<Symbol>]
|
|
875
|
+
end
|
|
876
|
+
|
|
877
|
+
# Media type filter (tweet_search_extractor)
|
|
373
878
|
module MediaType
|
|
374
879
|
extend XTwitterScraper::Internal::Type::Enum
|
|
375
880
|
|
|
@@ -384,7 +889,19 @@ module XTwitterScraper
|
|
|
384
889
|
# @return [Array<Symbol>]
|
|
385
890
|
end
|
|
386
891
|
|
|
387
|
-
#
|
|
892
|
+
# Search ranking applied to every query.
|
|
893
|
+
module QueryType
|
|
894
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
895
|
+
|
|
896
|
+
LATEST = :Latest
|
|
897
|
+
TOP = :Top
|
|
898
|
+
BOTH = :Both
|
|
899
|
+
|
|
900
|
+
# @!method self.values
|
|
901
|
+
# @return [Array<Symbol>]
|
|
902
|
+
end
|
|
903
|
+
|
|
904
|
+
# Quote mode (tweet_search_extractor)
|
|
388
905
|
module Quotes
|
|
389
906
|
extend XTwitterScraper::Internal::Type::Enum
|
|
390
907
|
|
|
@@ -396,7 +913,40 @@ module XTwitterScraper
|
|
|
396
913
|
# @return [Array<Symbol>]
|
|
397
914
|
end
|
|
398
915
|
|
|
399
|
-
|
|
916
|
+
class RelationTarget < XTwitterScraper::Internal::Type::BaseModel
|
|
917
|
+
# @!attribute relation
|
|
918
|
+
#
|
|
919
|
+
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget::Relation]
|
|
920
|
+
required :relation, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation }
|
|
921
|
+
|
|
922
|
+
# @!attribute value
|
|
923
|
+
#
|
|
924
|
+
# @return [String]
|
|
925
|
+
required :value, String
|
|
926
|
+
|
|
927
|
+
# @!method initialize(relation:, value:)
|
|
928
|
+
# One target and relation in a mixed profile collection.
|
|
929
|
+
#
|
|
930
|
+
# @param relation [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget::Relation]
|
|
931
|
+
# @param value [String]
|
|
932
|
+
|
|
933
|
+
# @see XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget#relation
|
|
934
|
+
module Relation
|
|
935
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
936
|
+
|
|
937
|
+
COMMUNITY_MEMBERS = :community_members
|
|
938
|
+
FOLLOWERS = :followers
|
|
939
|
+
FOLLOWING = :following
|
|
940
|
+
LIST_FOLLOWERS = :list_followers
|
|
941
|
+
LIST_MEMBERS = :list_members
|
|
942
|
+
VERIFIED_FOLLOWERS = :verified_followers
|
|
943
|
+
|
|
944
|
+
# @!method self.values
|
|
945
|
+
# @return [Array<Symbol>]
|
|
946
|
+
end
|
|
947
|
+
end
|
|
948
|
+
|
|
949
|
+
# Reply mode (tweet_search_extractor)
|
|
400
950
|
module Replies
|
|
401
951
|
extend XTwitterScraper::Internal::Type::Enum
|
|
402
952
|
|
|
@@ -408,7 +958,7 @@ module XTwitterScraper
|
|
|
408
958
|
# @return [Array<Symbol>]
|
|
409
959
|
end
|
|
410
960
|
|
|
411
|
-
# Retweet mode
|
|
961
|
+
# Retweet mode (tweet_search_extractor)
|
|
412
962
|
module Retweets
|
|
413
963
|
extend XTwitterScraper::Internal::Type::Enum
|
|
414
964
|
|
|
@@ -419,6 +969,105 @@ module XTwitterScraper
|
|
|
419
969
|
# @!method self.values
|
|
420
970
|
# @return [Array<Symbol>]
|
|
421
971
|
end
|
|
972
|
+
|
|
973
|
+
# Reply depth scope.
|
|
974
|
+
module Scope
|
|
975
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
976
|
+
|
|
977
|
+
ALL = :all
|
|
978
|
+
DIRECT = :direct
|
|
979
|
+
NESTED = :nested
|
|
980
|
+
|
|
981
|
+
# @!method self.values
|
|
982
|
+
# @return [Array<Symbol>]
|
|
983
|
+
end
|
|
984
|
+
|
|
985
|
+
# Reply start time as ISO 8601 or Unix seconds.
|
|
986
|
+
module SinceTime
|
|
987
|
+
extend XTwitterScraper::Internal::Type::Union
|
|
988
|
+
|
|
989
|
+
variant Time
|
|
990
|
+
|
|
991
|
+
variant Integer
|
|
992
|
+
|
|
993
|
+
# @!method self.variants
|
|
994
|
+
# @return [Array(Time, Integer)]
|
|
995
|
+
end
|
|
996
|
+
|
|
997
|
+
# Reply result order.
|
|
998
|
+
module Sort
|
|
999
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1000
|
+
|
|
1001
|
+
RELEVANCE = :relevance
|
|
1002
|
+
LATEST = :latest
|
|
1003
|
+
OLDEST = :oldest
|
|
1004
|
+
LIKES = :likes
|
|
1005
|
+
|
|
1006
|
+
# @!method self.values
|
|
1007
|
+
# @return [Array<Symbol>]
|
|
1008
|
+
end
|
|
1009
|
+
|
|
1010
|
+
# One auto-routed target in a mixed Tweet collection.
|
|
1011
|
+
module Target
|
|
1012
|
+
extend XTwitterScraper::Internal::Type::Union
|
|
1013
|
+
|
|
1014
|
+
# X URL, numeric Tweet ID, @username, kind:value target, or search.
|
|
1015
|
+
variant String
|
|
1016
|
+
|
|
1017
|
+
variant -> { XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1 }
|
|
1018
|
+
|
|
1019
|
+
class UnionMember1 < XTwitterScraper::Internal::Type::BaseModel
|
|
1020
|
+
# @!attribute kind
|
|
1021
|
+
#
|
|
1022
|
+
# @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1::Kind]
|
|
1023
|
+
required :kind, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind }
|
|
1024
|
+
|
|
1025
|
+
# @!attribute value
|
|
1026
|
+
#
|
|
1027
|
+
# @return [String]
|
|
1028
|
+
required :value, String
|
|
1029
|
+
|
|
1030
|
+
# @!method initialize(kind:, value:)
|
|
1031
|
+
# @param kind [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1::Kind]
|
|
1032
|
+
# @param value [String]
|
|
1033
|
+
|
|
1034
|
+
# @see XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1#kind
|
|
1035
|
+
module Kind
|
|
1036
|
+
extend XTwitterScraper::Internal::Type::Enum
|
|
1037
|
+
|
|
1038
|
+
FAVORITERS = :favoriters
|
|
1039
|
+
LIST = :list
|
|
1040
|
+
PROFILE = :profile
|
|
1041
|
+
PROFILE_LIKES = :profile_likes
|
|
1042
|
+
PROFILE_MEDIA = :profile_media
|
|
1043
|
+
PROFILE_REPLIES = :profile_replies
|
|
1044
|
+
QUOTES = :quotes
|
|
1045
|
+
REPLIES = :replies
|
|
1046
|
+
RETWEETERS = :retweeters
|
|
1047
|
+
SEARCH = :search
|
|
1048
|
+
THREAD = :thread
|
|
1049
|
+
TWEET = :tweet
|
|
1050
|
+
|
|
1051
|
+
# @!method self.values
|
|
1052
|
+
# @return [Array<Symbol>]
|
|
1053
|
+
end
|
|
1054
|
+
end
|
|
1055
|
+
|
|
1056
|
+
# @!method self.variants
|
|
1057
|
+
# @return [Array(String, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1)]
|
|
1058
|
+
end
|
|
1059
|
+
|
|
1060
|
+
# Reply end time as ISO 8601 or Unix seconds.
|
|
1061
|
+
module UntilTime
|
|
1062
|
+
extend XTwitterScraper::Internal::Type::Union
|
|
1063
|
+
|
|
1064
|
+
variant Time
|
|
1065
|
+
|
|
1066
|
+
variant Integer
|
|
1067
|
+
|
|
1068
|
+
# @!method self.variants
|
|
1069
|
+
# @return [Array(Time, Integer)]
|
|
1070
|
+
end
|
|
422
1071
|
end
|
|
423
1072
|
end
|
|
424
1073
|
end
|