crawlberg 1.11.0-aarch64-linux
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 +7 -0
- data/LICENSE +21 -0
- data/README.md +168 -0
- data/Steepfile +14 -0
- data/ext/crawlberg_rb/native/Cargo.lock +3706 -0
- data/ext/crawlberg_rb/native/Cargo.toml +42 -0
- data/ext/crawlberg_rb/native/extconf.rb +19 -0
- data/ext/crawlberg_rb/src/lib.rs +10607 -0
- data/lib/crawlberg/native.rb +649 -0
- data/lib/crawlberg/version.rb +10 -0
- data/lib/crawlberg.rb +21 -0
- data/lib/crawlberg_rb/3.3.0/crawlberg_rb.so +4 -0
- data/sig/types.rbs +563 -0
- metadata +96 -0
data/sig/types.rbs
ADDED
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
+
# alef:hash:ad470f62b746634fbd629f163e7bae4a88fb011bbde28d998e38ade4877adf3f
|
|
3
|
+
# To regenerate: alef generate
|
|
4
|
+
# To verify freshness: alef verify
|
|
5
|
+
|
|
6
|
+
module Crawlberg
|
|
7
|
+
|
|
8
|
+
VERSION: String
|
|
9
|
+
|
|
10
|
+
type json_value = Hash[String, untyped] | Array[untyped] | String | Integer | Float | bool | nil
|
|
11
|
+
|
|
12
|
+
class ActionResult
|
|
13
|
+
attr_reader action_index: Integer
|
|
14
|
+
attr_reader action_type: String
|
|
15
|
+
attr_reader success: bool
|
|
16
|
+
attr_reader data: String?
|
|
17
|
+
attr_reader error: String?
|
|
18
|
+
|
|
19
|
+
def initialize: (?action_index: Integer, ?action_type: String, ?success: bool, ?data: String, ?error: String) -> void
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class ArticleMetadata
|
|
23
|
+
attr_reader published_time: String?
|
|
24
|
+
attr_reader modified_time: String?
|
|
25
|
+
attr_reader author: String?
|
|
26
|
+
attr_reader section: String?
|
|
27
|
+
attr_reader tags: Array[String]
|
|
28
|
+
|
|
29
|
+
def initialize: (?published_time: String, ?modified_time: String, ?author: String, ?section: String, ?tags: Array[String]) -> void
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class BatchCrawlResult
|
|
33
|
+
attr_reader url: String
|
|
34
|
+
attr_reader result: CrawlResult?
|
|
35
|
+
attr_reader error: String?
|
|
36
|
+
|
|
37
|
+
def initialize: (?url: String, ?result: CrawlResult, ?error: String) -> void
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class BatchCrawlResults
|
|
41
|
+
attr_reader results: Array[BatchCrawlResult]
|
|
42
|
+
attr_reader total_count: Integer
|
|
43
|
+
attr_reader completed_count: Integer
|
|
44
|
+
attr_reader failed_count: Integer
|
|
45
|
+
|
|
46
|
+
def initialize: (?results: Array[BatchCrawlResult], ?total_count: Integer, ?completed_count: Integer, ?failed_count: Integer) -> void
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
class BatchCrawlStreamRequest
|
|
50
|
+
attr_reader urls: Array[String]
|
|
51
|
+
|
|
52
|
+
def initialize: (?urls: Array[String]) -> void
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
class BatchScrapeResult
|
|
56
|
+
attr_reader url: String
|
|
57
|
+
attr_reader result: ScrapeResult?
|
|
58
|
+
attr_reader error: String?
|
|
59
|
+
|
|
60
|
+
def initialize: (?url: String, ?result: ScrapeResult, ?error: String) -> void
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
class BatchScrapeResults
|
|
64
|
+
attr_reader results: Array[BatchScrapeResult]
|
|
65
|
+
attr_reader total_count: Integer
|
|
66
|
+
attr_reader completed_count: Integer
|
|
67
|
+
attr_reader failed_count: Integer
|
|
68
|
+
|
|
69
|
+
def initialize: (?results: Array[BatchScrapeResult], ?total_count: Integer, ?completed_count: Integer, ?failed_count: Integer) -> void
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
class BrowserConfig
|
|
73
|
+
attr_reader mode: enum_BrowserMode
|
|
74
|
+
attr_reader backend: enum_BrowserBackend
|
|
75
|
+
attr_reader endpoint: String?
|
|
76
|
+
attr_reader timeout: Integer
|
|
77
|
+
attr_reader overall_timeout: Integer
|
|
78
|
+
attr_reader shutdown_timeout: Integer
|
|
79
|
+
attr_reader wait: enum_BrowserWait
|
|
80
|
+
attr_reader wait_selector: String?
|
|
81
|
+
attr_reader extra_wait: Integer?
|
|
82
|
+
attr_reader proxy: ProxyConfig?
|
|
83
|
+
attr_reader block_url_patterns: Array[String]
|
|
84
|
+
attr_reader eval_script: String?
|
|
85
|
+
attr_reader robots_user_agent: String?
|
|
86
|
+
attr_reader capture_network_events: bool
|
|
87
|
+
attr_reader session_affinity: bool
|
|
88
|
+
attr_reader chrome_path: String?
|
|
89
|
+
attr_reader chrome_args: Array[String]
|
|
90
|
+
|
|
91
|
+
def initialize: (?mode: enum_BrowserMode, ?backend: enum_BrowserBackend, ?endpoint: String, ?timeout: Integer, ?overall_timeout: Integer, ?shutdown_timeout: Integer, ?wait: enum_BrowserWait, ?wait_selector: String, ?extra_wait: Integer, ?proxy: ProxyConfig, ?block_url_patterns: Array[String], ?eval_script: String, ?robots_user_agent: String, ?capture_network_events: bool, ?session_affinity: bool, ?chrome_path: String, ?chrome_args: Array[String]) -> void
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
class BrowserExtras
|
|
95
|
+
attr_reader eval_result: String?
|
|
96
|
+
attr_reader network_events: Array[ResponseMeta]
|
|
97
|
+
attr_reader cookies: Array[CookieInfo]
|
|
98
|
+
|
|
99
|
+
def initialize: (?eval_result: String, ?network_events: Array[ResponseMeta], ?cookies: Array[CookieInfo]) -> void
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
class CitationReference
|
|
103
|
+
attr_reader index: Integer
|
|
104
|
+
attr_reader url: String
|
|
105
|
+
attr_reader text: String
|
|
106
|
+
|
|
107
|
+
def initialize: (?index: Integer, ?url: String, ?text: String) -> void
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
class CitationResult
|
|
111
|
+
attr_reader content: String
|
|
112
|
+
attr_reader references: Array[CitationReference]
|
|
113
|
+
|
|
114
|
+
def initialize: (?content: String, ?references: Array[CitationReference]) -> void
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
class ContentConfig
|
|
118
|
+
attr_reader output_format: String
|
|
119
|
+
attr_reader preprocessing_preset: String
|
|
120
|
+
attr_reader remove_navigation: bool
|
|
121
|
+
attr_reader remove_forms: bool
|
|
122
|
+
attr_reader strip_tags: Array[String]
|
|
123
|
+
attr_reader preserve_tags: Array[String]
|
|
124
|
+
attr_reader exclude_selectors: Array[String]
|
|
125
|
+
attr_reader skip_images: bool
|
|
126
|
+
attr_reader max_depth: Integer?
|
|
127
|
+
attr_reader wrap: bool
|
|
128
|
+
attr_reader wrap_width: Integer
|
|
129
|
+
attr_reader include_document_structure: bool
|
|
130
|
+
attr_reader extract_metadata: bool
|
|
131
|
+
attr_reader strip_newlines: bool
|
|
132
|
+
attr_reader bullets: String
|
|
133
|
+
attr_reader list_indent_width: Integer
|
|
134
|
+
attr_reader strong_em_symbol: String
|
|
135
|
+
attr_reader compact_tables: bool
|
|
136
|
+
attr_reader keep_inline_images_in: Array[String]
|
|
137
|
+
attr_reader keep_hidden: bool
|
|
138
|
+
|
|
139
|
+
def initialize: (?output_format: String, ?preprocessing_preset: String, ?remove_navigation: bool, ?remove_forms: bool, ?strip_tags: Array[String], ?preserve_tags: Array[String], ?exclude_selectors: Array[String], ?skip_images: bool, ?max_depth: Integer, ?wrap: bool, ?wrap_width: Integer, ?include_document_structure: bool, ?extract_metadata: bool, ?strip_newlines: bool, ?bullets: String, ?list_indent_width: Integer, ?strong_em_symbol: String, ?compact_tables: bool, ?keep_inline_images_in: Array[String], ?keep_hidden: bool) -> void
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
class CookieInfo
|
|
143
|
+
attr_reader name: String
|
|
144
|
+
attr_reader value: String
|
|
145
|
+
attr_reader domain: String?
|
|
146
|
+
attr_reader path: String?
|
|
147
|
+
|
|
148
|
+
def initialize: (?name: String, ?value: String, ?domain: String, ?path: String) -> void
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
class CrawlConfig
|
|
152
|
+
attr_reader max_depth: Integer?
|
|
153
|
+
attr_reader max_pages: Integer?
|
|
154
|
+
attr_reader max_links_per_page: Integer?
|
|
155
|
+
attr_reader max_concurrent: Integer?
|
|
156
|
+
attr_reader crawl_strategy: enum_CrawlStrategyKind
|
|
157
|
+
attr_reader content_filter: enum_ContentFilterKind?
|
|
158
|
+
attr_reader bm25_query: String?
|
|
159
|
+
attr_reader bm25_threshold: Float?
|
|
160
|
+
attr_reader respect_robots_txt: bool
|
|
161
|
+
attr_reader soft_http_errors: bool
|
|
162
|
+
attr_reader user_agent: String?
|
|
163
|
+
attr_reader stay_on_domain: bool
|
|
164
|
+
attr_reader allow_subdomains: bool
|
|
165
|
+
attr_reader include_paths: Array[String]
|
|
166
|
+
attr_reader exclude_paths: Array[String]
|
|
167
|
+
attr_reader path_patterns_match_query: bool
|
|
168
|
+
attr_reader path_patterns_match_url: bool
|
|
169
|
+
attr_reader dedup_include_query: bool
|
|
170
|
+
attr_reader strip_tracking_params: bool
|
|
171
|
+
attr_reader tracking_params: Array[String]
|
|
172
|
+
attr_reader custom_headers: Hash[String, String]
|
|
173
|
+
attr_reader request_timeout: Integer
|
|
174
|
+
attr_reader rate_limit_ms: Integer?
|
|
175
|
+
attr_reader max_redirects: Integer
|
|
176
|
+
attr_reader retry_count: Integer
|
|
177
|
+
attr_reader retry_codes: Array[Integer]
|
|
178
|
+
attr_reader retry_initial_delay_ms: Integer
|
|
179
|
+
attr_reader retry_max_delay_ms: Integer
|
|
180
|
+
attr_reader rate_limit_jitter_ratio: Float
|
|
181
|
+
attr_reader cookies_enabled: bool
|
|
182
|
+
attr_reader auth: AuthConfig?
|
|
183
|
+
attr_reader max_body_size: Integer?
|
|
184
|
+
attr_reader remove_tags: Array[String]
|
|
185
|
+
attr_reader content: ContentConfig
|
|
186
|
+
attr_reader map_limit: Integer?
|
|
187
|
+
attr_reader map_search: String?
|
|
188
|
+
attr_reader download_assets: bool
|
|
189
|
+
attr_reader asset_types: Array[enum_AssetCategory]
|
|
190
|
+
attr_reader max_asset_size: Integer?
|
|
191
|
+
attr_reader browser: BrowserConfig
|
|
192
|
+
attr_reader proxy: ProxyConfig?
|
|
193
|
+
attr_reader user_agents: Array[String]
|
|
194
|
+
attr_reader capture_screenshot: bool
|
|
195
|
+
attr_reader follow_document_urls: bool
|
|
196
|
+
attr_reader document_url_depth: Integer?
|
|
197
|
+
attr_reader download_documents: bool
|
|
198
|
+
attr_reader document_max_size: Integer?
|
|
199
|
+
attr_reader document_mime_types: Array[String]
|
|
200
|
+
attr_reader document_output_dir: String?
|
|
201
|
+
attr_reader document_content_encoding: enum_DocumentContentEncoding?
|
|
202
|
+
attr_reader warc_output: String?
|
|
203
|
+
attr_reader browser_profile: String?
|
|
204
|
+
attr_reader save_browser_profile: bool
|
|
205
|
+
attr_reader ssrf: SsrfPolicy
|
|
206
|
+
attr_reader ssrf_deny_private_explicit: bool?
|
|
207
|
+
|
|
208
|
+
def initialize: (?max_depth: Integer, ?max_pages: Integer, ?max_links_per_page: Integer, ?max_concurrent: Integer, ?crawl_strategy: enum_CrawlStrategyKind, ?content_filter: enum_ContentFilterKind, ?bm25_query: String, ?bm25_threshold: Float, ?respect_robots_txt: bool, ?soft_http_errors: bool, ?user_agent: String, ?stay_on_domain: bool, ?allow_subdomains: bool, ?include_paths: Array[String], ?exclude_paths: Array[String], ?path_patterns_match_query: bool, ?path_patterns_match_url: bool, ?dedup_include_query: bool, ?strip_tracking_params: bool, ?tracking_params: Array[String], ?custom_headers: Hash[String, String], ?request_timeout: Integer, ?rate_limit_ms: Integer, ?max_redirects: Integer, ?retry_count: Integer, ?retry_codes: Array[Integer], ?retry_initial_delay_ms: Integer, ?retry_max_delay_ms: Integer, ?rate_limit_jitter_ratio: Float, ?cookies_enabled: bool, ?auth: AuthConfig, ?max_body_size: Integer, ?remove_tags: Array[String], ?content: ContentConfig, ?map_limit: Integer, ?map_search: String, ?download_assets: bool, ?asset_types: Array[enum_AssetCategory], ?max_asset_size: Integer, ?browser: BrowserConfig, ?proxy: ProxyConfig, ?user_agents: Array[String], ?capture_screenshot: bool, ?follow_document_urls: bool, ?document_url_depth: Integer, ?download_documents: bool, ?document_max_size: Integer, ?document_mime_types: Array[String], ?document_output_dir: String, ?document_content_encoding: enum_DocumentContentEncoding, ?warc_output: String, ?browser_profile: String, ?save_browser_profile: bool, ?ssrf: SsrfPolicy, ?ssrf_deny_private_explicit: bool) -> void
|
|
209
|
+
def validate: () -> void
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
class CrawlEngineHandle
|
|
213
|
+
def crawl_stream: (CrawlStreamRequest req) -> Enumerator[CrawlEvent]
|
|
214
|
+
def batch_crawl_stream: (BatchCrawlStreamRequest req) -> Enumerator[CrawlEvent]
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
class CrawlPageResult
|
|
218
|
+
attr_reader url: String
|
|
219
|
+
attr_reader normalized_url: String
|
|
220
|
+
attr_reader status_code: Integer
|
|
221
|
+
attr_reader content_type: String
|
|
222
|
+
attr_reader html: String
|
|
223
|
+
attr_reader body_size: Integer
|
|
224
|
+
attr_reader metadata: PageMetadata
|
|
225
|
+
attr_reader links: Array[LinkInfo]
|
|
226
|
+
attr_reader images: Array[ImageInfo]
|
|
227
|
+
attr_reader feeds: Array[FeedInfo]
|
|
228
|
+
attr_reader json_ld: Array[JsonLdEntry]
|
|
229
|
+
attr_reader depth: Integer
|
|
230
|
+
attr_reader stayed_on_domain: bool
|
|
231
|
+
attr_reader was_skipped: bool
|
|
232
|
+
attr_reader is_pdf: bool
|
|
233
|
+
attr_reader detected_charset: String?
|
|
234
|
+
attr_reader markdown: MarkdownResult?
|
|
235
|
+
attr_reader extracted_data: String?
|
|
236
|
+
attr_reader extraction_meta: ExtractionMeta?
|
|
237
|
+
attr_reader downloaded_document: DownloadedDocument?
|
|
238
|
+
attr_reader browser_used: bool
|
|
239
|
+
attr_reader final_url: String
|
|
240
|
+
attr_reader redirect_count: Integer
|
|
241
|
+
attr_reader noindex_detected: bool
|
|
242
|
+
attr_reader nofollow_detected: bool
|
|
243
|
+
attr_reader ssrf_refused_urls: Array[String]
|
|
244
|
+
attr_reader original_url: String
|
|
245
|
+
|
|
246
|
+
def initialize: (?url: String, ?normalized_url: String, ?status_code: Integer, ?content_type: String, ?html: String, ?body_size: Integer, ?metadata: PageMetadata, ?links: Array[LinkInfo], ?images: Array[ImageInfo], ?feeds: Array[FeedInfo], ?json_ld: Array[JsonLdEntry], ?depth: Integer, ?stayed_on_domain: bool, ?was_skipped: bool, ?is_pdf: bool, ?detected_charset: String, ?markdown: MarkdownResult, ?extracted_data: String, ?extraction_meta: ExtractionMeta, ?downloaded_document: DownloadedDocument, ?browser_used: bool, ?final_url: String, ?redirect_count: Integer, ?noindex_detected: bool, ?nofollow_detected: bool, ?ssrf_refused_urls: Array[String], ?original_url: String) -> void
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
class CrawlResult
|
|
250
|
+
attr_reader pages: Array[CrawlPageResult]
|
|
251
|
+
attr_reader final_url: String
|
|
252
|
+
attr_reader redirect_count: Integer
|
|
253
|
+
attr_reader was_skipped: bool
|
|
254
|
+
attr_reader error: String?
|
|
255
|
+
attr_reader cookies: Array[CookieInfo]
|
|
256
|
+
attr_reader stayed_on_domain: bool
|
|
257
|
+
attr_reader browser_used: bool
|
|
258
|
+
|
|
259
|
+
def initialize: (?pages: Array[CrawlPageResult], ?final_url: String, ?redirect_count: Integer, ?was_skipped: bool, ?error: String, ?cookies: Array[CookieInfo], ?stayed_on_domain: bool, ?browser_used: bool) -> void
|
|
260
|
+
def unique_normalized_urls: () -> Integer
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
class CrawlStreamRequest
|
|
264
|
+
attr_reader url: String
|
|
265
|
+
|
|
266
|
+
def initialize: (?url: String) -> void
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
class DownloadedAsset
|
|
270
|
+
attr_reader url: String
|
|
271
|
+
attr_reader content_hash: String
|
|
272
|
+
attr_reader mime_type: String?
|
|
273
|
+
attr_reader size: Integer
|
|
274
|
+
attr_reader asset_category: enum_AssetCategory
|
|
275
|
+
attr_reader html_tag: String?
|
|
276
|
+
|
|
277
|
+
def initialize: (?url: String, ?content_hash: String, ?mime_type: String, ?size: Integer, ?asset_category: enum_AssetCategory, ?html_tag: String) -> void
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
class DownloadedDocument
|
|
281
|
+
attr_reader url: String
|
|
282
|
+
attr_reader mime_type: String
|
|
283
|
+
attr_reader size: Integer
|
|
284
|
+
attr_reader filename: String?
|
|
285
|
+
attr_reader content_hash: String
|
|
286
|
+
attr_reader headers: Hash[String, String]
|
|
287
|
+
attr_reader truncated: bool
|
|
288
|
+
attr_reader content_path: String?
|
|
289
|
+
attr_reader content_base64: String?
|
|
290
|
+
|
|
291
|
+
def initialize: (?url: String, ?mime_type: String, ?size: Integer, ?filename: String, ?content_hash: String, ?headers: Hash[String, String], ?truncated: bool, ?content_path: String, ?content_base64: String) -> void
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
class ExtractionMeta
|
|
295
|
+
attr_reader cost: Float?
|
|
296
|
+
attr_reader prompt_tokens: Integer?
|
|
297
|
+
attr_reader completion_tokens: Integer?
|
|
298
|
+
attr_reader model: String?
|
|
299
|
+
attr_reader chunks_processed: Integer
|
|
300
|
+
|
|
301
|
+
def initialize: (?cost: Float, ?prompt_tokens: Integer, ?completion_tokens: Integer, ?model: String, ?chunks_processed: Integer) -> void
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
class FaviconInfo
|
|
305
|
+
attr_reader url: String
|
|
306
|
+
attr_reader rel: String
|
|
307
|
+
attr_reader sizes: String?
|
|
308
|
+
attr_reader mime_type: String?
|
|
309
|
+
|
|
310
|
+
def initialize: (?url: String, ?rel: String, ?sizes: String, ?mime_type: String) -> void
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
class FeedInfo
|
|
314
|
+
attr_reader url: String
|
|
315
|
+
attr_reader title: String?
|
|
316
|
+
attr_reader feed_type: enum_FeedType
|
|
317
|
+
|
|
318
|
+
def initialize: (?url: String, ?title: String, ?feed_type: enum_FeedType) -> void
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
class HeadingInfo
|
|
322
|
+
attr_reader level: Integer
|
|
323
|
+
attr_reader text: String
|
|
324
|
+
|
|
325
|
+
def initialize: (?level: Integer, ?text: String) -> void
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
class HreflangEntry
|
|
329
|
+
attr_reader lang: String
|
|
330
|
+
attr_reader url: String
|
|
331
|
+
|
|
332
|
+
def initialize: (?lang: String, ?url: String) -> void
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
class ImageInfo
|
|
336
|
+
attr_reader url: String
|
|
337
|
+
attr_reader alt: String?
|
|
338
|
+
attr_reader width: Integer?
|
|
339
|
+
attr_reader height: Integer?
|
|
340
|
+
attr_reader source: enum_ImageSource
|
|
341
|
+
|
|
342
|
+
def initialize: (?url: String, ?alt: String, ?width: Integer, ?height: Integer, ?source: enum_ImageSource) -> void
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
class InteractionResult
|
|
346
|
+
attr_reader action_results: Array[ActionResult]
|
|
347
|
+
attr_reader final_html: String
|
|
348
|
+
attr_reader final_url: String
|
|
349
|
+
attr_reader screenshot_base64: String?
|
|
350
|
+
attr_reader ssrf_refused_urls: Array[String]
|
|
351
|
+
|
|
352
|
+
def initialize: (?action_results: Array[ActionResult], ?final_html: String, ?final_url: String, ?screenshot_base64: String, ?ssrf_refused_urls: Array[String]) -> void
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
class JsonLdEntry
|
|
356
|
+
attr_reader schema_type: String
|
|
357
|
+
attr_reader name: String?
|
|
358
|
+
attr_reader raw: String
|
|
359
|
+
|
|
360
|
+
def initialize: (?schema_type: String, ?name: String, ?raw: String) -> void
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
class LinkInfo
|
|
364
|
+
attr_reader url: String
|
|
365
|
+
attr_reader text: String
|
|
366
|
+
attr_reader link_type: enum_LinkType
|
|
367
|
+
attr_reader rel: String?
|
|
368
|
+
attr_reader nofollow: bool
|
|
369
|
+
attr_reader original_url: String
|
|
370
|
+
|
|
371
|
+
def initialize: (?url: String, ?text: String, ?link_type: enum_LinkType, ?rel: String, ?nofollow: bool, ?original_url: String) -> void
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
class MapResult
|
|
375
|
+
attr_reader urls: Array[SitemapUrl]
|
|
376
|
+
|
|
377
|
+
def initialize: (?urls: Array[SitemapUrl]) -> void
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
class MarkdownResult
|
|
381
|
+
attr_reader content: String
|
|
382
|
+
attr_reader document_structure: String?
|
|
383
|
+
attr_reader tables: Array[String]
|
|
384
|
+
attr_reader warnings: Array[String]
|
|
385
|
+
attr_reader citations: bool
|
|
386
|
+
attr_reader fit_content: String?
|
|
387
|
+
|
|
388
|
+
def initialize: (?content: String, ?document_structure: String, ?tables: Array[String], ?warnings: Array[String], ?citations: bool, ?fit_content: String) -> void
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
class PageMetadata
|
|
392
|
+
attr_reader title: String?
|
|
393
|
+
attr_reader description: String?
|
|
394
|
+
attr_reader canonical_url: String?
|
|
395
|
+
attr_reader keywords: String?
|
|
396
|
+
attr_reader author: String?
|
|
397
|
+
attr_reader viewport: String?
|
|
398
|
+
attr_reader theme_color: String?
|
|
399
|
+
attr_reader generator: String?
|
|
400
|
+
attr_reader robots: String?
|
|
401
|
+
attr_reader html_lang: String?
|
|
402
|
+
attr_reader html_dir: String?
|
|
403
|
+
attr_reader og_title: String?
|
|
404
|
+
attr_reader og_type: String?
|
|
405
|
+
attr_reader og_image: String?
|
|
406
|
+
attr_reader og_description: String?
|
|
407
|
+
attr_reader og_url: String?
|
|
408
|
+
attr_reader og_site_name: String?
|
|
409
|
+
attr_reader og_locale: String?
|
|
410
|
+
attr_reader og_video: String?
|
|
411
|
+
attr_reader og_audio: String?
|
|
412
|
+
attr_reader og_locale_alternates: Array[String]?
|
|
413
|
+
attr_reader twitter_card: String?
|
|
414
|
+
attr_reader twitter_title: String?
|
|
415
|
+
attr_reader twitter_description: String?
|
|
416
|
+
attr_reader twitter_image: String?
|
|
417
|
+
attr_reader twitter_site: String?
|
|
418
|
+
attr_reader twitter_creator: String?
|
|
419
|
+
attr_reader dc_title: String?
|
|
420
|
+
attr_reader dc_creator: String?
|
|
421
|
+
attr_reader dc_subject: String?
|
|
422
|
+
attr_reader dc_description: String?
|
|
423
|
+
attr_reader dc_publisher: String?
|
|
424
|
+
attr_reader dc_date: String?
|
|
425
|
+
attr_reader dc_type: String?
|
|
426
|
+
attr_reader dc_format: String?
|
|
427
|
+
attr_reader dc_identifier: String?
|
|
428
|
+
attr_reader dc_language: String?
|
|
429
|
+
attr_reader dc_rights: String?
|
|
430
|
+
attr_reader article: ArticleMetadata?
|
|
431
|
+
attr_reader hreflangs: Array[HreflangEntry]?
|
|
432
|
+
attr_reader favicons: Array[FaviconInfo]?
|
|
433
|
+
attr_reader headings: Array[HeadingInfo]?
|
|
434
|
+
attr_reader word_count: Integer?
|
|
435
|
+
|
|
436
|
+
def initialize: (?title: String, ?description: String, ?canonical_url: String, ?keywords: String, ?author: String, ?viewport: String, ?theme_color: String, ?generator: String, ?robots: String, ?html_lang: String, ?html_dir: String, ?og_title: String, ?og_type: String, ?og_image: String, ?og_description: String, ?og_url: String, ?og_site_name: String, ?og_locale: String, ?og_video: String, ?og_audio: String, ?og_locale_alternates: Array[String], ?twitter_card: String, ?twitter_title: String, ?twitter_description: String, ?twitter_image: String, ?twitter_site: String, ?twitter_creator: String, ?dc_title: String, ?dc_creator: String, ?dc_subject: String, ?dc_description: String, ?dc_publisher: String, ?dc_date: String, ?dc_type: String, ?dc_format: String, ?dc_identifier: String, ?dc_language: String, ?dc_rights: String, ?article: ArticleMetadata, ?hreflangs: Array[HreflangEntry], ?favicons: Array[FaviconInfo], ?headings: Array[HeadingInfo], ?word_count: Integer) -> void
|
|
437
|
+
end
|
|
438
|
+
|
|
439
|
+
class ProxyConfig
|
|
440
|
+
attr_reader url: String
|
|
441
|
+
attr_reader username: String?
|
|
442
|
+
attr_reader password: String?
|
|
443
|
+
|
|
444
|
+
def initialize: (?url: String, ?username: String, ?password: String) -> void
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
class ResponseMeta
|
|
448
|
+
attr_reader etag: String?
|
|
449
|
+
attr_reader last_modified: String?
|
|
450
|
+
attr_reader cache_control: String?
|
|
451
|
+
attr_reader server: String?
|
|
452
|
+
attr_reader x_powered_by: String?
|
|
453
|
+
attr_reader content_language: String?
|
|
454
|
+
attr_reader content_encoding: String?
|
|
455
|
+
|
|
456
|
+
def initialize: (?etag: String, ?last_modified: String, ?cache_control: String, ?server: String, ?x_powered_by: String, ?content_language: String, ?content_encoding: String) -> void
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
class ScrapeResult
|
|
460
|
+
attr_reader status_code: Integer
|
|
461
|
+
attr_reader final_url: String
|
|
462
|
+
attr_reader content_type: String
|
|
463
|
+
attr_reader html: String
|
|
464
|
+
attr_reader body_size: Integer
|
|
465
|
+
attr_reader metadata: PageMetadata
|
|
466
|
+
attr_reader links: Array[LinkInfo]
|
|
467
|
+
attr_reader images: Array[ImageInfo]
|
|
468
|
+
attr_reader feeds: Array[FeedInfo]
|
|
469
|
+
attr_reader json_ld: Array[JsonLdEntry]
|
|
470
|
+
attr_reader is_allowed: bool
|
|
471
|
+
attr_reader crawl_delay: Integer?
|
|
472
|
+
attr_reader noindex_detected: bool
|
|
473
|
+
attr_reader nofollow_detected: bool
|
|
474
|
+
attr_reader x_robots_tag: String?
|
|
475
|
+
attr_reader is_pdf: bool
|
|
476
|
+
attr_reader was_skipped: bool
|
|
477
|
+
attr_reader detected_charset: String?
|
|
478
|
+
attr_reader auth_header_sent: bool
|
|
479
|
+
attr_reader response_meta: ResponseMeta?
|
|
480
|
+
attr_reader assets: Array[DownloadedAsset]
|
|
481
|
+
attr_reader js_render_hint: bool
|
|
482
|
+
attr_reader browser_used: bool
|
|
483
|
+
attr_reader markdown: MarkdownResult?
|
|
484
|
+
attr_reader extracted_data: String?
|
|
485
|
+
attr_reader extraction_meta: ExtractionMeta?
|
|
486
|
+
attr_reader screenshot_base64: String?
|
|
487
|
+
attr_reader downloaded_document: DownloadedDocument?
|
|
488
|
+
attr_reader browser: BrowserExtras?
|
|
489
|
+
attr_reader ssrf_refused_urls: Array[String]
|
|
490
|
+
|
|
491
|
+
def initialize: (?status_code: Integer, ?final_url: String, ?content_type: String, ?html: String, ?body_size: Integer, ?metadata: PageMetadata, ?links: Array[LinkInfo], ?images: Array[ImageInfo], ?feeds: Array[FeedInfo], ?json_ld: Array[JsonLdEntry], ?is_allowed: bool, ?crawl_delay: Integer, ?noindex_detected: bool, ?nofollow_detected: bool, ?x_robots_tag: String, ?is_pdf: bool, ?was_skipped: bool, ?detected_charset: String, ?auth_header_sent: bool, ?response_meta: ResponseMeta, ?assets: Array[DownloadedAsset], ?js_render_hint: bool, ?browser_used: bool, ?markdown: MarkdownResult, ?extracted_data: String, ?extraction_meta: ExtractionMeta, ?screenshot_base64: String, ?downloaded_document: DownloadedDocument, ?browser: BrowserExtras, ?ssrf_refused_urls: Array[String]) -> void
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
class SitemapUrl
|
|
495
|
+
attr_reader url: String
|
|
496
|
+
attr_reader lastmod: String?
|
|
497
|
+
attr_reader changefreq: String?
|
|
498
|
+
attr_reader priority: String?
|
|
499
|
+
|
|
500
|
+
def initialize: (?url: String, ?lastmod: String, ?changefreq: String, ?priority: String) -> void
|
|
501
|
+
end
|
|
502
|
+
|
|
503
|
+
class SsrfPolicy
|
|
504
|
+
attr_reader deny_private: bool
|
|
505
|
+
attr_reader allowlist: Array[HostMatcher]
|
|
506
|
+
attr_reader denylist: Array[HostMatcher]
|
|
507
|
+
attr_reader max_redirects: Integer
|
|
508
|
+
attr_reader scheme_allowlist: Array[String]
|
|
509
|
+
|
|
510
|
+
def initialize: (?deny_private: bool, ?allowlist: Array[HostMatcher], ?denylist: Array[HostMatcher], ?max_redirects: Integer, ?scheme_allowlist: Array[String]) -> void
|
|
511
|
+
end
|
|
512
|
+
|
|
513
|
+
type enum_AssetCategory = :document | :image | :audio | :video | :font | :stylesheet | :script | :archive | :data | :other
|
|
514
|
+
|
|
515
|
+
class AuthConfig
|
|
516
|
+
end
|
|
517
|
+
|
|
518
|
+
type enum_BrowserBackend = :chromiumoxide | :native
|
|
519
|
+
|
|
520
|
+
type enum_BrowserMode = :auto | :always | :never | :stealth
|
|
521
|
+
|
|
522
|
+
type enum_BrowserWait = :network_idle | :selector | :fixed
|
|
523
|
+
|
|
524
|
+
type enum_ContentFilterKind = :bm25
|
|
525
|
+
|
|
526
|
+
class CrawlEvent
|
|
527
|
+
end
|
|
528
|
+
|
|
529
|
+
type enum_CrawlStrategyKind = :bfs | :dfs | :best_first | :adaptive
|
|
530
|
+
|
|
531
|
+
type enum_DocumentContentEncoding = :base64
|
|
532
|
+
|
|
533
|
+
type enum_FeedType = :rss | :atom | :json_feed
|
|
534
|
+
|
|
535
|
+
class HostMatcher
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
type enum_ImageSource = :img | :picture_source | :"og:image" | :"twitter:image"
|
|
539
|
+
|
|
540
|
+
type enum_LinkType = :internal | :external | :anchor | :document
|
|
541
|
+
|
|
542
|
+
class PageAction
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
type enum_ScrollDirection = :up | :down
|
|
546
|
+
|
|
547
|
+
def self.batch_crawl: (CrawlEngineHandle engine, Array[String] urls) -> BatchCrawlResults
|
|
548
|
+
|
|
549
|
+
def self.batch_scrape: (CrawlEngineHandle engine, Array[String] urls) -> BatchScrapeResults
|
|
550
|
+
|
|
551
|
+
def self.crawl: (CrawlEngineHandle engine, String url) -> CrawlResult
|
|
552
|
+
|
|
553
|
+
def self.create_engine: (?CrawlConfig config) -> CrawlEngineHandle
|
|
554
|
+
|
|
555
|
+
def self.generate_citations: (String markdown) -> CitationResult
|
|
556
|
+
|
|
557
|
+
def self.interact: (CrawlEngineHandle engine, String url, Array[PageAction] actions) -> InteractionResult
|
|
558
|
+
|
|
559
|
+
def self.map_urls: (CrawlEngineHandle engine, String url) -> MapResult
|
|
560
|
+
|
|
561
|
+
def self.scrape: (CrawlEngineHandle engine, String url) -> ScrapeResult
|
|
562
|
+
|
|
563
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: crawlberg
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.11.0
|
|
5
|
+
platform: aarch64-linux
|
|
6
|
+
authors:
|
|
7
|
+
- Na'aman Hirschfeld
|
|
8
|
+
- Tobias Perlstein
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2026-10-15 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rb_sys
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ">="
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: 0.9.130
|
|
21
|
+
- - "<"
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: '0.10'
|
|
24
|
+
type: :runtime
|
|
25
|
+
prerelease: false
|
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
27
|
+
requirements:
|
|
28
|
+
- - ">="
|
|
29
|
+
- !ruby/object:Gem::Version
|
|
30
|
+
version: 0.9.130
|
|
31
|
+
- - "<"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0.10'
|
|
34
|
+
- !ruby/object:Gem::Dependency
|
|
35
|
+
name: sorbet-runtime
|
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0.6'
|
|
41
|
+
type: :runtime
|
|
42
|
+
prerelease: false
|
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0.6'
|
|
48
|
+
description: High-performance web crawling engine
|
|
49
|
+
email:
|
|
50
|
+
- naaman@xberg.io
|
|
51
|
+
- tobias@xberg.io
|
|
52
|
+
executables: []
|
|
53
|
+
extensions: []
|
|
54
|
+
extra_rdoc_files: []
|
|
55
|
+
files:
|
|
56
|
+
- LICENSE
|
|
57
|
+
- README.md
|
|
58
|
+
- Steepfile
|
|
59
|
+
- ext/crawlberg_rb/native/Cargo.lock
|
|
60
|
+
- ext/crawlberg_rb/native/Cargo.toml
|
|
61
|
+
- ext/crawlberg_rb/native/extconf.rb
|
|
62
|
+
- ext/crawlberg_rb/src/lib.rs
|
|
63
|
+
- lib/crawlberg.rb
|
|
64
|
+
- lib/crawlberg/native.rb
|
|
65
|
+
- lib/crawlberg/version.rb
|
|
66
|
+
- lib/crawlberg_rb/3.3.0/crawlberg_rb.so
|
|
67
|
+
- sig/types.rbs
|
|
68
|
+
homepage: https://github.com/xberg-io/crawlberg
|
|
69
|
+
licenses:
|
|
70
|
+
- MIT
|
|
71
|
+
metadata:
|
|
72
|
+
keywords: crawl,scrape,spider,web
|
|
73
|
+
rubygems_mfa_required: 'true'
|
|
74
|
+
post_install_message:
|
|
75
|
+
rdoc_options: []
|
|
76
|
+
require_paths:
|
|
77
|
+
- lib
|
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '3.3'
|
|
83
|
+
- - "<"
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '3.4'
|
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - ">="
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '0'
|
|
91
|
+
requirements: []
|
|
92
|
+
rubygems_version: 3.5.22
|
|
93
|
+
signing_key:
|
|
94
|
+
specification_version: 4
|
|
95
|
+
summary: High-performance web crawling engine
|
|
96
|
+
test_files: []
|