abot-scraper 1.5.1 → 1.6.1

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/dist/index.cjs CHANGED
@@ -172,7 +172,7 @@ var Downloader = class {
172
172
  };
173
173
  this.generator = new Generator();
174
174
  }
175
- async facebook(url) {
175
+ async facebookDownloader(url) {
176
176
  try {
177
177
  const headers = {
178
178
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0",
@@ -251,72 +251,52 @@ var Downloader = class {
251
251
  };
252
252
  }
253
253
  }
254
- async igstory(username) {
255
- const payload = {
256
- username
257
- };
258
- const headers = {
259
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/",
260
- accept: "application/json, text/plain, */*",
261
- "accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6",
262
- "content-type": "application/json",
263
- priority: "u=1, i",
264
- "sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"',
265
- "sec-ch-ua-mobile": "?0",
266
- "sec-ch-ua-platform": '"Windows"',
267
- "sec-fetch-dest": "empty",
268
- "sec-fetch-mode": "cors",
269
- "sec-fetch-site": "same-origin",
270
- Referer: "https://storyviewer.com/",
271
- "Referrer-Policy": "strict-origin-when-cross-origin"
272
- };
254
+ async instagramDownloader(url) {
273
255
  try {
256
+ const payload = new URLSearchParams({ url });
257
+ const headers = {
258
+ accept: "*/*",
259
+ "accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6",
260
+ "content-type": "application/x-www-form-urlencoded",
261
+ priority: "u=1, i",
262
+ "sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Microsoft Edge";v="138"',
263
+ "sec-ch-ua-mobile": "?0",
264
+ "sec-ch-ua-platform": '"Windows"',
265
+ "sec-fetch-dest": "empty",
266
+ "sec-fetch-mode": "cors",
267
+ "sec-fetch-site": "same-origin"
268
+ };
274
269
  const response = await import_axios.default.post(
275
- `https://storyviewer.com/api/data`,
270
+ "https://snapinsta.llc/process",
276
271
  payload,
277
272
  { headers }
278
273
  );
279
- const data = response.data;
280
- const sources = data.stories.map((story) => story.source);
281
- return {
282
- creator: global.creator,
283
- status: 200,
284
- result: {
285
- user_info: data.user_info,
286
- links: sources
274
+ const $ = cheerio.load(response.data);
275
+ const downloadItems = [];
276
+ $(".download-item").each((_index, element) => {
277
+ const $element = $(element);
278
+ const previewImg = $element.find(".media-box img").attr("src");
279
+ const downloadLink = $element.find(".download-media").attr("href");
280
+ const downloadText = $element.find(".download-media").text().trim();
281
+ const isVideo = downloadText.toLowerCase().includes("video") || $element.find(".icon-downvid").length > 0;
282
+ if (downloadLink) {
283
+ const mediaItem = {
284
+ type: isVideo ? "video" : "image",
285
+ url: downloadLink
286
+ };
287
+ if (previewImg) {
288
+ mediaItem.preview = previewImg;
289
+ }
290
+ downloadItems.push(mediaItem);
287
291
  }
288
- };
289
- } catch (error) {
290
- return {
291
- creator: global.creator,
292
- status: false,
293
- msg: error instanceof Error ? error.message : "Unknown error"
294
- };
295
- }
296
- }
297
- async instagram(url) {
298
- try {
299
- const config = new URLSearchParams({
300
- url,
301
- new: "2",
302
- lang: "en",
303
- app: ""
304
292
  });
305
- const headers = {
306
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
307
- };
308
- const response = await import_axios.default.post(
309
- "https://snapinsta.app/get-data.php",
310
- config,
311
- { headers }
312
- );
313
- const downloadLinks = response.data.files.map(
314
- (file) => file.__type === "GraphVideo" ? { type: "video", url: file.video_url || "" } : file.__type === "GraphImage" ? { type: "image", url: file.download_url || "" } : null
315
- ).filter((link) => link !== null);
293
+ if (downloadItems.length === 0) {
294
+ throw new Error("No media items found in the response.");
295
+ }
316
296
  return {
317
297
  creator: global.creator,
318
298
  status: 200,
319
- result: downloadLinks
299
+ result: downloadItems
320
300
  };
321
301
  } catch (error) {
322
302
  return {
@@ -327,60 +307,6 @@ var Downloader = class {
327
307
  }
328
308
  }
329
309
  async youtubeDownloader(url) {
330
- try {
331
- const config = import_qs.default.stringify({
332
- url,
333
- q_auto: 0,
334
- ajax: 1,
335
- lang: "en"
336
- });
337
- const headers = {
338
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
339
- };
340
- const response = await import_axios.default.post(
341
- "https://yt1s.net/ajax?retry=undefined&platform=youtube",
342
- config,
343
- { headers }
344
- );
345
- const $ = cheerio.load(response.data.result);
346
- const title = $(".caption b").text().trim();
347
- const downloadLinks = {
348
- "480p": $('a[data-fquality="480p"]').attr("href") || "",
349
- "720p": $('a[data-fquality="720p"]').attr("href") || "",
350
- "1080p": $('a[data-fquality="1080p"]').attr("href") || ""
351
- };
352
- const thumbnailUrl = $(".thumbnail.cover img").attr("src");
353
- const mp3ConvertElement = $("#convert-mp3 a");
354
- const hrefAttr = mp3ConvertElement.attr("href");
355
- if (!hrefAttr) throw new Error("MP3 conversion link not found.");
356
- const mp3ConvertTokenMatch = hrefAttr.match(
357
- /mp3_convert_task\('(\d+)',\s*'([^']+)'\)/
358
- );
359
- if (!mp3ConvertTokenMatch)
360
- throw new Error("MP3 conversion token not found.");
361
- const mp3ConvertToken = mp3ConvertTokenMatch[2];
362
- const mp3Response = await import_axios.default.get(
363
- `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`
364
- );
365
- return {
366
- creator: global.creator,
367
- status: 200,
368
- result: {
369
- title,
370
- thumbnail: thumbnailUrl || "",
371
- downloadLinks,
372
- mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`
373
- }
374
- };
375
- } catch (error) {
376
- return {
377
- creator: global.creator,
378
- status: false,
379
- msg: error instanceof Error ? error.message : "Unknown error"
380
- };
381
- }
382
- }
383
- async youtubeDownloaderV2(url) {
384
310
  try {
385
311
  const timestamp = this.generator.generateTimeStampYoutubeDL();
386
312
  const footer = this.generator.generateFooterYoutubeDL(timestamp, url);
@@ -479,76 +405,6 @@ var cheerio2 = __toESM(require("cheerio"), 1);
479
405
  global.creator = "@abotscraper \u2013 ahmuq";
480
406
  var Search = class {
481
407
  constructor() {
482
- this.ytPlay = (text) => {
483
- return new Promise((resolve, reject) => {
484
- const configd = {
485
- k_query: text,
486
- k_page: "mp3",
487
- q_auto: 1
488
- };
489
- const headerss = {
490
- "sec-ch-ua": '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
491
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
492
- Cookie: 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={"0":{},"C702514":{"page":5,"time":1625200846733}}'
493
- };
494
- (0, import_axios2.default)("https://www.y2mate.com/mates/analyzeV2/ajax", {
495
- method: "POST",
496
- data: new URLSearchParams(Object.entries(configd)),
497
- headers: headerss
498
- }).then(({ data }) => {
499
- const v = data.vitems;
500
- const v2 = v[Math.floor(Math.random() * v.length)].v;
501
- const url = "https://www.youtube.com/watch?v=" + v2;
502
- const config = {
503
- k_query: "https://www.youtube.be/" + url,
504
- k_page: "mp3",
505
- hl: "en",
506
- q_auto: 1
507
- };
508
- (0, import_axios2.default)("https://www.y2mate.com/mates/en68/analyze/ajax", {
509
- method: "POST",
510
- data: new URLSearchParams({
511
- url: "https://www.youtube.be/" + url,
512
- q_auto: "0",
513
- ajax: "1"
514
- }),
515
- headers: headerss
516
- }).then(({ data: data2 }) => {
517
- const $ = cheerio2.load(data2.result);
518
- const img = $("div.thumbnail.cover > a > img").attr("src");
519
- (0, import_axios2.default)("https://www.y2mate.com/mates/analyzeV2/ajax", {
520
- method: "POST",
521
- data: new URLSearchParams(Object.entries(config)),
522
- headers: headerss
523
- }).then(({ data: data3 }) => {
524
- const convertConfig = {
525
- vid: data3.vid,
526
- k: data3.links.mp3.mp3128.k
527
- };
528
- const size = data3.links.mp3.mp3128.size;
529
- (0, import_axios2.default)("https://www.y2mate.com/mates/convertV2/index", {
530
- method: "POST",
531
- data: new URLSearchParams(Object.entries(convertConfig)),
532
- headers: headerss
533
- }).then((response) => {
534
- resolve({
535
- creator: global.creator,
536
- status: 200,
537
- result: {
538
- status: response.data.status,
539
- title: response.data.title,
540
- ftype: response.data.ftype,
541
- thumb: img || "",
542
- size_mp3: size,
543
- link: response.data.dlink
544
- }
545
- });
546
- }).catch(reject);
547
- });
548
- });
549
- }).catch(reject);
550
- });
551
- };
552
408
  this.wallpaper = (title, page = "1") => {
553
409
  return new Promise((resolve, reject) => {
554
410
  import_axios2.default.get(
@@ -603,6 +459,49 @@ var Search = class {
603
459
  });
604
460
  };
605
461
  }
462
+ async igStory(username) {
463
+ const payload = {
464
+ username
465
+ };
466
+ const headers = {
467
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/",
468
+ accept: "application/json, text/plain, */*",
469
+ "accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6",
470
+ "content-type": "application/json",
471
+ priority: "u=1, i",
472
+ "sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"',
473
+ "sec-ch-ua-mobile": "?0",
474
+ "sec-ch-ua-platform": '"Windows"',
475
+ "sec-fetch-dest": "empty",
476
+ "sec-fetch-mode": "cors",
477
+ "sec-fetch-site": "same-origin",
478
+ Referer: "https://storyviewer.com/",
479
+ "Referrer-Policy": "strict-origin-when-cross-origin"
480
+ };
481
+ try {
482
+ const response = await import_axios2.default.post(
483
+ `https://storyviewer.com/api/data`,
484
+ payload,
485
+ { headers }
486
+ );
487
+ const data = response.data;
488
+ const sources = data.stories.map((story) => story.source);
489
+ return {
490
+ creator: global.creator,
491
+ status: 200,
492
+ result: {
493
+ user_info: data.user_info,
494
+ links: sources
495
+ }
496
+ };
497
+ } catch (error) {
498
+ return {
499
+ creator: global.creator,
500
+ status: false,
501
+ msg: error instanceof Error ? error.message : "Unknown error"
502
+ };
503
+ }
504
+ }
606
505
  async sfileSearch(query, page = 1) {
607
506
  try {
608
507
  const response = await import_axios2.default.get(
@@ -688,7 +587,107 @@ var import_form_data = __toESM(require("form-data"), 1);
688
587
  global.creator = "@abotscraper \u2013 ahmuq";
689
588
  var Tools = class {
690
589
  constructor() {
691
- this.reminiUpscale = (buffer) => {
590
+ this.removeBackground = (image) => {
591
+ return new Promise((resolve, reject) => {
592
+ const headers = {
593
+ "accept": "*/*",
594
+ "accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6",
595
+ "content-type": "application/json",
596
+ "priority": "u=1, i",
597
+ "sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Microsoft Edge";v="138"',
598
+ "sec-ch-ua-mobile": "?0",
599
+ "sec-ch-ua-platform": '"Windows"',
600
+ "sec-fetch-dest": "empty",
601
+ "sec-fetch-mode": "cors",
602
+ "sec-fetch-site": "same-origin",
603
+ "referrer": "https://aibackgroundremover.org/"
604
+ };
605
+ const payload = {
606
+ image
607
+ };
608
+ import_axios3.default.post("https://aibackgroundremover.org/api/remove-bg", payload, {
609
+ headers
610
+ }).then((CreateJobResponse) => {
611
+ if (CreateJobResponse.status !== 200) {
612
+ reject({
613
+ creator: global.creator,
614
+ status: false,
615
+ error: `job creation failed`
616
+ });
617
+ return;
618
+ }
619
+ const jobId = CreateJobResponse.data.id;
620
+ const checkJobStatus = () => {
621
+ import_axios3.default.get(`https://aibackgroundremover.org/api/check-status?id=${jobId}`, {
622
+ headers
623
+ }).then((jobResponse) => {
624
+ if (jobResponse.data.status === "succeeded") {
625
+ resolve({
626
+ creator: global.creator,
627
+ status: true,
628
+ result: {
629
+ job_id: jobId,
630
+ image_url: jobResponse.data.output
631
+ }
632
+ });
633
+ } else if (jobResponse.data.status === "starting") {
634
+ setTimeout(checkJobStatus, 3e3);
635
+ } else {
636
+ reject({
637
+ creator: global.creator,
638
+ status: false,
639
+ error: `job status unknown: ${jobResponse.data.status}`
640
+ });
641
+ }
642
+ }).catch((error) => {
643
+ reject({
644
+ creator: global.creator,
645
+ status: false,
646
+ error: error.message
647
+ });
648
+ });
649
+ };
650
+ checkJobStatus();
651
+ }).catch((error) => {
652
+ reject({
653
+ creator: global.creator,
654
+ status: false,
655
+ error: error.message
656
+ });
657
+ });
658
+ });
659
+ };
660
+ this.reminiV2 = (buffer) => {
661
+ return new Promise((resolve, reject) => {
662
+ const form = new import_form_data.default();
663
+ form.append("image", buffer, "blob");
664
+ form.append("scale", 2);
665
+ import_axios3.default.post("https://api2.pixelcut.app/image/upscale/v1", form, {
666
+ headers: {
667
+ ...form.getHeaders(),
668
+ Accept: "application/json",
669
+ Referer: "https://www.pixelcut.ai/",
670
+ Origin: "https://www.pixelcut.ai",
671
+ "x-client-version": "web"
672
+ }
673
+ }).then((Response) => {
674
+ if (Response.data.result_url) {
675
+ resolve({
676
+ creator: global.creator,
677
+ status: true,
678
+ result: Response.data.result_url
679
+ });
680
+ }
681
+ }).catch((error) => {
682
+ reject({
683
+ creator: global.creator,
684
+ status: false,
685
+ error: error.message
686
+ });
687
+ });
688
+ });
689
+ };
690
+ this.reminiV1 = (buffer) => {
692
691
  return new Promise((resolve, reject) => {
693
692
  const form = new import_form_data.default();
694
693
  form.append("type", "Enhancer");
@@ -700,7 +699,8 @@ var Tools = class {
700
699
  "authorization": "",
701
700
  "product-code": "067003",
702
701
  "product-serial": productSerial,
703
- "Referer": "https://remaker.ai/"
702
+ "Referer": "https://remaker.ai/",
703
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0"
704
704
  }
705
705
  }).then((createJobResponse) => {
706
706
  if (createJobResponse.data.code !== 1e5) {