@soyaxell09/zenbot-scraper 1.0.10 → 1.0.12
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.
- package/README.md +163 -180
- package/package.json +13 -4
- package/src/index.js +12 -0
- package/src/nsfw/index.js +17 -0
- package/src/nsfw/phdl.js +147 -0
- package/src/nsfw/phsearch.js +48 -0
- package/src/nsfw/rule34.js +86 -0
- package/src/nsfw/xhammerdl.js +162 -0
- package/src/nsfw/xhamstersearch.js +41 -0
- package/src/nsfw/xnxxdl.js +81 -0
- package/src/nsfw/xnxxsearch.js +59 -0
- package/src/nsfw/xvideosdl.js +79 -0
- package/src/nsfw/xvideossearch.js +54 -0
- package/src/scrapers/index.js +3 -1
- package/src/scrapers/instagram.js +98 -0
- package/src/scrapers/spotidown.js +89 -0
- package/src/tools/index.js +1 -0
- package/src/tools/screenshot.js +34 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @soyaxell09/zenbot-scraper
|
|
2
2
|
|
|
3
|
-
Módulo npm de scrapers y herramientas para bots de WhatsApp. Incluye descargadores, buscadores y
|
|
3
|
+
Módulo npm de scrapers y herramientas para bots de WhatsApp. Incluye descargadores, buscadores, utilidades y contenido NSFW.
|
|
4
4
|
|
|
5
5
|
## Instalación
|
|
6
6
|
|
|
@@ -16,7 +16,8 @@ npm install @soyaxell09/zenbot-scraper
|
|
|
16
16
|
src/
|
|
17
17
|
├── scrapers/ → Descargadores de media
|
|
18
18
|
├── search/ → Buscadores
|
|
19
|
-
|
|
19
|
+
├── tools/ → Utilidades
|
|
20
|
+
└── nsfw/ → Contenido adulto
|
|
20
21
|
```
|
|
21
22
|
|
|
22
23
|
---
|
|
@@ -28,11 +29,9 @@ src/
|
|
|
28
29
|
```js
|
|
29
30
|
import { ytSearch, ytDownload, ytInfo } from '@soyaxell09/zenbot-scraper'
|
|
30
31
|
|
|
31
|
-
// Buscar videos
|
|
32
32
|
const results = await ytSearch('bad bunny', 5)
|
|
33
33
|
// → [{ id, title, url, thumbnail, duration, views, channel, published }]
|
|
34
34
|
|
|
35
|
-
// Descargar (URL o texto)
|
|
36
35
|
const video = await ytDownload('https://youtu.be/dQw4w9WgXcQ', 'video', '360p')
|
|
37
36
|
const audio = await ytDownload('nicki nicole wapo traketero', 'mp3')
|
|
38
37
|
// → { title, author, thumbnail, type, url, duration, ... }
|
|
@@ -43,46 +42,46 @@ const audio = await ytDownload('nicki nicole wapo traketero', 'mp3')
|
|
|
43
42
|
```js
|
|
44
43
|
import { ytDownloadV2, ytInfoV2, getFileSizeV2 } from '@soyaxell09/zenbot-scraper'
|
|
45
44
|
|
|
46
|
-
// Ver calidades disponibles
|
|
47
45
|
const info = await ytInfoV2('https://youtu.be/dQw4w9WgXcQ')
|
|
48
46
|
// → { title, uploader, views, thumb, qualities: [{ id, type, quality, size, sizeB, duration }] }
|
|
49
47
|
|
|
50
|
-
// Descargar con calidad específica
|
|
51
48
|
const video = await ytDownloadV2('https://youtu.be/dQw4w9WgXcQ', 'video', '1080p')
|
|
52
49
|
const audio = await ytDownloadV2('https://youtu.be/dQw4w9WgXcQ', 'mp3', '128k')
|
|
53
50
|
// → { title, uploader, views, thumb, type, quality, size, sizeB, duration, url }
|
|
54
51
|
|
|
55
|
-
// Obtener tamaño de un archivo por URL
|
|
56
52
|
const size = await getFileSizeV2('https://example.com/file.mp4')
|
|
57
53
|
// → '14.5 MB'
|
|
58
54
|
```
|
|
59
55
|
|
|
60
|
-
###
|
|
56
|
+
### TikTok
|
|
61
57
|
|
|
62
58
|
```js
|
|
63
|
-
import {
|
|
59
|
+
import { tiktokDownload, tiktokInfo } from '@soyaxell09/zenbot-scraper'
|
|
64
60
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
const result = await tiktokDownload('https://www.tiktok.com/@user/video/123')
|
|
62
|
+
// → { nowatermark, watermark, audio, music: { title, author, url }, stats: { plays, likes, comments, shares } }
|
|
63
|
+
```
|
|
68
64
|
|
|
69
|
-
|
|
70
|
-
const video = await ytDownloadV2('https://youtu.be/dQw4w9WgXcQ', 'video', '1080p')
|
|
71
|
-
const audio = await ytDownloadV2('https://youtu.be/dQw4w9WgXcQ', 'mp3', '128k')
|
|
72
|
-
// → { title, uploader, views, thumb, type, quality, size, sizeB, duration, url }
|
|
65
|
+
### Instagram
|
|
73
66
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
67
|
+
```js
|
|
68
|
+
import { igDownload } from '@soyaxell09/zenbot-scraper'
|
|
69
|
+
|
|
70
|
+
const result = await igDownload('https://www.instagram.com/reel/xxx/')
|
|
71
|
+
// → { type, items: [{ type: 'video'|'image', url }] }
|
|
72
|
+
// type: 'reel' | 'post' | 'story' | 'video' | 'profile'
|
|
73
|
+
// Soporta: Videos, Fotos, Reels, Stories y Perfil (públicos)
|
|
77
74
|
```
|
|
78
75
|
|
|
79
|
-
###
|
|
76
|
+
### Instagram
|
|
80
77
|
|
|
81
78
|
```js
|
|
82
|
-
import {
|
|
79
|
+
import { igDownload } from '@soyaxell09/zenbot-scraper'
|
|
83
80
|
|
|
84
|
-
const result = await
|
|
85
|
-
// → {
|
|
81
|
+
const result = await igDownload('https://www.instagram.com/reel/xxx/')
|
|
82
|
+
// → { type, items: [{ type: 'video'|'image', url }] }
|
|
83
|
+
// type: 'reel' | 'post' | 'story' | 'video' | 'profile'
|
|
84
|
+
// Soporta: Videos, Fotos, Reels, Stories y Perfil (públicos)
|
|
86
85
|
```
|
|
87
86
|
|
|
88
87
|
### Facebook
|
|
@@ -99,29 +98,13 @@ const result = await fbDownload('https://www.facebook.com/watch?v=123')
|
|
|
99
98
|
```js
|
|
100
99
|
import { tweetInfo, tweetDownload } from '@soyaxell09/zenbot-scraper'
|
|
101
100
|
|
|
102
|
-
// Info completa del tweet
|
|
103
101
|
const info = await tweetInfo('https://x.com/user/status/123')
|
|
104
102
|
// → { id, text, lang, createdAt, likes, replies, author: { name, username, avatar }, hashtags, mentions, medias }
|
|
105
103
|
|
|
106
|
-
// Solo media descargable
|
|
107
104
|
const media = await tweetDownload('https://x.com/user/status/123')
|
|
108
105
|
// → { id, text, author, videos: [{ type, url, thumbnail, variants }], photos: [{ type, url, width, height }] }
|
|
109
106
|
```
|
|
110
107
|
|
|
111
|
-
### Twitter / X
|
|
112
|
-
|
|
113
|
-
```js
|
|
114
|
-
import { tweetInfo, tweetDownload } from '@soyaxell09/zenbot-scraper'
|
|
115
|
-
|
|
116
|
-
// Info completa del tweet
|
|
117
|
-
const info = await tweetInfo('https://x.com/user/status/123')
|
|
118
|
-
// → { id, text, createdAt, likes, replies, author: { name, username, avatar }, hashtags, medias }
|
|
119
|
-
|
|
120
|
-
// Solo media descargable
|
|
121
|
-
const media = await tweetDownload('https://x.com/user/status/123')
|
|
122
|
-
// → { id, text, author, videos: [{ type, url, thumbnail }], photos: [{ type, url }] }
|
|
123
|
-
```
|
|
124
|
-
|
|
125
108
|
### MediaFire
|
|
126
109
|
|
|
127
110
|
```js
|
|
@@ -136,21 +119,10 @@ const result = await mediafireInfo('https://www.mediafire.com/file/abc123/archiv
|
|
|
136
119
|
```js
|
|
137
120
|
import { githubInfo, githubRelease, githubContents, githubSearch } from '@soyaxell09/zenbot-scraper'
|
|
138
121
|
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
// → { name, fullName, description, url, stars, forks, language, license, topics, owner, cloneUrl, zipUrl, ... }
|
|
142
|
-
|
|
143
|
-
// Último release
|
|
144
|
-
const release = await githubRelease('facebook/react')
|
|
145
|
-
// → { tag, name, body, publishedAt, url, assets: [{ name, size, downloadUrl, downloads }] }
|
|
146
|
-
|
|
147
|
-
// Contenido de un directorio o archivo
|
|
122
|
+
const info = await githubInfo('facebook/react')
|
|
123
|
+
const release = await githubRelease('facebook/react')
|
|
148
124
|
const contents = await githubContents('facebook/react', 'src')
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
// Buscar repositorios o usuarios
|
|
152
|
-
const repos = await githubSearch('whatsapp bot', 'repositories', 5)
|
|
153
|
-
// → [{ name, description, url, stars, forks, language, updatedAt }]
|
|
125
|
+
const repos = await githubSearch('whatsapp bot', 'repositories', 5)
|
|
154
126
|
```
|
|
155
127
|
|
|
156
128
|
### APK (APKPure)
|
|
@@ -158,49 +130,34 @@ const repos = await githubSearch('whatsapp bot', 'repositories', 5)
|
|
|
158
130
|
```js
|
|
159
131
|
import { apkSearch, apkInfo } from '@soyaxell09/zenbot-scraper'
|
|
160
132
|
|
|
161
|
-
// Buscar por nombre
|
|
162
133
|
const results = await apkSearch('whatsapp', 3)
|
|
163
134
|
// → [{ name, developer, pkg, date, icon, appUrl, dlUrl }]
|
|
164
135
|
|
|
165
|
-
// Info por package name
|
|
166
136
|
const info = await apkInfo('com.whatsapp')
|
|
167
137
|
// → { name, developer, pkg, date, icon, download, dlLinks, url }
|
|
168
138
|
```
|
|
169
139
|
|
|
170
|
-
### APK (APKPure)
|
|
171
|
-
|
|
172
|
-
```js
|
|
173
|
-
import { apkSearch, apkInfo } from '@soyaxell09/zenbot-scraper'
|
|
174
|
-
|
|
175
|
-
// Buscar por nombre
|
|
176
|
-
const results = await apkSearch('whatsapp', 3)
|
|
177
|
-
// → [{ name, developer, pkg, date, icon, appUrl, dlUrl }]
|
|
178
|
-
|
|
179
|
-
// Info por package name
|
|
180
|
-
const info = await apkInfo('com.whatsapp')
|
|
181
|
-
// → { name, developer, pkg, date, icon, download, dlLinks, url }
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
|
|
185
140
|
### Google Drive
|
|
186
141
|
|
|
187
142
|
```js
|
|
188
143
|
import { gdriveInfo, gdriveDownload } from '@soyaxell09/zenbot-scraper'
|
|
189
144
|
|
|
190
|
-
// Info del archivo
|
|
191
145
|
const info = await gdriveInfo('https://drive.google.com/file/d/1ABC.../view')
|
|
192
146
|
// → { fileId, name, download, url }
|
|
193
147
|
|
|
194
|
-
// Descargar archivo (devuelve buffer)
|
|
195
148
|
const file = await gdriveDownload('https://drive.google.com/file/d/1ABC.../view')
|
|
196
149
|
// → { fileId, buffer, contentType, size, url }
|
|
197
|
-
|
|
198
|
-
// También acepta ID directo
|
|
199
|
-
const file2 = await gdriveDownload('1mkfqv5lwuNGpKatPRzPP4r01N6ZFxwBY')
|
|
200
150
|
```
|
|
201
151
|
|
|
202
|
-
|
|
152
|
+
### Spotify (SpotiDown)
|
|
153
|
+
|
|
154
|
+
```js
|
|
155
|
+
import { spotidownTrack } from '@soyaxell09/zenbot-scraper'
|
|
203
156
|
|
|
157
|
+
const result = await spotidownTrack('https://open.spotify.com/track/xxx')
|
|
158
|
+
// → { name, artist, album, year, duration, cover, mp3, coverHd }
|
|
159
|
+
// mp3 y coverHd son URLs de descarga directa
|
|
160
|
+
```
|
|
204
161
|
|
|
205
162
|
---
|
|
206
163
|
|
|
@@ -220,12 +177,8 @@ const results = await googleSearch('node.js tutorial', 5)
|
|
|
220
177
|
```js
|
|
221
178
|
import { spotify } from '@soyaxell09/zenbot-scraper'
|
|
222
179
|
|
|
223
|
-
// Buscar tracks
|
|
224
180
|
const tracks = await spotify('bad bunny', 'tracks', 5)
|
|
225
181
|
// → [{ title, artist, album, duration, thumbnail, url, preview }]
|
|
226
|
-
|
|
227
|
-
// Buscar álbumes
|
|
228
|
-
const albums = await spotify('bad bunny', 'albums', 3)
|
|
229
182
|
```
|
|
230
183
|
|
|
231
184
|
### Tenor (GIFs)
|
|
@@ -242,24 +195,12 @@ const gifs = await giphy('funny cat', 5)
|
|
|
242
195
|
```js
|
|
243
196
|
import { pinsearch, pinimg, pinvid } from '@soyaxell09/zenbot-scraper'
|
|
244
197
|
|
|
245
|
-
// Buscar imágenes por texto
|
|
246
198
|
const imgs = await pinsearch('anime wallpaper', 5)
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
// Imagen de un pin específico o por texto
|
|
250
|
-
const pin = await pinimg('https://www.pinterest.com/pin/123/')
|
|
251
|
-
const byText = await pinimg('anime wallpaper', 5)
|
|
252
|
-
// → { id, title, description, image, images, url } | [{ index, image, url }]
|
|
253
|
-
|
|
254
|
-
// Buscar videos por texto o URL de pin
|
|
199
|
+
const pin = await pinimg('https://www.pinterest.com/pin/123/')
|
|
255
200
|
const vids = await pinvid('anime', 5)
|
|
256
|
-
const pinVid = await pinvid('https://www.pinterest.com/pin/123/')
|
|
257
|
-
// → [{ index, video, sd, original }]
|
|
258
201
|
```
|
|
259
202
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
### Imágenes de Anime (Wallhaven + Konachan)
|
|
203
|
+
### Imágenes de Anime
|
|
263
204
|
|
|
264
205
|
```js
|
|
265
206
|
import { animeImage } from '@soyaxell09/zenbot-scraper'
|
|
@@ -268,9 +209,7 @@ const results = await animeImage('naruto', 5)
|
|
|
268
209
|
// → [{ image, url, source }]
|
|
269
210
|
```
|
|
270
211
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
### Wallpapers (BestHDWallpaper)
|
|
212
|
+
### Wallpapers
|
|
274
213
|
|
|
275
214
|
```js
|
|
276
215
|
import { wallpaperSearch } from '@soyaxell09/zenbot-scraper'
|
|
@@ -279,45 +218,18 @@ const results = await wallpaperSearch('nature', 10)
|
|
|
279
218
|
// → [{ title, image, url }]
|
|
280
219
|
```
|
|
281
220
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
### Stickers (GetStickerPack)
|
|
221
|
+
### Stickers
|
|
285
222
|
|
|
286
223
|
```js
|
|
287
224
|
import { stickerSearch } from '@soyaxell09/zenbot-scraper'
|
|
288
225
|
|
|
289
|
-
// Buscar packs por texto — devuelve un pack aleatorio con sus stickers
|
|
290
226
|
const result = await stickerSearch('anime', 10)
|
|
291
|
-
// → {
|
|
292
|
-
// status: true,
|
|
293
|
-
// nombre: 'My Hero Academia',
|
|
294
|
-
// creador: '@false_eye',
|
|
295
|
-
// total: 39,
|
|
296
|
-
// fotos: ['https://s3.getstickerpack.com/...webp', ...],
|
|
297
|
-
// url: 'https://getstickerpack.com/stickers/...'
|
|
298
|
-
// }
|
|
227
|
+
// → { status, nombre, creador, total, fotos, url }
|
|
299
228
|
```
|
|
300
229
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
### YouTube v2 (via ytdown.to — más calidades)
|
|
304
|
-
|
|
305
|
-
```js
|
|
306
|
-
import { ytDownloadV2, ytInfoV2, getFileSizeV2 } from '@soyaxell09/zenbot-scraper'
|
|
307
|
-
|
|
308
|
-
// Ver calidades disponibles
|
|
309
|
-
const info = await ytInfoV2('https://youtu.be/dQw4w9WgXcQ')
|
|
310
|
-
// → { title, uploader, views, thumb, qualities: [{ id, type, quality, size, sizeB, duration }] }
|
|
311
|
-
|
|
312
|
-
// Descargar con calidad específica
|
|
313
|
-
const video = await ytDownloadV2('https://youtu.be/dQw4w9WgXcQ', 'video', '1080p')
|
|
314
|
-
const audio = await ytDownloadV2('https://youtu.be/dQw4w9WgXcQ', 'mp3', '128k')
|
|
315
|
-
// → { title, uploader, views, thumb, type, quality, size, sizeB, duration, url }
|
|
230
|
+
---
|
|
316
231
|
|
|
317
|
-
|
|
318
|
-
const size = await getFileSizeV2('https://example.com/file.mp4')
|
|
319
|
-
// → '14.5 MB'
|
|
320
|
-
```
|
|
232
|
+
## 🛠️ Tools
|
|
321
233
|
|
|
322
234
|
### TikTok Stalk
|
|
323
235
|
|
|
@@ -325,7 +237,7 @@ const size = await getFileSizeV2('https://example.com/file.mp4')
|
|
|
325
237
|
import { tiktokStalk } from '@soyaxell09/zenbot-scraper'
|
|
326
238
|
|
|
327
239
|
const profile = await tiktokStalk('charlidamelio')
|
|
328
|
-
// → { id, username, nickname, bio, avatar, verified, private, bioLink, stats
|
|
240
|
+
// → { id, username, nickname, bio, avatar, verified, private, bioLink, stats, url }
|
|
329
241
|
```
|
|
330
242
|
|
|
331
243
|
### Letras de canciones
|
|
@@ -333,13 +245,8 @@ const profile = await tiktokStalk('charlidamelio')
|
|
|
333
245
|
```js
|
|
334
246
|
import { lyricsSearch, lyricsGet } from '@soyaxell09/zenbot-scraper'
|
|
335
247
|
|
|
336
|
-
// Buscar por texto libre
|
|
337
248
|
const results = await lyricsSearch('bad bunny tití me preguntó', 3)
|
|
338
|
-
|
|
339
|
-
// lrc = letra sincronizada con timestamps [00:00.00]
|
|
340
|
-
|
|
341
|
-
// Buscar por artista y título
|
|
342
|
-
const song = await lyricsGet('Bad Bunny', 'Tití Me Preguntó')
|
|
249
|
+
const song = await lyricsGet('Bad Bunny', 'Tití Me Preguntó')
|
|
343
250
|
// → { id, title, artist, album, duration, lyrics, lrc }
|
|
344
251
|
```
|
|
345
252
|
|
|
@@ -348,18 +255,11 @@ const song = await lyricsGet('Bad Bunny', 'Tití Me Preguntó')
|
|
|
348
255
|
```js
|
|
349
256
|
import { translate, getLangs } from '@soyaxell09/zenbot-scraper'
|
|
350
257
|
|
|
351
|
-
// Traducir (auto-detecta idioma origen)
|
|
352
258
|
const result = await translate('Hello, how are you?', 'es')
|
|
353
259
|
// → { original, translated, from, to, fromName, toName, source }
|
|
354
260
|
|
|
355
|
-
// Especificar idioma origen
|
|
356
|
-
const result2 = await translate('Hola cómo estás', 'en', 'es')
|
|
357
|
-
|
|
358
|
-
// Ver idiomas disponibles
|
|
359
261
|
const langs = getLangs()
|
|
360
|
-
// → [{ code
|
|
361
|
-
|
|
362
|
-
// Códigos disponibles: es, en, pt, fr, de, it, ja, ko, zh, ru, ar, hi, tr, nl, pl, sv, uk, vi, id
|
|
262
|
+
// → [{ code, name }]
|
|
363
263
|
```
|
|
364
264
|
|
|
365
265
|
### Clima
|
|
@@ -368,7 +268,7 @@ const langs = getLangs()
|
|
|
368
268
|
import { weather } from '@soyaxell09/zenbot-scraper'
|
|
369
269
|
|
|
370
270
|
const w = await weather('Buenos Aires')
|
|
371
|
-
// → { location, temp, feelsLike, humidity, wind, windDir, visibility, pressure, uvIndex, description, forecast
|
|
271
|
+
// → { location, temp, feelsLike, humidity, wind, windDir, visibility, pressure, uvIndex, description, forecast }
|
|
372
272
|
```
|
|
373
273
|
|
|
374
274
|
### QR
|
|
@@ -376,13 +276,8 @@ const w = await weather('Buenos Aires')
|
|
|
376
276
|
```js
|
|
377
277
|
import { qrGenerate, qrRead } from '@soyaxell09/zenbot-scraper'
|
|
378
278
|
|
|
379
|
-
|
|
380
|
-
const qr = await qrGenerate('https://github.com/axeldev09', 300)
|
|
381
|
-
// → { url, buffer, size, text }
|
|
382
|
-
|
|
383
|
-
// Leer QR desde URL de imagen
|
|
279
|
+
const qr = await qrGenerate('https://github.com/axeldev09', 300)
|
|
384
280
|
const result = await qrRead('https://example.com/qr.png')
|
|
385
|
-
// → { text, type }
|
|
386
281
|
```
|
|
387
282
|
|
|
388
283
|
### Acortador de URLs
|
|
@@ -390,13 +285,8 @@ const result = await qrRead('https://example.com/qr.png')
|
|
|
390
285
|
```js
|
|
391
286
|
import { shortenUrl, expandUrl } from '@soyaxell09/zenbot-scraper'
|
|
392
287
|
|
|
393
|
-
|
|
394
|
-
const short = await shortenUrl('https://github.com/axeldev09/zenbot-scraper')
|
|
395
|
-
// → { short: 'https://is.gd/xxxxx', source: 'is.gd' }
|
|
396
|
-
|
|
397
|
-
// Expandir
|
|
288
|
+
const short = await shortenUrl('https://github.com/axeldev09/zenbot-scraper')
|
|
398
289
|
const expanded = await expandUrl('https://is.gd/xxxxx')
|
|
399
|
-
// → { original, expanded }
|
|
400
290
|
```
|
|
401
291
|
|
|
402
292
|
### Noticias
|
|
@@ -404,52 +294,144 @@ const expanded = await expandUrl('https://is.gd/xxxxx')
|
|
|
404
294
|
```js
|
|
405
295
|
import { news, newsCategories } from '@soyaxell09/zenbot-scraper'
|
|
406
296
|
|
|
407
|
-
|
|
408
|
-
const n = await news('es', 5)
|
|
409
|
-
// → { category, source, items: [{ title, description, url, image, published, source }] }
|
|
410
|
-
|
|
411
|
-
// Categorías disponibles
|
|
297
|
+
const n = await news('es', 5)
|
|
412
298
|
const cats = newsCategories()
|
|
413
299
|
// → ['es', 'en', 'pt', 'tech', 'sports', 'science', 'world']
|
|
414
300
|
```
|
|
415
301
|
|
|
416
|
-
|
|
302
|
+
### Screenshot
|
|
417
303
|
|
|
304
|
+
```js
|
|
305
|
+
import { screenshot } from '@soyaxell09/zenbot-scraper'
|
|
306
|
+
|
|
307
|
+
const result = await screenshot('https://github.com', 1280, 720)
|
|
308
|
+
// → { url, width, height, size, buffer }
|
|
309
|
+
```
|
|
418
310
|
|
|
419
311
|
### Upload (Catbox.moe)
|
|
420
312
|
|
|
421
313
|
```js
|
|
422
314
|
import { upload } from '@soyaxell09/zenbot-scraper'
|
|
423
315
|
|
|
424
|
-
// Por ruta de archivo local
|
|
425
316
|
const r1 = await upload('/sdcard/foto.jpg')
|
|
426
|
-
|
|
317
|
+
const r2 = await upload('https://example.com/image.jpg')
|
|
318
|
+
const r3 = await upload(buffer, 'video.mp4')
|
|
319
|
+
// → { url, filename }
|
|
320
|
+
```
|
|
427
321
|
|
|
428
|
-
|
|
429
|
-
const r2 = await upload('https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg')
|
|
430
|
-
// → { url: 'https://files.catbox.moe/xxxxx.jpg', filename: 'file.jpg' }
|
|
322
|
+
---
|
|
431
323
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
324
|
+
## 🔞 NSFW
|
|
325
|
+
|
|
326
|
+
> ⚠️ Solo para bots con verificación de edad. Usá responsablemente.
|
|
327
|
+
|
|
328
|
+
### XNXX Search
|
|
329
|
+
|
|
330
|
+
```js
|
|
331
|
+
import { xnxxSearch } from '@soyaxell09/zenbot-scraper'
|
|
332
|
+
|
|
333
|
+
const results = await xnxxSearch('query', 10)
|
|
334
|
+
// → [{ title, url, thumb, preview, duration, views, quality, uploader }]
|
|
435
335
|
```
|
|
436
336
|
|
|
437
|
-
|
|
337
|
+
### XNXX Download
|
|
438
338
|
|
|
439
|
-
|
|
339
|
+
```js
|
|
340
|
+
import { xnxxDownload } from '@soyaxell09/zenbot-scraper'
|
|
341
|
+
|
|
342
|
+
const result = await xnxxDownload('https://www.xnxx.com/video-xxx/...')
|
|
343
|
+
// → { title, thumb, uploader, duration, views, uploadDate, download: { low, high, hls } }
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### PornHub Search
|
|
440
347
|
|
|
441
348
|
```js
|
|
442
|
-
|
|
443
|
-
import { ytDownload, tiktokDownload, translate, weather } from '@soyaxell09/zenbot-scraper'
|
|
349
|
+
import { phSearch } from '@soyaxell09/zenbot-scraper'
|
|
444
350
|
|
|
445
|
-
|
|
446
|
-
|
|
351
|
+
const results = await phSearch('query', 10)
|
|
352
|
+
// → [{ title, url, thumb, preview, duration, vkey }]
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### PornHub Download
|
|
356
|
+
|
|
357
|
+
```js
|
|
358
|
+
import { phDownload, phDownloadBuffer } from '@soyaxell09/zenbot-scraper'
|
|
447
359
|
|
|
448
|
-
// Solo
|
|
449
|
-
|
|
360
|
+
// Solo info + HLS streams
|
|
361
|
+
const result = await phDownload('https://www.pornhub.com/view_video.php?viewkey=xxx')
|
|
362
|
+
// → { title, thumb, duration, uploadDate, hls: { '1080p', '720p', '480p', '240p' } }
|
|
450
363
|
|
|
451
|
-
//
|
|
452
|
-
|
|
364
|
+
// Convertir a mp4 con ffmpeg (requiere ffmpeg instalado)
|
|
365
|
+
const video = await phDownloadBuffer('https://www.pornhub.com/view_video.php?viewkey=xxx', '720')
|
|
366
|
+
// → { title, thumb, duration, uploadDate, buffer, quality }
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### XVideos Search
|
|
370
|
+
|
|
371
|
+
```js
|
|
372
|
+
import { xvideosSearch } from '@soyaxell09/zenbot-scraper'
|
|
373
|
+
|
|
374
|
+
const results = await xvideosSearch('query', 10)
|
|
375
|
+
// → [{ title, url, thumb, preview, duration, views, quality }]
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### XVideos Download
|
|
379
|
+
|
|
380
|
+
```js
|
|
381
|
+
import { xvideosDownload } from '@soyaxell09/zenbot-scraper'
|
|
382
|
+
|
|
383
|
+
const result = await xvideosDownload('https://www.xvideos.com/video.xxx/...')
|
|
384
|
+
// → { title, thumb, duration, views, uploadDate, download: { low, high, hls } }
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### XHamster Search
|
|
388
|
+
|
|
389
|
+
```js
|
|
390
|
+
import { xhamsterSearch } from '@soyaxell09/zenbot-scraper'
|
|
391
|
+
|
|
392
|
+
const results = await xhamsterSearch('query', 10)
|
|
393
|
+
// → [{ title, url, thumb, preview, duration, views }]
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### XHamster Download
|
|
397
|
+
|
|
398
|
+
```js
|
|
399
|
+
import { xhamsterDownload, xhamsterDownloadBuffer } from '@soyaxell09/zenbot-scraper'
|
|
400
|
+
|
|
401
|
+
// Info + calidades HLS
|
|
402
|
+
const result = await xhamsterDownload('https://xhamster.com/videos/...')
|
|
403
|
+
// → { title, thumb, duration, views, download: { '144p', '240p', '480p', '720p', '1080p' } }
|
|
404
|
+
|
|
405
|
+
// Convertir a mp4 con ffmpeg (requiere ffmpeg instalado)
|
|
406
|
+
const video = await xhamsterDownloadBuffer('https://xhamster.com/videos/...', '480p')
|
|
407
|
+
// → { title, thumb, duration, views, buffer, quality }
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### Rule34 (yande.re + paheal)
|
|
411
|
+
|
|
412
|
+
```js
|
|
413
|
+
import { rule34Search, rule34Random } from '@soyaxell09/zenbot-scraper'
|
|
414
|
+
|
|
415
|
+
// Buscar por tags (usa yande.re, cae a paheal si no hay resultados)
|
|
416
|
+
const results = await rule34Search('cat_girl', 10)
|
|
417
|
+
// → [{ id, url, full, preview, tags, score, width, height }]
|
|
418
|
+
|
|
419
|
+
// Imagen random (usa paheal, con o sin tags)
|
|
420
|
+
const random = await rule34Random('cat_girl')
|
|
421
|
+
const any = await rule34Random()
|
|
422
|
+
// → { id, url, full, preview, tags, score, width, height }
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## 📦 Importación por módulo
|
|
428
|
+
|
|
429
|
+
```js
|
|
430
|
+
import { ytDownload, tiktokDownload, igDownload, translate, weather } from '@soyaxell09/zenbot-scraper'
|
|
431
|
+
import { ytDownload, fbDownload, igDownload } from '@soyaxell09/zenbot-scraper/scrapers'
|
|
432
|
+
import { googleSearch, spotify } from '@soyaxell09/zenbot-scraper/search'
|
|
433
|
+
import { translate, weather, news, screenshot } from '@soyaxell09/zenbot-scraper/tools'
|
|
434
|
+
import { xnxxSearch, phSearch, rule34Random, xhamsterSearch } from '@soyaxell09/zenbot-scraper/nsfw'
|
|
453
435
|
```
|
|
454
436
|
|
|
455
437
|
---
|
|
@@ -458,6 +440,7 @@ import { translate, weather, news } from '@soyaxell09/zenbot-scraper/tools'
|
|
|
458
440
|
|
|
459
441
|
- Node.js >= 18.0.0
|
|
460
442
|
- Dependencias: `axios`, `cheerio`, `@distube/ytdl-core`, `form-data`
|
|
443
|
+
- Para `phDownloadBuffer` y `xhamsterDownloadBuffer`: requiere `ffmpeg` instalado en el sistema
|
|
461
444
|
|
|
462
445
|
---
|
|
463
446
|
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soyaxell09/zenbot-scraper",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Scrapers de descarga y búsqueda para bots de WhatsApp — YouTube, TikTok, Facebook, Twitter, Pinterest, MediaFire, GitHub, APK, Google Drive y más.",
|
|
3
|
+
"version": "1.0.12",
|
|
4
|
+
"description": "Scrapers de descarga y búsqueda para bots de WhatsApp — YouTube, TikTok, Instagram, Facebook, Twitter, Pinterest, MediaFire, GitHub, APK, Google Drive, XNXX, PornHub, XVideos, XHamster, Rule34, Screenshot y más.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": "./src/index.js",
|
|
9
9
|
"./scrapers": "./src/scrapers/index.js",
|
|
10
10
|
"./search": "./src/search/index.js",
|
|
11
|
-
"./tools": "./src/tools/index.js"
|
|
11
|
+
"./tools": "./src/tools/index.js",
|
|
12
|
+
"./nsfw": "./src/nsfw/index.js"
|
|
12
13
|
},
|
|
13
14
|
"scripts": {
|
|
14
15
|
"test": "node test/index.js"
|
|
@@ -20,6 +21,7 @@
|
|
|
20
21
|
"downloader",
|
|
21
22
|
"youtube",
|
|
22
23
|
"tiktok",
|
|
24
|
+
"instagram",
|
|
23
25
|
"facebook",
|
|
24
26
|
"twitter",
|
|
25
27
|
"pinterest",
|
|
@@ -35,9 +37,16 @@
|
|
|
35
37
|
"qr",
|
|
36
38
|
"news",
|
|
37
39
|
"upload",
|
|
40
|
+
"screenshot",
|
|
38
41
|
"stickers",
|
|
39
42
|
"gdrive",
|
|
40
|
-
"google-drive"
|
|
43
|
+
"google-drive",
|
|
44
|
+
"xnxx",
|
|
45
|
+
"pornhub",
|
|
46
|
+
"xvideos",
|
|
47
|
+
"xhamster",
|
|
48
|
+
"rule34",
|
|
49
|
+
"nsfw"
|
|
41
50
|
],
|
|
42
51
|
"author": "AxelDev09",
|
|
43
52
|
"license": "MIT",
|
package/src/index.js
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
export { ytInfo, ytDownload, ytSearch } from './scrapers/youtube.js'
|
|
9
9
|
export { ytInfoV2, ytDownloadV2, getFileSizeV2 } from './scrapers/youtubev2.js'
|
|
10
10
|
export { tiktokInfo, tiktokDownload } from './scrapers/tiktok.js'
|
|
11
|
+
export { igDownload } from './scrapers/instagram.js'
|
|
12
|
+
export { spotidownTrack } from './scrapers/spotidown.js'
|
|
11
13
|
export { fbDownload } from './scrapers/facebook.js'
|
|
12
14
|
export { tweetInfo, tweetDownload } from './scrapers/twitter.js'
|
|
13
15
|
export { mediafireInfo } from './scrapers/mediafire.js'
|
|
@@ -29,3 +31,13 @@ export { qrGenerate, qrRead } from './tools
|
|
|
29
31
|
export { shortenUrl, expandUrl } from './tools/urlshortener.js'
|
|
30
32
|
export { news, newsCategories } from './tools/news.js'
|
|
31
33
|
export { upload } from './tools/upload.js'
|
|
34
|
+
export { screenshot } from './tools/screenshot.js'
|
|
35
|
+
export { xnxxSearch } from './nsfw/xnxxsearch.js'
|
|
36
|
+
export { xnxxDownload } from './nsfw/xnxxdl.js'
|
|
37
|
+
export { phSearch } from './nsfw/phsearch.js'
|
|
38
|
+
export { phDownload, phDownloadBuffer } from './nsfw/phdl.js'
|
|
39
|
+
export { xvideosSearch } from './nsfw/xvideossearch.js'
|
|
40
|
+
export { xvideosDownload } from './nsfw/xvideosdl.js'
|
|
41
|
+
export { rule34Search, rule34Random } from './nsfw/rule34.js'
|
|
42
|
+
export { xhamsterSearch } from './nsfw/xhamstersearch.js'
|
|
43
|
+
export { xhamsterDownload, xhamsterDownloadBuffer } from './nsfw/xhammerdl.js'
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* © Created by AxelDev09 🔥
|
|
3
|
+
* GitHub: https://github.com/AxelDev09
|
|
4
|
+
* Instagram: @axeldev09
|
|
5
|
+
* Deja los créditos we 🗣️
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export { xnxxSearch } from './xnxxsearch.js'
|
|
9
|
+
export { xnxxDownload } from './xnxxdl.js'
|
|
10
|
+
export { phSearch } from './phsearch.js'
|
|
11
|
+
export { phDownload, phDownloadBuffer } from './phdl.js'
|
|
12
|
+
export { xvideosSearch } from './xvideossearch.js'
|
|
13
|
+
export { xvideosDownload } from './xvideosdl.js'
|
|
14
|
+
export { rule34Search, rule34Random } from './rule34.js'
|
|
15
|
+
export { xhamsterSearch } from './xhamstersearch.js'
|
|
16
|
+
export { xhamsterDownload, xhamsterDownloadBuffer } from './xhammerdl.js'
|
|
17
|
+
export { hentaiImgSearch, hentaiImgRandom } from './hentaiimg.js'
|