abot-scraper 1.5.1 → 1.6.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.
- package/README.MD +27 -35
- package/dist/index.cjs +103 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +103 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.MD
CHANGED
@@ -2,14 +2,6 @@
|
|
2
2
|
|
3
3
|
A versatile scraper package for downloading and searching content from various social media platforms.
|
4
4
|
|
5
|
-
## Features
|
6
|
-
|
7
|
-
- ✅ **Dual Package Support**: Works with both CommonJS (`require`) and ES Modules (`import`)
|
8
|
-
- 🚀 **Built with Bun**: Optimized build process using Bun.js
|
9
|
-
- 📱 **Multi-platform**: Supports Facebook, Instagram, TikTok, YouTube, and SFile
|
10
|
-
- 🔍 **Search functionality**: Search content across supported platforms
|
11
|
-
- 📝 **TypeScript Support**: Full TypeScript declarations included
|
12
|
-
|
13
5
|
## Installation
|
14
6
|
|
15
7
|
### Stable Version
|
@@ -38,14 +30,14 @@ npm install github:ahlulmukh/abot-scraper
|
|
38
30
|
|
39
31
|
```javascript
|
40
32
|
// Default import
|
41
|
-
const abot = require(
|
33
|
+
const abot = require('abot-scraper');
|
42
34
|
|
43
35
|
// Use the pre-instantiated classes
|
44
|
-
const result = await abot.downloader.facebook(
|
45
|
-
const searchResult = await abot.search.sfileSearch(
|
36
|
+
const result = await abot.downloader.facebook('https://facebook.com/video/123');
|
37
|
+
const searchResult = await abot.search.sfileSearch('query', 1);
|
46
38
|
|
47
39
|
// Or import classes directly
|
48
|
-
const { Downloader, Search } = require(
|
40
|
+
const { Downloader, Search } = require('abot-scraper');
|
49
41
|
const downloader = new Downloader();
|
50
42
|
const search = new Search();
|
51
43
|
```
|
@@ -54,14 +46,14 @@ const search = new Search();
|
|
54
46
|
|
55
47
|
```javascript
|
56
48
|
// Default import
|
57
|
-
import abot from
|
49
|
+
import abot from 'abot-scraper';
|
58
50
|
|
59
51
|
// Use the pre-instantiated classes
|
60
|
-
const result = await abot.downloader.facebook(
|
61
|
-
const searchResult = await abot.search.sfileSearch(
|
52
|
+
const result = await abot.downloader.facebook('https://facebook.com/video/123');
|
53
|
+
const searchResult = await abot.search.sfileSearch('query', 1);
|
62
54
|
|
63
55
|
// Or import classes directly
|
64
|
-
import { Downloader, Search } from
|
56
|
+
import { Downloader, Search } from 'abot-scraper';
|
65
57
|
const downloader = new Downloader();
|
66
58
|
const search = new Search();
|
67
59
|
```
|
@@ -76,16 +68,16 @@ import abot, {
|
|
76
68
|
Search,
|
77
69
|
type ApiResponse,
|
78
70
|
type FacebookResult,
|
79
|
-
} from
|
71
|
+
} from 'abot-scraper';
|
80
72
|
|
81
73
|
// TypeScript will provide full type checking and autocomplete
|
82
74
|
const result: ApiResponse<FacebookResult> = await abot.downloader.facebook(
|
83
|
-
|
75
|
+
'https://facebook.com/video/123'
|
84
76
|
);
|
85
77
|
|
86
78
|
// Types are automatically inferred
|
87
79
|
const downloader = new Downloader();
|
88
|
-
const fbResult = await downloader.facebook(
|
80
|
+
const fbResult = await downloader.facebook('https://example.com'); // Return type is known
|
89
81
|
```
|
90
82
|
|
91
83
|
## API Reference
|
@@ -107,29 +99,29 @@ The `Downloader` class provides methods to download content from various platfor
|
|
107
99
|
|
108
100
|
```javascript
|
109
101
|
// CommonJS
|
110
|
-
const { downloader } = require(
|
102
|
+
const { downloader } = require('abot-scraper');
|
111
103
|
|
112
104
|
// ES Modules
|
113
|
-
import { downloader } from
|
105
|
+
import { downloader } from 'abot-scraper';
|
114
106
|
|
115
107
|
// Download YouTube video
|
116
108
|
const result = await downloader.youtubeDownloader(
|
117
|
-
|
109
|
+
'https://youtu.be/j_MlBCb9-m8'
|
118
110
|
);
|
119
111
|
console.log(result);
|
120
112
|
|
121
113
|
// Download TikTok video
|
122
114
|
const tiktokResult = await downloader.tiktokDownloader(
|
123
|
-
|
115
|
+
'https://tiktok.com/@user/video/123'
|
124
116
|
);
|
125
117
|
console.log(tiktokResult);
|
126
118
|
|
127
119
|
// Download Facebook video
|
128
|
-
const fbResult = await downloader.facebook(
|
120
|
+
const fbResult = await downloader.facebook('https://facebook.com/video/123');
|
129
121
|
console.log(fbResult);
|
130
122
|
|
131
123
|
// Get Instagram stories
|
132
|
-
const storiesResult = await downloader.igstory(
|
124
|
+
const storiesResult = await downloader.igstory('username');
|
133
125
|
console.log(storiesResult);
|
134
126
|
```
|
135
127
|
|
@@ -148,21 +140,21 @@ The `Search` class provides methods to search for content across various platfor
|
|
148
140
|
|
149
141
|
```javascript
|
150
142
|
// CommonJS
|
151
|
-
const { search } = require(
|
143
|
+
const { search } = require('abot-scraper');
|
152
144
|
|
153
145
|
// ES Modules
|
154
|
-
import { search } from
|
146
|
+
import { search } from 'abot-scraper';
|
155
147
|
|
156
148
|
// Search YouTube videos
|
157
|
-
const ytResults = await search.ytPlay(
|
149
|
+
const ytResults = await search.ytPlay('music video');
|
158
150
|
console.log(ytResults);
|
159
151
|
|
160
152
|
// Search wallpapers
|
161
|
-
const wallpapers = await search.wallpaper(
|
153
|
+
const wallpapers = await search.wallpaper('abstract art', '1');
|
162
154
|
console.log(wallpapers);
|
163
155
|
|
164
156
|
// Search Wikimedia
|
165
|
-
const wikimediaResults = await search.wikimedia(
|
157
|
+
const wikimediaResults = await search.wikimedia('nature photos');
|
166
158
|
console.log(wikimediaResults);
|
167
159
|
```
|
168
160
|
|
@@ -173,18 +165,18 @@ All methods return promises and should be wrapped in try-catch blocks or use `.c
|
|
173
165
|
```javascript
|
174
166
|
try {
|
175
167
|
const result = await downloader.youtubeDownloader(
|
176
|
-
|
168
|
+
'https://youtu.be/invalid-url'
|
177
169
|
);
|
178
170
|
console.log(result);
|
179
171
|
} catch (error) {
|
180
|
-
console.error(
|
172
|
+
console.error('Download failed:', error.message);
|
181
173
|
}
|
182
174
|
|
183
175
|
// Or using .catch()
|
184
176
|
downloader
|
185
|
-
.facebook(
|
186
|
-
.then(
|
187
|
-
.catch(
|
177
|
+
.facebook('https://facebook.com/video/123')
|
178
|
+
.then(result => console.log(result))
|
179
|
+
.catch(error => console.error('Error:', error));
|
188
180
|
```
|
189
181
|
|
190
182
|
## Requirements
|
package/dist/index.cjs
CHANGED
@@ -688,7 +688,107 @@ var import_form_data = __toESM(require("form-data"), 1);
|
|
688
688
|
global.creator = "@abotscraper \u2013 ahmuq";
|
689
689
|
var Tools = class {
|
690
690
|
constructor() {
|
691
|
-
this.
|
691
|
+
this.removeBackground = (image) => {
|
692
|
+
return new Promise((resolve, reject) => {
|
693
|
+
const headers = {
|
694
|
+
"accept": "*/*",
|
695
|
+
"accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6",
|
696
|
+
"content-type": "application/json",
|
697
|
+
"priority": "u=1, i",
|
698
|
+
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Microsoft Edge";v="138"',
|
699
|
+
"sec-ch-ua-mobile": "?0",
|
700
|
+
"sec-ch-ua-platform": '"Windows"',
|
701
|
+
"sec-fetch-dest": "empty",
|
702
|
+
"sec-fetch-mode": "cors",
|
703
|
+
"sec-fetch-site": "same-origin",
|
704
|
+
"referrer": "https://aibackgroundremover.org/"
|
705
|
+
};
|
706
|
+
const payload = {
|
707
|
+
image
|
708
|
+
};
|
709
|
+
import_axios3.default.post("https://aibackgroundremover.org/api/remove-bg", payload, {
|
710
|
+
headers
|
711
|
+
}).then((CreateJobResponse) => {
|
712
|
+
if (CreateJobResponse.status !== 200) {
|
713
|
+
reject({
|
714
|
+
creator: global.creator,
|
715
|
+
status: false,
|
716
|
+
error: `job creation failed`
|
717
|
+
});
|
718
|
+
return;
|
719
|
+
}
|
720
|
+
const jobId = CreateJobResponse.data.id;
|
721
|
+
const checkJobStatus = () => {
|
722
|
+
import_axios3.default.get(`https://aibackgroundremover.org/api/check-status?id=${jobId}`, {
|
723
|
+
headers
|
724
|
+
}).then((jobResponse) => {
|
725
|
+
if (jobResponse.data.status === "succeeded") {
|
726
|
+
resolve({
|
727
|
+
creator: global.creator,
|
728
|
+
status: true,
|
729
|
+
result: {
|
730
|
+
job_id: jobId,
|
731
|
+
image_url: jobResponse.data.output
|
732
|
+
}
|
733
|
+
});
|
734
|
+
} else if (jobResponse.data.status === "starting") {
|
735
|
+
setTimeout(checkJobStatus, 3e3);
|
736
|
+
} else {
|
737
|
+
reject({
|
738
|
+
creator: global.creator,
|
739
|
+
status: false,
|
740
|
+
error: `job status unknown: ${jobResponse.data.status}`
|
741
|
+
});
|
742
|
+
}
|
743
|
+
}).catch((error) => {
|
744
|
+
reject({
|
745
|
+
creator: global.creator,
|
746
|
+
status: false,
|
747
|
+
error: error.message
|
748
|
+
});
|
749
|
+
});
|
750
|
+
};
|
751
|
+
checkJobStatus();
|
752
|
+
}).catch((error) => {
|
753
|
+
reject({
|
754
|
+
creator: global.creator,
|
755
|
+
status: false,
|
756
|
+
error: error.message
|
757
|
+
});
|
758
|
+
});
|
759
|
+
});
|
760
|
+
};
|
761
|
+
this.reminiV2 = (buffer) => {
|
762
|
+
return new Promise((resolve, reject) => {
|
763
|
+
const form = new import_form_data.default();
|
764
|
+
form.append("image", buffer, "blob");
|
765
|
+
form.append("scale", 2);
|
766
|
+
import_axios3.default.post("https://api2.pixelcut.app/image/upscale/v1", form, {
|
767
|
+
headers: {
|
768
|
+
...form.getHeaders(),
|
769
|
+
Accept: "application/json",
|
770
|
+
Referer: "https://www.pixelcut.ai/",
|
771
|
+
Origin: "https://www.pixelcut.ai",
|
772
|
+
"x-client-version": "web"
|
773
|
+
}
|
774
|
+
}).then((Response) => {
|
775
|
+
if (Response.data.result_url) {
|
776
|
+
resolve({
|
777
|
+
creator: global.creator,
|
778
|
+
status: true,
|
779
|
+
result: Response.data.result_url
|
780
|
+
});
|
781
|
+
}
|
782
|
+
}).catch((error) => {
|
783
|
+
reject({
|
784
|
+
creator: global.creator,
|
785
|
+
status: false,
|
786
|
+
error: error.message
|
787
|
+
});
|
788
|
+
});
|
789
|
+
});
|
790
|
+
};
|
791
|
+
this.reminiV1 = (buffer) => {
|
692
792
|
return new Promise((resolve, reject) => {
|
693
793
|
const form = new import_form_data.default();
|
694
794
|
form.append("type", "Enhancer");
|
@@ -700,7 +800,8 @@ var Tools = class {
|
|
700
800
|
"authorization": "",
|
701
801
|
"product-code": "067003",
|
702
802
|
"product-serial": productSerial,
|
703
|
-
"Referer": "https://remaker.ai/"
|
803
|
+
"Referer": "https://remaker.ai/",
|
804
|
+
"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
805
|
}
|
705
806
|
}).then((createJobResponse) => {
|
706
807
|
if (createJobResponse.data.code !== 1e5) {
|
package/dist/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/scraper/downloader.ts","../src/utils/generator.ts","../src/scraper/search.ts","../src/scraper/tools.ts"],"sourcesContent":["import Downloader from './scraper/downloader.js';\nimport Search from './scraper/search.js';\nimport Tools from './scraper/tools.js';\n\nconst downloader = new Downloader();\nconst search = new Search();\nconst tools = new Tools();\nexport default {\n downloader,\n search,\n tools\n};\n\nexport { Downloader, downloader, Search, search, Tools, tools };\n\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport qs from 'qs';\nimport {\n ApiResponse,\n FacebookResult,\n InstagramMediaItem,\n InstagramStoriesResult,\n SfileDownloadResult,\n TikTokResult,\n YoutubeResult,\n YoutubeResultV2,\n} from '../../types/index.js';\nimport Generator from '../utils/generator.js';\n\ninterface StoryItem {\n source: string;\n [key: string]: unknown;\n}\n\ninterface InstagramApiResponse {\n stories: StoryItem[];\n user_info: {\n username: string;\n [key: string]: unknown;\n };\n}\n\ninterface FileItem {\n __type: string;\n video_url?: string;\n download_url?: string;\n [key: string]: unknown;\n}\n\ninterface InstagramFilesResponse {\n files: FileItem[];\n}\n\ninterface YouTubeFormat {\n quality: string;\n video_url: string;\n [key: string]: unknown;\n}\n\ninterface YouTubeMedia {\n media_type: string;\n preview_url?: string;\n resource_url?: string;\n formats?: YouTubeFormat[];\n [key: string]: unknown;\n}\n\ninterface YouTubeApiResponse {\n text: string;\n medias: YouTubeMedia[];\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\nexport default class Downloader {\n private generator: Generator;\n\n constructor() {\n this.generator = new Generator();\n }\n\n async facebook(url: string): Promise<ApiResponse<FacebookResult>> {\n try {\n const headers = {\n 'User-Agent':\n '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',\n Origin: 'https://www.fdown.world',\n referer: 'https://www.fdown.world/',\n 'x-requested-with': 'XMLHttpRequest',\n Cookie: 'codehap_domain=www.fdown.world',\n };\n\n const data = new URLSearchParams({ codehap_link: url, codehap: 'true' });\n\n const response: AxiosResponse = await axios.post(\n 'https://www.fdown.world/result.php',\n data,\n { headers }\n );\n\n const $ = cheerio.load(response.data);\n const videoUrl = $('video source').attr('src');\n const imageUrl = $('img').attr('src');\n\n if (!videoUrl && !imageUrl) {\n throw new Error('No video or image found in the response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n thumbnail: imageUrl || '',\n videoUrl: videoUrl || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async tiktokDownloader(url: string): Promise<ApiResponse<TikTokResult>> {\n try {\n const headers = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const data = new URLSearchParams({\n id: url,\n locale: 'en',\n tt: 'WmNzZDk_',\n });\n\n const response: AxiosResponse = await axios.post(\n 'https://ssstik.io/abc?url=dl',\n data,\n {\n headers,\n }\n );\n\n const $ = cheerio.load(response.data);\n const title = $('p.maintext').text().trim();\n const audio = $('a.download_link.music').attr('href');\n const video = $('a.download_link.without_watermark').attr('href');\n\n if (!title || !video) {\n throw new Error('Failed to extract video or title from response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n video: video || '',\n audio: audio || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async igstory(username: string): Promise<ApiResponse<InstagramStoriesResult>> {\n const payload = {\n username: username,\n }\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/',\n accept: 'application/json, text/plain, */*',\n 'accept-language': 'en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-origin',\n Referer: 'https://storyviewer.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n try {\n const response: AxiosResponse = await axios.post(\n `https://storyviewer.com/api/data`,\n payload,\n { headers }\n );\n\n const data: InstagramApiResponse = response.data;\n const sources = data.stories.map((story: StoryItem) => story.source);\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n user_info: data.user_info,\n links: sources,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async instagram(url: string): Promise<ApiResponse<InstagramMediaItem[]>> {\n try {\n const config = new URLSearchParams({\n url: url,\n new: '2',\n lang: 'en',\n app: '',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse<InstagramFilesResponse> = await axios.post(\n 'https://snapinsta.app/get-data.php',\n config,\n { headers }\n );\n\n const downloadLinks = response.data.files\n .map((file: FileItem) =>\n file.__type === 'GraphVideo'\n ? { type: 'video' as const, url: file.video_url || '' }\n : file.__type === 'GraphImage'\n ? { type: 'image' as const, url: file.download_url || '' }\n : null\n )\n .filter((link: InstagramMediaItem | null): link is InstagramMediaItem => link !== null);\n\n return {\n creator: global.creator,\n status: 200,\n result: downloadLinks,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloader(url: string): Promise<ApiResponse<YoutubeResult>> {\n try {\n const config = qs.stringify({\n url: url,\n q_auto: 0,\n ajax: 1,\n lang: 'en',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse = await axios.post(\n 'https://yt1s.net/ajax?retry=undefined&platform=youtube',\n config,\n { headers }\n );\n\n const $ = cheerio.load(response.data.result);\n const title = $('.caption b').text().trim();\n const downloadLinks = {\n '480p': $('a[data-fquality=\"480p\"]').attr('href') || '',\n '720p': $('a[data-fquality=\"720p\"]').attr('href') || '',\n '1080p': $('a[data-fquality=\"1080p\"]').attr('href') || '',\n };\n const thumbnailUrl = $('.thumbnail.cover img').attr('src');\n\n const mp3ConvertElement = $('#convert-mp3 a');\n const hrefAttr = mp3ConvertElement.attr('href');\n\n if (!hrefAttr) throw new Error('MP3 conversion link not found.');\n\n const mp3ConvertTokenMatch = hrefAttr.match(\n /mp3_convert_task\\('(\\d+)',\\s*'([^']+)'\\)/\n );\n\n if (!mp3ConvertTokenMatch)\n throw new Error('MP3 conversion token not found.');\n\n const mp3ConvertToken = mp3ConvertTokenMatch[2];\n\n const mp3Response: AxiosResponse = await axios.get(\n `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`\n );\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n thumbnail: thumbnailUrl || '',\n downloadLinks: downloadLinks,\n mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n ytMp3Downloader = (url: string) => {\n return new Promise((resolve, reject) => {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n Referer: \"https://y2hub.com/\",\n \"Referrer-Policy\": \"strict-origin-when-cross-origin\",\n };\n\n const payload = qs.stringify({\n action: \"yt_convert\",\n nonce: \"1495b10e48\",\n youtube_url: url,\n });\n\n axios(`https://youtubemp4free.com/wp-admin/admin-ajax.php`, {\n method: \"POST\",\n headers: headers,\n data: payload,\n })\n .then(({ data }) => {\n if (!data.success) {\n return reject(new Error(\"Failed to fetch video data\"));\n }\n\n const videoInfo = data.data.info;\n const slug = data.data.slug;\n const size = data.data.size;\n return axios(\"https://ryin.info/\", {\n method: \"GET\",\n headers: {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0\",\n },\n }).then((response) => {\n const setCookieHeaders = response.headers[\"set-cookie\"];\n let cookies;\n\n if (setCookieHeaders) {\n cookies = setCookieHeaders\n .map((cookie) => cookie.split(\";\")[0])\n .join(\"; \");\n } else {\n cookies =\n \"PHPSESSID=fl86pmq4dqgh2835b32mdm7380; csrf_cookie_name=739e04fcc21050c61c5325b34f449659; lang=en\";\n }\n\n const pageUrl = \"https://ryin.info/\" + slug;\n\n return axios(pageUrl, {\n method: \"GET\",\n headers: {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0\",\n Cookie: cookies,\n },\n }).then((response) => {\n const html = response.data;\n const $ = cheerio.load(html);\n const downloadHref = $(\"#download-url\").attr(\"download-href\");\n\n if (!downloadHref) {\n return reject(new Error(\"Download link not found on page\"));\n }\n resolve({\n creator: global.creator,\n status: true,\n title: videoInfo.title,\n thumbnail: videoInfo.thumbnail,\n description: videoInfo.description,\n viewCount: videoInfo.view_count,\n size: this.generator.formatFileSize(size),\n downloadUrl: downloadHref,\n });\n });\n });\n })\n .catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n });\n };\n\n\n async youtubeDownloaderV2(url: string): Promise<ApiResponse<YoutubeResultV2>> {\n try {\n const timestamp = this.generator.generateTimeStampYoutubeDL();\n const footer = this.generator.generateFooterYoutubeDL(timestamp, url);\n\n const payload = {\n link: url,\n };\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n 'g-footer': footer,\n 'g-timestamp': timestamp,\n accept: '*/*',\n 'accept-language': 'en',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-site',\n Referer: 'https://snapany.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n\n const response: AxiosResponse<YouTubeApiResponse> = await axios.post(\n 'https://api.snapany.com/v1/extract',\n payload,\n { headers }\n );\n const data = response.data;\n\n const videoMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'video'\n );\n const audioMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'audio'\n );\n\n const downloadLinks: Record<string, string> = {};\n if (videoMedia && videoMedia.formats) {\n videoMedia.formats.forEach((format: YouTubeFormat) => {\n const qualityKey = `${format.quality}p`;\n downloadLinks[qualityKey] = format.video_url;\n });\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: data.text,\n thumbnail: videoMedia?.preview_url || null,\n downloadLinks: downloadLinks,\n video: videoMedia?.resource_url || null,\n audio: audioMedia?.resource_url || null,\n formats: videoMedia?.formats || [],\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async sfileDownloader(url: string): Promise<ApiResponse<SfileDownloadResult>> {\n try {\n const response: AxiosResponse = await axios.get(url, {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n });\n\n const $ = cheerio.load(response.data);\n const filename = $('.intro-container img').attr('alt') || '';\n const mimetype = $('div.list').text().split(' - ')[1]?.split('\\n')[0] || '';\n const downloadHref = $('#download').attr('href');\n const download = downloadHref\n ? downloadHref + '&k=' + Math.floor(Math.random() * (15 - 10 + 1) + 10)\n : '';\n\n return {\n creator: global.creator,\n status: 200,\n result: { filename, mimetype, download },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n","import crypto from 'crypto';\n\nexport default class Generator {\n generateTimeStampYoutubeDL(): string {\n return Date.now().toString();\n }\n\n generateFooterYoutubeDL(timestamp: string, link: string): string {\n const locale = 'en';\n const secretKey = '6HTugjCXxR';\n const input = link + locale + timestamp + secretKey;\n const hash = crypto.createHash('md5').update(input).digest('hex');\n return hash;\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + \" \" + sizes[i];\n }\n\n private static generateVisitorId(): string {\n const components = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',\n '1920x1080',\n new Date().getTimezoneOffset().toString(),\n 'en-US',\n 'Win32',\n Math.random().toString(36).substring(2, 15),\n Date.now().toString(),\n process.pid.toString(),\n Math.floor(Math.random() * 1000000).toString()\n ];\n const fingerprint = crypto.createHash('md5')\n .update(components.join('|'))\n .digest('hex');\n return fingerprint;\n }\n\n static getFingerprint(): string {\n const visitorId = this.generateVisitorId();\n return visitorId;\n }\n}\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport {\n ApiResponse,\n SfileSearchResult,\n WallpaperResult,\n WikimediaResult,\n YtPlayResult,\n YtSearchResult,\n} from '../../types/index.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\ninterface YtPlayConfig {\n k_query: string;\n k_page: string;\n q_auto: number;\n hl?: string;\n}\n\ninterface ConvertConfig {\n vid: string;\n k: string;\n}\n\nexport default class Search {\n async sfileSearch(\n query: string,\n page: number = 1\n ): Promise<ApiResponse<SfileSearchResult[]>> {\n try {\n const response: AxiosResponse = await axios.get(\n `https://sfile.mobi/search.php?q=${query}&page=${page}`,\n {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n }\n );\n const $ = cheerio.load(response.data);\n const results: SfileSearchResult[] = [];\n\n $('div.list').each(function () {\n const title = $(this).find('a').text();\n const sizeText = $(this).text().trim().split('(')[1];\n const link = $(this).find('a').attr('href');\n\n if (link && sizeText) {\n results.push({\n title,\n size: sizeText.replace(')', ''),\n link\n });\n }\n });\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n async ytSearch(query: string): Promise<ApiResponse<YtSearchResult[]>> {\n try {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n }\n const response: AxiosResponse = await axios.get(\n `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`,\n { headers }\n );\n\n const data = response.data;\n const videos = data?.data?.items || [];\n const results: YtSearchResult[] = videos.map((item: {\n title: string;\n thumbnail: string;\n url: string;\n }) => ({\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n ytPlay = (text: string): Promise<ApiResponse<YtPlayResult>> => {\n return new Promise((resolve, reject) => {\n const configd: YtPlayConfig = {\n k_query: text,\n k_page: 'mp3',\n q_auto: 1,\n };\n\n const headerss = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Cookie:\n 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={\"0\":{},\"C702514\":{\"page\":5,\"time\":1625200846733}}',\n };\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(configd)),\n headers: headerss,\n })\n .then(({ data }) => {\n const v = data.vitems;\n const v2 = v[Math.floor(Math.random() * v.length)].v;\n const url = 'https://www.youtube.com/watch?v=' + v2;\n\n const config: YtPlayConfig = {\n k_query: 'https://www.youtube.be/' + url,\n k_page: 'mp3',\n hl: 'en',\n q_auto: 1,\n };\n\n\n axios('https://www.y2mate.com/mates/en68/analyze/ajax', {\n method: 'POST',\n data: new URLSearchParams({\n url: 'https://www.youtube.be/' + url,\n q_auto: '0',\n ajax: '1',\n }),\n headers: headerss,\n }).then(({ data }) => {\n const $ = cheerio.load(data.result);\n const img = $('div.thumbnail.cover > a > img').attr('src');\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(config)),\n headers: headerss,\n }).then(({ data }) => {\n const convertConfig: ConvertConfig = {\n vid: data.vid,\n k: data.links.mp3.mp3128.k,\n };\n\n const size = data.links.mp3.mp3128.size;\n\n axios('https://www.y2mate.com/mates/convertV2/index', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(convertConfig)),\n headers: headerss,\n })\n .then((response) => {\n resolve({\n creator: global.creator,\n status: 200,\n result: {\n status: response.data.status,\n title: response.data.title,\n ftype: response.data.ftype,\n thumb: img || '',\n size_mp3: size,\n link: response.data.dlink,\n },\n });\n })\n .catch(reject);\n });\n });\n })\n .catch(reject);\n });\n };\n\n wallpaper = (\n title: string,\n page: string = '1'\n ): Promise<ApiResponse<WallpaperResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`\n )\n .then(({ data }) => {\n const $ = cheerio.load(data);\n const hasil: WallpaperResult[] = [];\n\n $('div.grid-item').each(function (_, b) {\n const titleAttr = $(b).find('p[title]').attr('title');\n const typeText = $(b).find('div.info > a:nth-child(2)').text();\n const hrefAttr = $(b).find('a').attr('href');\n const imgSrc = $(b).find('picture > img').attr('src');\n const srcset1 = $(b)\n .find('picture > source:nth-child(1)')\n .attr('srcset');\n const srcset2 = $(b)\n .find('picture > source:nth-child(2)')\n .attr('srcset');\n\n if (titleAttr && hrefAttr) {\n hasil.push({\n title: titleAttr.trim(),\n type: typeText?.trim() || '',\n source: 'https://www.besthdwallpaper.com' + hrefAttr,\n image: [imgSrc || '', srcset1 || '', srcset2 || ''],\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch((error) => {\n reject(error);\n });\n });\n };\n\n wikimedia = (title: string): Promise<ApiResponse<WikimediaResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`\n )\n .then((res) => {\n const $ = cheerio.load(res.data);\n const hasil: WikimediaResult[] = [];\n\n $('.sdms-search-results__list-wrapper > div > a').each(function (\n _,\n b\n ) {\n const altText = $(b).find('img').attr('alt');\n const href = $(b).attr('href');\n const dataSrc = $(b).find('img').attr('data-src');\n const src = $(b).find('img').attr('src');\n\n if (altText && href) {\n hasil.push({\n title: altText,\n source: href,\n image: dataSrc || src || '',\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch(reject);\n });\n };\n}\n","import axios, { AxiosResponse } from 'axios';\nimport FormData from 'form-data';\nimport Generator from '../utils/generator.js';\nglobal.creator = '@abotscraper – ahmuq'\n\n\nexport default class Tools {\n reminiUpscale = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('type', 'Enhancer');\n form.append('original_image_file', buffer, 'blob');\n const productSerial = Generator.getFingerprint();\n axios.post('https://api.remaker.ai/api/pai/v4/ai-enhance/create-job-new', form, {\n headers: {\n ...form.getHeaders(),\n 'authorization': '',\n 'product-code': '067003',\n 'product-serial': productSerial,\n 'Referer': 'https://remaker.ai/',\n }\n }).then((createJobResponse: AxiosResponse) => {\n if (createJobResponse.data.code !== 100000) {\n reject({\n creator: global.creator,\n status: false,\n error: `Job creation failed: ${createJobResponse.data.message.en}`,\n });\n return;\n }\n const jobId = createJobResponse.data.result.job_id;\n const checkJobStatus = () => {\n axios.get(`https://api.remaker.ai/api/pai/v4/ai-enhance/get-job/${jobId}`, {\n headers: {\n 'authorization': '',\n 'product-code': '067003',\n 'product-serial': productSerial,\n 'Referer': 'https://remaker.ai/',\n }\n }).then((jobResponse: AxiosResponse) => {\n if (jobResponse.data.code === 100000) {\n resolve({\n creator: global.creator,\n status: true,\n result: {\n job_id: jobId,\n image_url: jobResponse.data.result.output[0]\n }\n });\n } else if (jobResponse.data.code === 300013) {\n setTimeout(checkJobStatus, 3000);\n } else {\n reject({\n creator: global.creator,\n status: false,\n error: `Job failed: ${jobResponse.data.message.en}`,\n });\n }\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n };\n\n checkJobStatus();\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n });\n }\n\n uploadImage = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('fileToUpload', buffer, 'image.jpg');\n form.append('reqtype', 'fileupload');\n form.append('userhash', '');\n\n axios.post('https://catbox.moe/user/api.php', form, {\n headers: {\n ...form.getHeaders(),\n }\n })\n .then((response: AxiosResponse) => {\n resolve({\n creator: global.creator,\n status: true,\n result: response.data\n })\n })\n .catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n })\n }\n}"],"mappings":"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","names":["crypto","qs","axios","response","import_axios","cheerio","axios","data","import_axios","FormData","axios"]}
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/scraper/downloader.ts","../src/utils/generator.ts","../src/scraper/search.ts","../src/scraper/tools.ts"],"sourcesContent":["import Downloader from './scraper/downloader.js';\nimport Search from './scraper/search.js';\nimport Tools from './scraper/tools.js';\n\nconst downloader = new Downloader();\nconst search = new Search();\nconst tools = new Tools();\nexport default {\n downloader,\n search,\n tools\n};\n\nexport { Downloader, downloader, Search, search, Tools, tools };\n\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport qs from 'qs';\nimport {\n ApiResponse,\n FacebookResult,\n InstagramMediaItem,\n InstagramStoriesResult,\n SfileDownloadResult,\n TikTokResult,\n YoutubeResult,\n YoutubeResultV2,\n} from '../../types/index.js';\nimport Generator from '../utils/generator.js';\n\ninterface StoryItem {\n source: string;\n [key: string]: unknown;\n}\n\ninterface InstagramApiResponse {\n stories: StoryItem[];\n user_info: {\n username: string;\n [key: string]: unknown;\n };\n}\n\ninterface FileItem {\n __type: string;\n video_url?: string;\n download_url?: string;\n [key: string]: unknown;\n}\n\ninterface InstagramFilesResponse {\n files: FileItem[];\n}\n\ninterface YouTubeFormat {\n quality: string;\n video_url: string;\n [key: string]: unknown;\n}\n\ninterface YouTubeMedia {\n media_type: string;\n preview_url?: string;\n resource_url?: string;\n formats?: YouTubeFormat[];\n [key: string]: unknown;\n}\n\ninterface YouTubeApiResponse {\n text: string;\n medias: YouTubeMedia[];\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\nexport default class Downloader {\n private generator: Generator;\n\n constructor() {\n this.generator = new Generator();\n }\n\n async facebook(url: string): Promise<ApiResponse<FacebookResult>> {\n try {\n const headers = {\n 'User-Agent':\n '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',\n Origin: 'https://www.fdown.world',\n referer: 'https://www.fdown.world/',\n 'x-requested-with': 'XMLHttpRequest',\n Cookie: 'codehap_domain=www.fdown.world',\n };\n\n const data = new URLSearchParams({ codehap_link: url, codehap: 'true' });\n\n const response: AxiosResponse = await axios.post(\n 'https://www.fdown.world/result.php',\n data,\n { headers }\n );\n\n const $ = cheerio.load(response.data);\n const videoUrl = $('video source').attr('src');\n const imageUrl = $('img').attr('src');\n\n if (!videoUrl && !imageUrl) {\n throw new Error('No video or image found in the response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n thumbnail: imageUrl || '',\n videoUrl: videoUrl || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async tiktokDownloader(url: string): Promise<ApiResponse<TikTokResult>> {\n try {\n const headers = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const data = new URLSearchParams({\n id: url,\n locale: 'en',\n tt: 'WmNzZDk_',\n });\n\n const response: AxiosResponse = await axios.post(\n 'https://ssstik.io/abc?url=dl',\n data,\n {\n headers,\n }\n );\n\n const $ = cheerio.load(response.data);\n const title = $('p.maintext').text().trim();\n const audio = $('a.download_link.music').attr('href');\n const video = $('a.download_link.without_watermark').attr('href');\n\n if (!title || !video) {\n throw new Error('Failed to extract video or title from response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n video: video || '',\n audio: audio || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async igstory(username: string): Promise<ApiResponse<InstagramStoriesResult>> {\n const payload = {\n username: username,\n }\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/',\n accept: 'application/json, text/plain, */*',\n 'accept-language': 'en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-origin',\n Referer: 'https://storyviewer.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n try {\n const response: AxiosResponse = await axios.post(\n `https://storyviewer.com/api/data`,\n payload,\n { headers }\n );\n\n const data: InstagramApiResponse = response.data;\n const sources = data.stories.map((story: StoryItem) => story.source);\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n user_info: data.user_info,\n links: sources,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async instagram(url: string): Promise<ApiResponse<InstagramMediaItem[]>> {\n try {\n const config = new URLSearchParams({\n url: url,\n new: '2',\n lang: 'en',\n app: '',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse<InstagramFilesResponse> = await axios.post(\n 'https://snapinsta.app/get-data.php',\n config,\n { headers }\n );\n\n const downloadLinks = response.data.files\n .map((file: FileItem) =>\n file.__type === 'GraphVideo'\n ? { type: 'video' as const, url: file.video_url || '' }\n : file.__type === 'GraphImage'\n ? { type: 'image' as const, url: file.download_url || '' }\n : null\n )\n .filter((link: InstagramMediaItem | null): link is InstagramMediaItem => link !== null);\n\n return {\n creator: global.creator,\n status: 200,\n result: downloadLinks,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloader(url: string): Promise<ApiResponse<YoutubeResult>> {\n try {\n const config = qs.stringify({\n url: url,\n q_auto: 0,\n ajax: 1,\n lang: 'en',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse = await axios.post(\n 'https://yt1s.net/ajax?retry=undefined&platform=youtube',\n config,\n { headers }\n );\n\n const $ = cheerio.load(response.data.result);\n const title = $('.caption b').text().trim();\n const downloadLinks = {\n '480p': $('a[data-fquality=\"480p\"]').attr('href') || '',\n '720p': $('a[data-fquality=\"720p\"]').attr('href') || '',\n '1080p': $('a[data-fquality=\"1080p\"]').attr('href') || '',\n };\n const thumbnailUrl = $('.thumbnail.cover img').attr('src');\n\n const mp3ConvertElement = $('#convert-mp3 a');\n const hrefAttr = mp3ConvertElement.attr('href');\n\n if (!hrefAttr) throw new Error('MP3 conversion link not found.');\n\n const mp3ConvertTokenMatch = hrefAttr.match(\n /mp3_convert_task\\('(\\d+)',\\s*'([^']+)'\\)/\n );\n\n if (!mp3ConvertTokenMatch)\n throw new Error('MP3 conversion token not found.');\n\n const mp3ConvertToken = mp3ConvertTokenMatch[2];\n\n const mp3Response: AxiosResponse = await axios.get(\n `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`\n );\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n thumbnail: thumbnailUrl || '',\n downloadLinks: downloadLinks,\n mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n ytMp3Downloader = (url: string) => {\n return new Promise((resolve, reject) => {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n Referer: \"https://y2hub.com/\",\n \"Referrer-Policy\": \"strict-origin-when-cross-origin\",\n };\n\n const payload = qs.stringify({\n action: \"yt_convert\",\n nonce: \"1495b10e48\",\n youtube_url: url,\n });\n\n axios(`https://youtubemp4free.com/wp-admin/admin-ajax.php`, {\n method: \"POST\",\n headers: headers,\n data: payload,\n })\n .then(({ data }) => {\n if (!data.success) {\n return reject(new Error(\"Failed to fetch video data\"));\n }\n\n const videoInfo = data.data.info;\n const slug = data.data.slug;\n const size = data.data.size;\n return axios(\"https://ryin.info/\", {\n method: \"GET\",\n headers: {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0\",\n },\n }).then((response) => {\n const setCookieHeaders = response.headers[\"set-cookie\"];\n let cookies;\n\n if (setCookieHeaders) {\n cookies = setCookieHeaders\n .map((cookie) => cookie.split(\";\")[0])\n .join(\"; \");\n } else {\n cookies =\n \"PHPSESSID=fl86pmq4dqgh2835b32mdm7380; csrf_cookie_name=739e04fcc21050c61c5325b34f449659; lang=en\";\n }\n\n const pageUrl = \"https://ryin.info/\" + slug;\n\n return axios(pageUrl, {\n method: \"GET\",\n headers: {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0\",\n Cookie: cookies,\n },\n }).then((response) => {\n const html = response.data;\n const $ = cheerio.load(html);\n const downloadHref = $(\"#download-url\").attr(\"download-href\");\n\n if (!downloadHref) {\n return reject(new Error(\"Download link not found on page\"));\n }\n resolve({\n creator: global.creator,\n status: true,\n title: videoInfo.title,\n thumbnail: videoInfo.thumbnail,\n description: videoInfo.description,\n viewCount: videoInfo.view_count,\n size: this.generator.formatFileSize(size),\n downloadUrl: downloadHref,\n });\n });\n });\n })\n .catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n });\n };\n\n\n async youtubeDownloaderV2(url: string): Promise<ApiResponse<YoutubeResultV2>> {\n try {\n const timestamp = this.generator.generateTimeStampYoutubeDL();\n const footer = this.generator.generateFooterYoutubeDL(timestamp, url);\n\n const payload = {\n link: url,\n };\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n 'g-footer': footer,\n 'g-timestamp': timestamp,\n accept: '*/*',\n 'accept-language': 'en',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-site',\n Referer: 'https://snapany.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n\n const response: AxiosResponse<YouTubeApiResponse> = await axios.post(\n 'https://api.snapany.com/v1/extract',\n payload,\n { headers }\n );\n const data = response.data;\n\n const videoMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'video'\n );\n const audioMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'audio'\n );\n\n const downloadLinks: Record<string, string> = {};\n if (videoMedia && videoMedia.formats) {\n videoMedia.formats.forEach((format: YouTubeFormat) => {\n const qualityKey = `${format.quality}p`;\n downloadLinks[qualityKey] = format.video_url;\n });\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: data.text,\n thumbnail: videoMedia?.preview_url || null,\n downloadLinks: downloadLinks,\n video: videoMedia?.resource_url || null,\n audio: audioMedia?.resource_url || null,\n formats: videoMedia?.formats || [],\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async sfileDownloader(url: string): Promise<ApiResponse<SfileDownloadResult>> {\n try {\n const response: AxiosResponse = await axios.get(url, {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n });\n\n const $ = cheerio.load(response.data);\n const filename = $('.intro-container img').attr('alt') || '';\n const mimetype = $('div.list').text().split(' - ')[1]?.split('\\n')[0] || '';\n const downloadHref = $('#download').attr('href');\n const download = downloadHref\n ? downloadHref + '&k=' + Math.floor(Math.random() * (15 - 10 + 1) + 10)\n : '';\n\n return {\n creator: global.creator,\n status: 200,\n result: { filename, mimetype, download },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n","import crypto from 'crypto';\n\nexport default class Generator {\n generateTimeStampYoutubeDL(): string {\n return Date.now().toString();\n }\n\n generateFooterYoutubeDL(timestamp: string, link: string): string {\n const locale = 'en';\n const secretKey = '6HTugjCXxR';\n const input = link + locale + timestamp + secretKey;\n const hash = crypto.createHash('md5').update(input).digest('hex');\n return hash;\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + \" \" + sizes[i];\n }\n\n private static generateVisitorId(): string {\n const components = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',\n '1920x1080',\n new Date().getTimezoneOffset().toString(),\n 'en-US',\n 'Win32',\n Math.random().toString(36).substring(2, 15),\n Date.now().toString(),\n process.pid.toString(),\n Math.floor(Math.random() * 1000000).toString()\n ];\n const fingerprint = crypto.createHash('md5')\n .update(components.join('|'))\n .digest('hex');\n return fingerprint;\n }\n\n static getFingerprint(): string {\n const visitorId = this.generateVisitorId();\n return visitorId;\n }\n}\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport {\n ApiResponse,\n SfileSearchResult,\n WallpaperResult,\n WikimediaResult,\n YtPlayResult,\n YtSearchResult,\n} from '../../types/index.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\ninterface YtPlayConfig {\n k_query: string;\n k_page: string;\n q_auto: number;\n hl?: string;\n}\n\ninterface ConvertConfig {\n vid: string;\n k: string;\n}\n\nexport default class Search {\n async sfileSearch(\n query: string,\n page: number = 1\n ): Promise<ApiResponse<SfileSearchResult[]>> {\n try {\n const response: AxiosResponse = await axios.get(\n `https://sfile.mobi/search.php?q=${query}&page=${page}`,\n {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n }\n );\n const $ = cheerio.load(response.data);\n const results: SfileSearchResult[] = [];\n\n $('div.list').each(function () {\n const title = $(this).find('a').text();\n const sizeText = $(this).text().trim().split('(')[1];\n const link = $(this).find('a').attr('href');\n\n if (link && sizeText) {\n results.push({\n title,\n size: sizeText.replace(')', ''),\n link\n });\n }\n });\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n async ytSearch(query: string): Promise<ApiResponse<YtSearchResult[]>> {\n try {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n }\n const response: AxiosResponse = await axios.get(\n `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`,\n { headers }\n );\n\n const data = response.data;\n const videos = data?.data?.items || [];\n const results: YtSearchResult[] = videos.map((item: {\n title: string;\n thumbnail: string;\n url: string;\n }) => ({\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n ytPlay = (text: string): Promise<ApiResponse<YtPlayResult>> => {\n return new Promise((resolve, reject) => {\n const configd: YtPlayConfig = {\n k_query: text,\n k_page: 'mp3',\n q_auto: 1,\n };\n\n const headerss = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Cookie:\n 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={\"0\":{},\"C702514\":{\"page\":5,\"time\":1625200846733}}',\n };\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(configd)),\n headers: headerss,\n })\n .then(({ data }) => {\n const v = data.vitems;\n const v2 = v[Math.floor(Math.random() * v.length)].v;\n const url = 'https://www.youtube.com/watch?v=' + v2;\n\n const config: YtPlayConfig = {\n k_query: 'https://www.youtube.be/' + url,\n k_page: 'mp3',\n hl: 'en',\n q_auto: 1,\n };\n\n\n axios('https://www.y2mate.com/mates/en68/analyze/ajax', {\n method: 'POST',\n data: new URLSearchParams({\n url: 'https://www.youtube.be/' + url,\n q_auto: '0',\n ajax: '1',\n }),\n headers: headerss,\n }).then(({ data }) => {\n const $ = cheerio.load(data.result);\n const img = $('div.thumbnail.cover > a > img').attr('src');\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(config)),\n headers: headerss,\n }).then(({ data }) => {\n const convertConfig: ConvertConfig = {\n vid: data.vid,\n k: data.links.mp3.mp3128.k,\n };\n\n const size = data.links.mp3.mp3128.size;\n\n axios('https://www.y2mate.com/mates/convertV2/index', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(convertConfig)),\n headers: headerss,\n })\n .then((response) => {\n resolve({\n creator: global.creator,\n status: 200,\n result: {\n status: response.data.status,\n title: response.data.title,\n ftype: response.data.ftype,\n thumb: img || '',\n size_mp3: size,\n link: response.data.dlink,\n },\n });\n })\n .catch(reject);\n });\n });\n })\n .catch(reject);\n });\n };\n\n wallpaper = (\n title: string,\n page: string = '1'\n ): Promise<ApiResponse<WallpaperResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`\n )\n .then(({ data }) => {\n const $ = cheerio.load(data);\n const hasil: WallpaperResult[] = [];\n\n $('div.grid-item').each(function (_, b) {\n const titleAttr = $(b).find('p[title]').attr('title');\n const typeText = $(b).find('div.info > a:nth-child(2)').text();\n const hrefAttr = $(b).find('a').attr('href');\n const imgSrc = $(b).find('picture > img').attr('src');\n const srcset1 = $(b)\n .find('picture > source:nth-child(1)')\n .attr('srcset');\n const srcset2 = $(b)\n .find('picture > source:nth-child(2)')\n .attr('srcset');\n\n if (titleAttr && hrefAttr) {\n hasil.push({\n title: titleAttr.trim(),\n type: typeText?.trim() || '',\n source: 'https://www.besthdwallpaper.com' + hrefAttr,\n image: [imgSrc || '', srcset1 || '', srcset2 || ''],\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch((error) => {\n reject(error);\n });\n });\n };\n\n wikimedia = (title: string): Promise<ApiResponse<WikimediaResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`\n )\n .then((res) => {\n const $ = cheerio.load(res.data);\n const hasil: WikimediaResult[] = [];\n\n $('.sdms-search-results__list-wrapper > div > a').each(function (\n _,\n b\n ) {\n const altText = $(b).find('img').attr('alt');\n const href = $(b).attr('href');\n const dataSrc = $(b).find('img').attr('data-src');\n const src = $(b).find('img').attr('src');\n\n if (altText && href) {\n hasil.push({\n title: altText,\n source: href,\n image: dataSrc || src || '',\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch(reject);\n });\n };\n}\n","import axios, { AxiosResponse } from 'axios';\nimport FormData from 'form-data';\nimport Generator from '../utils/generator.js';\nglobal.creator = '@abotscraper – ahmuq'\n\n\nexport default class Tools {\n\n removeBackground = (image: string) => {\n return new Promise((resolve, reject) => {\n const headers = {\n \"accept\": \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n \"content-type\": \"application/json\",\n \"priority\": \"u=1, i\",\n \"sec-ch-ua\": \"\\\"Not)A;Brand\\\";v=\\\"8\\\", \\\"Chromium\\\";v=\\\"138\\\", \\\"Microsoft Edge\\\";v=\\\"138\\\"\",\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": \"\\\"Windows\\\"\",\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"same-origin\",\n \"referrer\": \"https://aibackgroundremover.org/\",\n }\n\n const payload = {\n image\n }\n axios.post(\"https://aibackgroundremover.org/api/remove-bg\", payload, {\n headers: headers\n }).then((CreateJobResponse: AxiosResponse) => {\n if (CreateJobResponse.status !== 200) {\n reject({\n creator: global.creator,\n status: false,\n error: `job creation failed`,\n });\n return;\n }\n const jobId = CreateJobResponse.data.id;\n const checkJobStatus = () => {\n axios.get(`https://aibackgroundremover.org/api/check-status?id=${jobId}`, {\n headers: headers\n }).then((jobResponse: AxiosResponse) => {\n if (jobResponse.data.status === \"succeeded\") {\n resolve({\n creator: global.creator,\n status: true,\n result: {\n job_id: jobId,\n image_url: jobResponse.data.output\n }\n });\n } else if (jobResponse.data.status === \"starting\") {\n setTimeout(checkJobStatus, 3000);\n } else {\n reject({\n creator: global.creator,\n status: false,\n error: `job status unknown: ${jobResponse.data.status}`,\n });\n }\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n };\n checkJobStatus();\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n })\n }\n\n reminiV2 = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('image', buffer, 'blob');\n form.append('scale', 2);\n axios.post('https://api2.pixelcut.app/image/upscale/v1', form, {\n headers: {\n ...form.getHeaders(),\n Accept: 'application/json',\n Referer: 'https://www.pixelcut.ai/',\n Origin: 'https://www.pixelcut.ai',\n 'x-client-version': 'web'\n }\n }).then((Response: AxiosResponse) => {\n if (Response.data.result_url) {\n resolve({\n creator: global.creator,\n status: true,\n result: Response.data.result_url\n })\n }\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n })\n })\n }\n\n reminiV1 = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('type', 'Enhancer');\n form.append('original_image_file', buffer, 'blob');\n const productSerial = Generator.getFingerprint();\n axios.post('https://api.remaker.ai/api/pai/v4/ai-enhance/create-job-new', form, {\n headers: {\n ...form.getHeaders(),\n 'authorization': '',\n 'product-code': '067003',\n 'product-serial': productSerial,\n 'Referer': 'https://remaker.ai/',\n \"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'\n }\n }).then((createJobResponse: AxiosResponse) => {\n if (createJobResponse.data.code !== 100000) {\n reject({\n creator: global.creator,\n status: false,\n error: `Job creation failed: ${createJobResponse.data.message.en}`,\n });\n return;\n }\n const jobId = createJobResponse.data.result.job_id;\n const checkJobStatus = () => {\n axios.get(`https://api.remaker.ai/api/pai/v4/ai-enhance/get-job/${jobId}`, {\n headers: {\n 'authorization': '',\n 'product-code': '067003',\n 'product-serial': productSerial,\n 'Referer': 'https://remaker.ai/',\n }\n }).then((jobResponse: AxiosResponse) => {\n if (jobResponse.data.code === 100000) {\n resolve({\n creator: global.creator,\n status: true,\n result: {\n job_id: jobId,\n image_url: jobResponse.data.result.output[0]\n }\n });\n } else if (jobResponse.data.code === 300013) {\n setTimeout(checkJobStatus, 3000);\n } else {\n reject({\n creator: global.creator,\n status: false,\n error: `Job failed: ${jobResponse.data.message.en}`,\n });\n }\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n };\n\n checkJobStatus();\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n });\n }\n\n uploadImage = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('fileToUpload', buffer, 'image.jpg');\n form.append('reqtype', 'fileupload');\n form.append('userhash', '');\n\n axios.post('https://catbox.moe/user/api.php', form, {\n headers: {\n ...form.getHeaders(),\n }\n })\n .then((response: AxiosResponse) => {\n resolve({\n creator: global.creator,\n status: true,\n result: response.data\n })\n })\n .catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n })\n }\n}"],"mappings":"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","names":["crypto","qs","axios","response","import_axios","cheerio","axios","data","import_axios","axios","FormData"]}
|
package/dist/index.d.cts
CHANGED
@@ -115,7 +115,9 @@ declare class Search {
|
|
115
115
|
}
|
116
116
|
|
117
117
|
declare class Tools {
|
118
|
-
|
118
|
+
removeBackground: (image: string) => Promise<unknown>;
|
119
|
+
reminiV2: (buffer: Buffer) => Promise<unknown>;
|
120
|
+
reminiV1: (buffer: Buffer) => Promise<unknown>;
|
119
121
|
uploadImage: (buffer: Buffer) => Promise<unknown>;
|
120
122
|
}
|
121
123
|
|
package/dist/index.d.ts
CHANGED
@@ -115,7 +115,9 @@ declare class Search {
|
|
115
115
|
}
|
116
116
|
|
117
117
|
declare class Tools {
|
118
|
-
|
118
|
+
removeBackground: (image: string) => Promise<unknown>;
|
119
|
+
reminiV2: (buffer: Buffer) => Promise<unknown>;
|
120
|
+
reminiV1: (buffer: Buffer) => Promise<unknown>;
|
119
121
|
uploadImage: (buffer: Buffer) => Promise<unknown>;
|
120
122
|
}
|
121
123
|
|
package/dist/index.js
CHANGED
@@ -646,7 +646,107 @@ import FormData from "form-data";
|
|
646
646
|
global.creator = "@abotscraper \u2013 ahmuq";
|
647
647
|
var Tools = class {
|
648
648
|
constructor() {
|
649
|
-
this.
|
649
|
+
this.removeBackground = (image) => {
|
650
|
+
return new Promise((resolve, reject) => {
|
651
|
+
const headers = {
|
652
|
+
"accept": "*/*",
|
653
|
+
"accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6",
|
654
|
+
"content-type": "application/json",
|
655
|
+
"priority": "u=1, i",
|
656
|
+
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Microsoft Edge";v="138"',
|
657
|
+
"sec-ch-ua-mobile": "?0",
|
658
|
+
"sec-ch-ua-platform": '"Windows"',
|
659
|
+
"sec-fetch-dest": "empty",
|
660
|
+
"sec-fetch-mode": "cors",
|
661
|
+
"sec-fetch-site": "same-origin",
|
662
|
+
"referrer": "https://aibackgroundremover.org/"
|
663
|
+
};
|
664
|
+
const payload = {
|
665
|
+
image
|
666
|
+
};
|
667
|
+
axios3.post("https://aibackgroundremover.org/api/remove-bg", payload, {
|
668
|
+
headers
|
669
|
+
}).then((CreateJobResponse) => {
|
670
|
+
if (CreateJobResponse.status !== 200) {
|
671
|
+
reject({
|
672
|
+
creator: global.creator,
|
673
|
+
status: false,
|
674
|
+
error: `job creation failed`
|
675
|
+
});
|
676
|
+
return;
|
677
|
+
}
|
678
|
+
const jobId = CreateJobResponse.data.id;
|
679
|
+
const checkJobStatus = () => {
|
680
|
+
axios3.get(`https://aibackgroundremover.org/api/check-status?id=${jobId}`, {
|
681
|
+
headers
|
682
|
+
}).then((jobResponse) => {
|
683
|
+
if (jobResponse.data.status === "succeeded") {
|
684
|
+
resolve({
|
685
|
+
creator: global.creator,
|
686
|
+
status: true,
|
687
|
+
result: {
|
688
|
+
job_id: jobId,
|
689
|
+
image_url: jobResponse.data.output
|
690
|
+
}
|
691
|
+
});
|
692
|
+
} else if (jobResponse.data.status === "starting") {
|
693
|
+
setTimeout(checkJobStatus, 3e3);
|
694
|
+
} else {
|
695
|
+
reject({
|
696
|
+
creator: global.creator,
|
697
|
+
status: false,
|
698
|
+
error: `job status unknown: ${jobResponse.data.status}`
|
699
|
+
});
|
700
|
+
}
|
701
|
+
}).catch((error) => {
|
702
|
+
reject({
|
703
|
+
creator: global.creator,
|
704
|
+
status: false,
|
705
|
+
error: error.message
|
706
|
+
});
|
707
|
+
});
|
708
|
+
};
|
709
|
+
checkJobStatus();
|
710
|
+
}).catch((error) => {
|
711
|
+
reject({
|
712
|
+
creator: global.creator,
|
713
|
+
status: false,
|
714
|
+
error: error.message
|
715
|
+
});
|
716
|
+
});
|
717
|
+
});
|
718
|
+
};
|
719
|
+
this.reminiV2 = (buffer) => {
|
720
|
+
return new Promise((resolve, reject) => {
|
721
|
+
const form = new FormData();
|
722
|
+
form.append("image", buffer, "blob");
|
723
|
+
form.append("scale", 2);
|
724
|
+
axios3.post("https://api2.pixelcut.app/image/upscale/v1", form, {
|
725
|
+
headers: {
|
726
|
+
...form.getHeaders(),
|
727
|
+
Accept: "application/json",
|
728
|
+
Referer: "https://www.pixelcut.ai/",
|
729
|
+
Origin: "https://www.pixelcut.ai",
|
730
|
+
"x-client-version": "web"
|
731
|
+
}
|
732
|
+
}).then((Response) => {
|
733
|
+
if (Response.data.result_url) {
|
734
|
+
resolve({
|
735
|
+
creator: global.creator,
|
736
|
+
status: true,
|
737
|
+
result: Response.data.result_url
|
738
|
+
});
|
739
|
+
}
|
740
|
+
}).catch((error) => {
|
741
|
+
reject({
|
742
|
+
creator: global.creator,
|
743
|
+
status: false,
|
744
|
+
error: error.message
|
745
|
+
});
|
746
|
+
});
|
747
|
+
});
|
748
|
+
};
|
749
|
+
this.reminiV1 = (buffer) => {
|
650
750
|
return new Promise((resolve, reject) => {
|
651
751
|
const form = new FormData();
|
652
752
|
form.append("type", "Enhancer");
|
@@ -658,7 +758,8 @@ var Tools = class {
|
|
658
758
|
"authorization": "",
|
659
759
|
"product-code": "067003",
|
660
760
|
"product-serial": productSerial,
|
661
|
-
"Referer": "https://remaker.ai/"
|
761
|
+
"Referer": "https://remaker.ai/",
|
762
|
+
"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"
|
662
763
|
}
|
663
764
|
}).then((createJobResponse) => {
|
664
765
|
if (createJobResponse.data.code !== 1e5) {
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/scraper/downloader.ts","../src/utils/generator.ts","../src/scraper/search.ts","../src/scraper/tools.ts","../src/index.ts"],"sourcesContent":["import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport qs from 'qs';\nimport {\n ApiResponse,\n FacebookResult,\n InstagramMediaItem,\n InstagramStoriesResult,\n SfileDownloadResult,\n TikTokResult,\n YoutubeResult,\n YoutubeResultV2,\n} from '../../types/index.js';\nimport Generator from '../utils/generator.js';\n\ninterface StoryItem {\n source: string;\n [key: string]: unknown;\n}\n\ninterface InstagramApiResponse {\n stories: StoryItem[];\n user_info: {\n username: string;\n [key: string]: unknown;\n };\n}\n\ninterface FileItem {\n __type: string;\n video_url?: string;\n download_url?: string;\n [key: string]: unknown;\n}\n\ninterface InstagramFilesResponse {\n files: FileItem[];\n}\n\ninterface YouTubeFormat {\n quality: string;\n video_url: string;\n [key: string]: unknown;\n}\n\ninterface YouTubeMedia {\n media_type: string;\n preview_url?: string;\n resource_url?: string;\n formats?: YouTubeFormat[];\n [key: string]: unknown;\n}\n\ninterface YouTubeApiResponse {\n text: string;\n medias: YouTubeMedia[];\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\nexport default class Downloader {\n private generator: Generator;\n\n constructor() {\n this.generator = new Generator();\n }\n\n async facebook(url: string): Promise<ApiResponse<FacebookResult>> {\n try {\n const headers = {\n 'User-Agent':\n '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',\n Origin: 'https://www.fdown.world',\n referer: 'https://www.fdown.world/',\n 'x-requested-with': 'XMLHttpRequest',\n Cookie: 'codehap_domain=www.fdown.world',\n };\n\n const data = new URLSearchParams({ codehap_link: url, codehap: 'true' });\n\n const response: AxiosResponse = await axios.post(\n 'https://www.fdown.world/result.php',\n data,\n { headers }\n );\n\n const $ = cheerio.load(response.data);\n const videoUrl = $('video source').attr('src');\n const imageUrl = $('img').attr('src');\n\n if (!videoUrl && !imageUrl) {\n throw new Error('No video or image found in the response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n thumbnail: imageUrl || '',\n videoUrl: videoUrl || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async tiktokDownloader(url: string): Promise<ApiResponse<TikTokResult>> {\n try {\n const headers = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const data = new URLSearchParams({\n id: url,\n locale: 'en',\n tt: 'WmNzZDk_',\n });\n\n const response: AxiosResponse = await axios.post(\n 'https://ssstik.io/abc?url=dl',\n data,\n {\n headers,\n }\n );\n\n const $ = cheerio.load(response.data);\n const title = $('p.maintext').text().trim();\n const audio = $('a.download_link.music').attr('href');\n const video = $('a.download_link.without_watermark').attr('href');\n\n if (!title || !video) {\n throw new Error('Failed to extract video or title from response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n video: video || '',\n audio: audio || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async igstory(username: string): Promise<ApiResponse<InstagramStoriesResult>> {\n const payload = {\n username: username,\n }\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/',\n accept: 'application/json, text/plain, */*',\n 'accept-language': 'en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-origin',\n Referer: 'https://storyviewer.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n try {\n const response: AxiosResponse = await axios.post(\n `https://storyviewer.com/api/data`,\n payload,\n { headers }\n );\n\n const data: InstagramApiResponse = response.data;\n const sources = data.stories.map((story: StoryItem) => story.source);\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n user_info: data.user_info,\n links: sources,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async instagram(url: string): Promise<ApiResponse<InstagramMediaItem[]>> {\n try {\n const config = new URLSearchParams({\n url: url,\n new: '2',\n lang: 'en',\n app: '',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse<InstagramFilesResponse> = await axios.post(\n 'https://snapinsta.app/get-data.php',\n config,\n { headers }\n );\n\n const downloadLinks = response.data.files\n .map((file: FileItem) =>\n file.__type === 'GraphVideo'\n ? { type: 'video' as const, url: file.video_url || '' }\n : file.__type === 'GraphImage'\n ? { type: 'image' as const, url: file.download_url || '' }\n : null\n )\n .filter((link: InstagramMediaItem | null): link is InstagramMediaItem => link !== null);\n\n return {\n creator: global.creator,\n status: 200,\n result: downloadLinks,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloader(url: string): Promise<ApiResponse<YoutubeResult>> {\n try {\n const config = qs.stringify({\n url: url,\n q_auto: 0,\n ajax: 1,\n lang: 'en',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse = await axios.post(\n 'https://yt1s.net/ajax?retry=undefined&platform=youtube',\n config,\n { headers }\n );\n\n const $ = cheerio.load(response.data.result);\n const title = $('.caption b').text().trim();\n const downloadLinks = {\n '480p': $('a[data-fquality=\"480p\"]').attr('href') || '',\n '720p': $('a[data-fquality=\"720p\"]').attr('href') || '',\n '1080p': $('a[data-fquality=\"1080p\"]').attr('href') || '',\n };\n const thumbnailUrl = $('.thumbnail.cover img').attr('src');\n\n const mp3ConvertElement = $('#convert-mp3 a');\n const hrefAttr = mp3ConvertElement.attr('href');\n\n if (!hrefAttr) throw new Error('MP3 conversion link not found.');\n\n const mp3ConvertTokenMatch = hrefAttr.match(\n /mp3_convert_task\\('(\\d+)',\\s*'([^']+)'\\)/\n );\n\n if (!mp3ConvertTokenMatch)\n throw new Error('MP3 conversion token not found.');\n\n const mp3ConvertToken = mp3ConvertTokenMatch[2];\n\n const mp3Response: AxiosResponse = await axios.get(\n `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`\n );\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n thumbnail: thumbnailUrl || '',\n downloadLinks: downloadLinks,\n mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n ytMp3Downloader = (url: string) => {\n return new Promise((resolve, reject) => {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n Referer: \"https://y2hub.com/\",\n \"Referrer-Policy\": \"strict-origin-when-cross-origin\",\n };\n\n const payload = qs.stringify({\n action: \"yt_convert\",\n nonce: \"1495b10e48\",\n youtube_url: url,\n });\n\n axios(`https://youtubemp4free.com/wp-admin/admin-ajax.php`, {\n method: \"POST\",\n headers: headers,\n data: payload,\n })\n .then(({ data }) => {\n if (!data.success) {\n return reject(new Error(\"Failed to fetch video data\"));\n }\n\n const videoInfo = data.data.info;\n const slug = data.data.slug;\n const size = data.data.size;\n return axios(\"https://ryin.info/\", {\n method: \"GET\",\n headers: {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0\",\n },\n }).then((response) => {\n const setCookieHeaders = response.headers[\"set-cookie\"];\n let cookies;\n\n if (setCookieHeaders) {\n cookies = setCookieHeaders\n .map((cookie) => cookie.split(\";\")[0])\n .join(\"; \");\n } else {\n cookies =\n \"PHPSESSID=fl86pmq4dqgh2835b32mdm7380; csrf_cookie_name=739e04fcc21050c61c5325b34f449659; lang=en\";\n }\n\n const pageUrl = \"https://ryin.info/\" + slug;\n\n return axios(pageUrl, {\n method: \"GET\",\n headers: {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0\",\n Cookie: cookies,\n },\n }).then((response) => {\n const html = response.data;\n const $ = cheerio.load(html);\n const downloadHref = $(\"#download-url\").attr(\"download-href\");\n\n if (!downloadHref) {\n return reject(new Error(\"Download link not found on page\"));\n }\n resolve({\n creator: global.creator,\n status: true,\n title: videoInfo.title,\n thumbnail: videoInfo.thumbnail,\n description: videoInfo.description,\n viewCount: videoInfo.view_count,\n size: this.generator.formatFileSize(size),\n downloadUrl: downloadHref,\n });\n });\n });\n })\n .catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n });\n };\n\n\n async youtubeDownloaderV2(url: string): Promise<ApiResponse<YoutubeResultV2>> {\n try {\n const timestamp = this.generator.generateTimeStampYoutubeDL();\n const footer = this.generator.generateFooterYoutubeDL(timestamp, url);\n\n const payload = {\n link: url,\n };\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n 'g-footer': footer,\n 'g-timestamp': timestamp,\n accept: '*/*',\n 'accept-language': 'en',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-site',\n Referer: 'https://snapany.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n\n const response: AxiosResponse<YouTubeApiResponse> = await axios.post(\n 'https://api.snapany.com/v1/extract',\n payload,\n { headers }\n );\n const data = response.data;\n\n const videoMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'video'\n );\n const audioMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'audio'\n );\n\n const downloadLinks: Record<string, string> = {};\n if (videoMedia && videoMedia.formats) {\n videoMedia.formats.forEach((format: YouTubeFormat) => {\n const qualityKey = `${format.quality}p`;\n downloadLinks[qualityKey] = format.video_url;\n });\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: data.text,\n thumbnail: videoMedia?.preview_url || null,\n downloadLinks: downloadLinks,\n video: videoMedia?.resource_url || null,\n audio: audioMedia?.resource_url || null,\n formats: videoMedia?.formats || [],\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async sfileDownloader(url: string): Promise<ApiResponse<SfileDownloadResult>> {\n try {\n const response: AxiosResponse = await axios.get(url, {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n });\n\n const $ = cheerio.load(response.data);\n const filename = $('.intro-container img').attr('alt') || '';\n const mimetype = $('div.list').text().split(' - ')[1]?.split('\\n')[0] || '';\n const downloadHref = $('#download').attr('href');\n const download = downloadHref\n ? downloadHref + '&k=' + Math.floor(Math.random() * (15 - 10 + 1) + 10)\n : '';\n\n return {\n creator: global.creator,\n status: 200,\n result: { filename, mimetype, download },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n","import crypto from 'crypto';\n\nexport default class Generator {\n generateTimeStampYoutubeDL(): string {\n return Date.now().toString();\n }\n\n generateFooterYoutubeDL(timestamp: string, link: string): string {\n const locale = 'en';\n const secretKey = '6HTugjCXxR';\n const input = link + locale + timestamp + secretKey;\n const hash = crypto.createHash('md5').update(input).digest('hex');\n return hash;\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + \" \" + sizes[i];\n }\n\n private static generateVisitorId(): string {\n const components = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',\n '1920x1080',\n new Date().getTimezoneOffset().toString(),\n 'en-US',\n 'Win32',\n Math.random().toString(36).substring(2, 15),\n Date.now().toString(),\n process.pid.toString(),\n Math.floor(Math.random() * 1000000).toString()\n ];\n const fingerprint = crypto.createHash('md5')\n .update(components.join('|'))\n .digest('hex');\n return fingerprint;\n }\n\n static getFingerprint(): string {\n const visitorId = this.generateVisitorId();\n return visitorId;\n }\n}\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport {\n ApiResponse,\n SfileSearchResult,\n WallpaperResult,\n WikimediaResult,\n YtPlayResult,\n YtSearchResult,\n} from '../../types/index.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\ninterface YtPlayConfig {\n k_query: string;\n k_page: string;\n q_auto: number;\n hl?: string;\n}\n\ninterface ConvertConfig {\n vid: string;\n k: string;\n}\n\nexport default class Search {\n async sfileSearch(\n query: string,\n page: number = 1\n ): Promise<ApiResponse<SfileSearchResult[]>> {\n try {\n const response: AxiosResponse = await axios.get(\n `https://sfile.mobi/search.php?q=${query}&page=${page}`,\n {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n }\n );\n const $ = cheerio.load(response.data);\n const results: SfileSearchResult[] = [];\n\n $('div.list').each(function () {\n const title = $(this).find('a').text();\n const sizeText = $(this).text().trim().split('(')[1];\n const link = $(this).find('a').attr('href');\n\n if (link && sizeText) {\n results.push({\n title,\n size: sizeText.replace(')', ''),\n link\n });\n }\n });\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n async ytSearch(query: string): Promise<ApiResponse<YtSearchResult[]>> {\n try {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n }\n const response: AxiosResponse = await axios.get(\n `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`,\n { headers }\n );\n\n const data = response.data;\n const videos = data?.data?.items || [];\n const results: YtSearchResult[] = videos.map((item: {\n title: string;\n thumbnail: string;\n url: string;\n }) => ({\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n ytPlay = (text: string): Promise<ApiResponse<YtPlayResult>> => {\n return new Promise((resolve, reject) => {\n const configd: YtPlayConfig = {\n k_query: text,\n k_page: 'mp3',\n q_auto: 1,\n };\n\n const headerss = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Cookie:\n 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={\"0\":{},\"C702514\":{\"page\":5,\"time\":1625200846733}}',\n };\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(configd)),\n headers: headerss,\n })\n .then(({ data }) => {\n const v = data.vitems;\n const v2 = v[Math.floor(Math.random() * v.length)].v;\n const url = 'https://www.youtube.com/watch?v=' + v2;\n\n const config: YtPlayConfig = {\n k_query: 'https://www.youtube.be/' + url,\n k_page: 'mp3',\n hl: 'en',\n q_auto: 1,\n };\n\n\n axios('https://www.y2mate.com/mates/en68/analyze/ajax', {\n method: 'POST',\n data: new URLSearchParams({\n url: 'https://www.youtube.be/' + url,\n q_auto: '0',\n ajax: '1',\n }),\n headers: headerss,\n }).then(({ data }) => {\n const $ = cheerio.load(data.result);\n const img = $('div.thumbnail.cover > a > img').attr('src');\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(config)),\n headers: headerss,\n }).then(({ data }) => {\n const convertConfig: ConvertConfig = {\n vid: data.vid,\n k: data.links.mp3.mp3128.k,\n };\n\n const size = data.links.mp3.mp3128.size;\n\n axios('https://www.y2mate.com/mates/convertV2/index', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(convertConfig)),\n headers: headerss,\n })\n .then((response) => {\n resolve({\n creator: global.creator,\n status: 200,\n result: {\n status: response.data.status,\n title: response.data.title,\n ftype: response.data.ftype,\n thumb: img || '',\n size_mp3: size,\n link: response.data.dlink,\n },\n });\n })\n .catch(reject);\n });\n });\n })\n .catch(reject);\n });\n };\n\n wallpaper = (\n title: string,\n page: string = '1'\n ): Promise<ApiResponse<WallpaperResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`\n )\n .then(({ data }) => {\n const $ = cheerio.load(data);\n const hasil: WallpaperResult[] = [];\n\n $('div.grid-item').each(function (_, b) {\n const titleAttr = $(b).find('p[title]').attr('title');\n const typeText = $(b).find('div.info > a:nth-child(2)').text();\n const hrefAttr = $(b).find('a').attr('href');\n const imgSrc = $(b).find('picture > img').attr('src');\n const srcset1 = $(b)\n .find('picture > source:nth-child(1)')\n .attr('srcset');\n const srcset2 = $(b)\n .find('picture > source:nth-child(2)')\n .attr('srcset');\n\n if (titleAttr && hrefAttr) {\n hasil.push({\n title: titleAttr.trim(),\n type: typeText?.trim() || '',\n source: 'https://www.besthdwallpaper.com' + hrefAttr,\n image: [imgSrc || '', srcset1 || '', srcset2 || ''],\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch((error) => {\n reject(error);\n });\n });\n };\n\n wikimedia = (title: string): Promise<ApiResponse<WikimediaResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`\n )\n .then((res) => {\n const $ = cheerio.load(res.data);\n const hasil: WikimediaResult[] = [];\n\n $('.sdms-search-results__list-wrapper > div > a').each(function (\n _,\n b\n ) {\n const altText = $(b).find('img').attr('alt');\n const href = $(b).attr('href');\n const dataSrc = $(b).find('img').attr('data-src');\n const src = $(b).find('img').attr('src');\n\n if (altText && href) {\n hasil.push({\n title: altText,\n source: href,\n image: dataSrc || src || '',\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch(reject);\n });\n };\n}\n","import axios, { AxiosResponse } from 'axios';\nimport FormData from 'form-data';\nimport Generator from '../utils/generator.js';\nglobal.creator = '@abotscraper – ahmuq'\n\n\nexport default class Tools {\n reminiUpscale = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('type', 'Enhancer');\n form.append('original_image_file', buffer, 'blob');\n const productSerial = Generator.getFingerprint();\n axios.post('https://api.remaker.ai/api/pai/v4/ai-enhance/create-job-new', form, {\n headers: {\n ...form.getHeaders(),\n 'authorization': '',\n 'product-code': '067003',\n 'product-serial': productSerial,\n 'Referer': 'https://remaker.ai/',\n }\n }).then((createJobResponse: AxiosResponse) => {\n if (createJobResponse.data.code !== 100000) {\n reject({\n creator: global.creator,\n status: false,\n error: `Job creation failed: ${createJobResponse.data.message.en}`,\n });\n return;\n }\n const jobId = createJobResponse.data.result.job_id;\n const checkJobStatus = () => {\n axios.get(`https://api.remaker.ai/api/pai/v4/ai-enhance/get-job/${jobId}`, {\n headers: {\n 'authorization': '',\n 'product-code': '067003',\n 'product-serial': productSerial,\n 'Referer': 'https://remaker.ai/',\n }\n }).then((jobResponse: AxiosResponse) => {\n if (jobResponse.data.code === 100000) {\n resolve({\n creator: global.creator,\n status: true,\n result: {\n job_id: jobId,\n image_url: jobResponse.data.result.output[0]\n }\n });\n } else if (jobResponse.data.code === 300013) {\n setTimeout(checkJobStatus, 3000);\n } else {\n reject({\n creator: global.creator,\n status: false,\n error: `Job failed: ${jobResponse.data.message.en}`,\n });\n }\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n };\n\n checkJobStatus();\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n });\n }\n\n uploadImage = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('fileToUpload', buffer, 'image.jpg');\n form.append('reqtype', 'fileupload');\n form.append('userhash', '');\n\n axios.post('https://catbox.moe/user/api.php', form, {\n headers: {\n ...form.getHeaders(),\n }\n })\n .then((response: AxiosResponse) => {\n resolve({\n creator: global.creator,\n status: true,\n result: response.data\n })\n })\n .catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n })\n }\n}","import Downloader from './scraper/downloader.js';\nimport Search from './scraper/search.js';\nimport Tools from './scraper/tools.js';\n\nconst downloader = new Downloader();\nconst search = new Search();\nconst tools = new Tools();\nexport default {\n downloader,\n search,\n tools\n};\n\nexport { Downloader, downloader, Search, search, Tools, tools };\n\n"],"mappings":"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","names":["response","axios","cheerio","data","axios","axios"]}
|
1
|
+
{"version":3,"sources":["../src/scraper/downloader.ts","../src/utils/generator.ts","../src/scraper/search.ts","../src/scraper/tools.ts","../src/index.ts"],"sourcesContent":["import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport qs from 'qs';\nimport {\n ApiResponse,\n FacebookResult,\n InstagramMediaItem,\n InstagramStoriesResult,\n SfileDownloadResult,\n TikTokResult,\n YoutubeResult,\n YoutubeResultV2,\n} from '../../types/index.js';\nimport Generator from '../utils/generator.js';\n\ninterface StoryItem {\n source: string;\n [key: string]: unknown;\n}\n\ninterface InstagramApiResponse {\n stories: StoryItem[];\n user_info: {\n username: string;\n [key: string]: unknown;\n };\n}\n\ninterface FileItem {\n __type: string;\n video_url?: string;\n download_url?: string;\n [key: string]: unknown;\n}\n\ninterface InstagramFilesResponse {\n files: FileItem[];\n}\n\ninterface YouTubeFormat {\n quality: string;\n video_url: string;\n [key: string]: unknown;\n}\n\ninterface YouTubeMedia {\n media_type: string;\n preview_url?: string;\n resource_url?: string;\n formats?: YouTubeFormat[];\n [key: string]: unknown;\n}\n\ninterface YouTubeApiResponse {\n text: string;\n medias: YouTubeMedia[];\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\nexport default class Downloader {\n private generator: Generator;\n\n constructor() {\n this.generator = new Generator();\n }\n\n async facebook(url: string): Promise<ApiResponse<FacebookResult>> {\n try {\n const headers = {\n 'User-Agent':\n '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',\n Origin: 'https://www.fdown.world',\n referer: 'https://www.fdown.world/',\n 'x-requested-with': 'XMLHttpRequest',\n Cookie: 'codehap_domain=www.fdown.world',\n };\n\n const data = new URLSearchParams({ codehap_link: url, codehap: 'true' });\n\n const response: AxiosResponse = await axios.post(\n 'https://www.fdown.world/result.php',\n data,\n { headers }\n );\n\n const $ = cheerio.load(response.data);\n const videoUrl = $('video source').attr('src');\n const imageUrl = $('img').attr('src');\n\n if (!videoUrl && !imageUrl) {\n throw new Error('No video or image found in the response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n thumbnail: imageUrl || '',\n videoUrl: videoUrl || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async tiktokDownloader(url: string): Promise<ApiResponse<TikTokResult>> {\n try {\n const headers = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const data = new URLSearchParams({\n id: url,\n locale: 'en',\n tt: 'WmNzZDk_',\n });\n\n const response: AxiosResponse = await axios.post(\n 'https://ssstik.io/abc?url=dl',\n data,\n {\n headers,\n }\n );\n\n const $ = cheerio.load(response.data);\n const title = $('p.maintext').text().trim();\n const audio = $('a.download_link.music').attr('href');\n const video = $('a.download_link.without_watermark').attr('href');\n\n if (!title || !video) {\n throw new Error('Failed to extract video or title from response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n video: video || '',\n audio: audio || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async igstory(username: string): Promise<ApiResponse<InstagramStoriesResult>> {\n const payload = {\n username: username,\n }\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/',\n accept: 'application/json, text/plain, */*',\n 'accept-language': 'en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-origin',\n Referer: 'https://storyviewer.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n try {\n const response: AxiosResponse = await axios.post(\n `https://storyviewer.com/api/data`,\n payload,\n { headers }\n );\n\n const data: InstagramApiResponse = response.data;\n const sources = data.stories.map((story: StoryItem) => story.source);\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n user_info: data.user_info,\n links: sources,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async instagram(url: string): Promise<ApiResponse<InstagramMediaItem[]>> {\n try {\n const config = new URLSearchParams({\n url: url,\n new: '2',\n lang: 'en',\n app: '',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse<InstagramFilesResponse> = await axios.post(\n 'https://snapinsta.app/get-data.php',\n config,\n { headers }\n );\n\n const downloadLinks = response.data.files\n .map((file: FileItem) =>\n file.__type === 'GraphVideo'\n ? { type: 'video' as const, url: file.video_url || '' }\n : file.__type === 'GraphImage'\n ? { type: 'image' as const, url: file.download_url || '' }\n : null\n )\n .filter((link: InstagramMediaItem | null): link is InstagramMediaItem => link !== null);\n\n return {\n creator: global.creator,\n status: 200,\n result: downloadLinks,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloader(url: string): Promise<ApiResponse<YoutubeResult>> {\n try {\n const config = qs.stringify({\n url: url,\n q_auto: 0,\n ajax: 1,\n lang: 'en',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse = await axios.post(\n 'https://yt1s.net/ajax?retry=undefined&platform=youtube',\n config,\n { headers }\n );\n\n const $ = cheerio.load(response.data.result);\n const title = $('.caption b').text().trim();\n const downloadLinks = {\n '480p': $('a[data-fquality=\"480p\"]').attr('href') || '',\n '720p': $('a[data-fquality=\"720p\"]').attr('href') || '',\n '1080p': $('a[data-fquality=\"1080p\"]').attr('href') || '',\n };\n const thumbnailUrl = $('.thumbnail.cover img').attr('src');\n\n const mp3ConvertElement = $('#convert-mp3 a');\n const hrefAttr = mp3ConvertElement.attr('href');\n\n if (!hrefAttr) throw new Error('MP3 conversion link not found.');\n\n const mp3ConvertTokenMatch = hrefAttr.match(\n /mp3_convert_task\\('(\\d+)',\\s*'([^']+)'\\)/\n );\n\n if (!mp3ConvertTokenMatch)\n throw new Error('MP3 conversion token not found.');\n\n const mp3ConvertToken = mp3ConvertTokenMatch[2];\n\n const mp3Response: AxiosResponse = await axios.get(\n `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`\n );\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n thumbnail: thumbnailUrl || '',\n downloadLinks: downloadLinks,\n mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n ytMp3Downloader = (url: string) => {\n return new Promise((resolve, reject) => {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n Referer: \"https://y2hub.com/\",\n \"Referrer-Policy\": \"strict-origin-when-cross-origin\",\n };\n\n const payload = qs.stringify({\n action: \"yt_convert\",\n nonce: \"1495b10e48\",\n youtube_url: url,\n });\n\n axios(`https://youtubemp4free.com/wp-admin/admin-ajax.php`, {\n method: \"POST\",\n headers: headers,\n data: payload,\n })\n .then(({ data }) => {\n if (!data.success) {\n return reject(new Error(\"Failed to fetch video data\"));\n }\n\n const videoInfo = data.data.info;\n const slug = data.data.slug;\n const size = data.data.size;\n return axios(\"https://ryin.info/\", {\n method: \"GET\",\n headers: {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0\",\n },\n }).then((response) => {\n const setCookieHeaders = response.headers[\"set-cookie\"];\n let cookies;\n\n if (setCookieHeaders) {\n cookies = setCookieHeaders\n .map((cookie) => cookie.split(\";\")[0])\n .join(\"; \");\n } else {\n cookies =\n \"PHPSESSID=fl86pmq4dqgh2835b32mdm7380; csrf_cookie_name=739e04fcc21050c61c5325b34f449659; lang=en\";\n }\n\n const pageUrl = \"https://ryin.info/\" + slug;\n\n return axios(pageUrl, {\n method: \"GET\",\n headers: {\n \"User-Agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0\",\n Cookie: cookies,\n },\n }).then((response) => {\n const html = response.data;\n const $ = cheerio.load(html);\n const downloadHref = $(\"#download-url\").attr(\"download-href\");\n\n if (!downloadHref) {\n return reject(new Error(\"Download link not found on page\"));\n }\n resolve({\n creator: global.creator,\n status: true,\n title: videoInfo.title,\n thumbnail: videoInfo.thumbnail,\n description: videoInfo.description,\n viewCount: videoInfo.view_count,\n size: this.generator.formatFileSize(size),\n downloadUrl: downloadHref,\n });\n });\n });\n })\n .catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n });\n };\n\n\n async youtubeDownloaderV2(url: string): Promise<ApiResponse<YoutubeResultV2>> {\n try {\n const timestamp = this.generator.generateTimeStampYoutubeDL();\n const footer = this.generator.generateFooterYoutubeDL(timestamp, url);\n\n const payload = {\n link: url,\n };\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n 'g-footer': footer,\n 'g-timestamp': timestamp,\n accept: '*/*',\n 'accept-language': 'en',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-site',\n Referer: 'https://snapany.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n\n const response: AxiosResponse<YouTubeApiResponse> = await axios.post(\n 'https://api.snapany.com/v1/extract',\n payload,\n { headers }\n );\n const data = response.data;\n\n const videoMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'video'\n );\n const audioMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'audio'\n );\n\n const downloadLinks: Record<string, string> = {};\n if (videoMedia && videoMedia.formats) {\n videoMedia.formats.forEach((format: YouTubeFormat) => {\n const qualityKey = `${format.quality}p`;\n downloadLinks[qualityKey] = format.video_url;\n });\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: data.text,\n thumbnail: videoMedia?.preview_url || null,\n downloadLinks: downloadLinks,\n video: videoMedia?.resource_url || null,\n audio: audioMedia?.resource_url || null,\n formats: videoMedia?.formats || [],\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async sfileDownloader(url: string): Promise<ApiResponse<SfileDownloadResult>> {\n try {\n const response: AxiosResponse = await axios.get(url, {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n });\n\n const $ = cheerio.load(response.data);\n const filename = $('.intro-container img').attr('alt') || '';\n const mimetype = $('div.list').text().split(' - ')[1]?.split('\\n')[0] || '';\n const downloadHref = $('#download').attr('href');\n const download = downloadHref\n ? downloadHref + '&k=' + Math.floor(Math.random() * (15 - 10 + 1) + 10)\n : '';\n\n return {\n creator: global.creator,\n status: 200,\n result: { filename, mimetype, download },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n","import crypto from 'crypto';\n\nexport default class Generator {\n generateTimeStampYoutubeDL(): string {\n return Date.now().toString();\n }\n\n generateFooterYoutubeDL(timestamp: string, link: string): string {\n const locale = 'en';\n const secretKey = '6HTugjCXxR';\n const input = link + locale + timestamp + secretKey;\n const hash = crypto.createHash('md5').update(input).digest('hex');\n return hash;\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + \" \" + sizes[i];\n }\n\n private static generateVisitorId(): string {\n const components = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',\n '1920x1080',\n new Date().getTimezoneOffset().toString(),\n 'en-US',\n 'Win32',\n Math.random().toString(36).substring(2, 15),\n Date.now().toString(),\n process.pid.toString(),\n Math.floor(Math.random() * 1000000).toString()\n ];\n const fingerprint = crypto.createHash('md5')\n .update(components.join('|'))\n .digest('hex');\n return fingerprint;\n }\n\n static getFingerprint(): string {\n const visitorId = this.generateVisitorId();\n return visitorId;\n }\n}\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport {\n ApiResponse,\n SfileSearchResult,\n WallpaperResult,\n WikimediaResult,\n YtPlayResult,\n YtSearchResult,\n} from '../../types/index.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\ninterface YtPlayConfig {\n k_query: string;\n k_page: string;\n q_auto: number;\n hl?: string;\n}\n\ninterface ConvertConfig {\n vid: string;\n k: string;\n}\n\nexport default class Search {\n async sfileSearch(\n query: string,\n page: number = 1\n ): Promise<ApiResponse<SfileSearchResult[]>> {\n try {\n const response: AxiosResponse = await axios.get(\n `https://sfile.mobi/search.php?q=${query}&page=${page}`,\n {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n }\n );\n const $ = cheerio.load(response.data);\n const results: SfileSearchResult[] = [];\n\n $('div.list').each(function () {\n const title = $(this).find('a').text();\n const sizeText = $(this).text().trim().split('(')[1];\n const link = $(this).find('a').attr('href');\n\n if (link && sizeText) {\n results.push({\n title,\n size: sizeText.replace(')', ''),\n link\n });\n }\n });\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n async ytSearch(query: string): Promise<ApiResponse<YtSearchResult[]>> {\n try {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n }\n const response: AxiosResponse = await axios.get(\n `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`,\n { headers }\n );\n\n const data = response.data;\n const videos = data?.data?.items || [];\n const results: YtSearchResult[] = videos.map((item: {\n title: string;\n thumbnail: string;\n url: string;\n }) => ({\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n ytPlay = (text: string): Promise<ApiResponse<YtPlayResult>> => {\n return new Promise((resolve, reject) => {\n const configd: YtPlayConfig = {\n k_query: text,\n k_page: 'mp3',\n q_auto: 1,\n };\n\n const headerss = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Cookie:\n 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={\"0\":{},\"C702514\":{\"page\":5,\"time\":1625200846733}}',\n };\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(configd)),\n headers: headerss,\n })\n .then(({ data }) => {\n const v = data.vitems;\n const v2 = v[Math.floor(Math.random() * v.length)].v;\n const url = 'https://www.youtube.com/watch?v=' + v2;\n\n const config: YtPlayConfig = {\n k_query: 'https://www.youtube.be/' + url,\n k_page: 'mp3',\n hl: 'en',\n q_auto: 1,\n };\n\n\n axios('https://www.y2mate.com/mates/en68/analyze/ajax', {\n method: 'POST',\n data: new URLSearchParams({\n url: 'https://www.youtube.be/' + url,\n q_auto: '0',\n ajax: '1',\n }),\n headers: headerss,\n }).then(({ data }) => {\n const $ = cheerio.load(data.result);\n const img = $('div.thumbnail.cover > a > img').attr('src');\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(config)),\n headers: headerss,\n }).then(({ data }) => {\n const convertConfig: ConvertConfig = {\n vid: data.vid,\n k: data.links.mp3.mp3128.k,\n };\n\n const size = data.links.mp3.mp3128.size;\n\n axios('https://www.y2mate.com/mates/convertV2/index', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(convertConfig)),\n headers: headerss,\n })\n .then((response) => {\n resolve({\n creator: global.creator,\n status: 200,\n result: {\n status: response.data.status,\n title: response.data.title,\n ftype: response.data.ftype,\n thumb: img || '',\n size_mp3: size,\n link: response.data.dlink,\n },\n });\n })\n .catch(reject);\n });\n });\n })\n .catch(reject);\n });\n };\n\n wallpaper = (\n title: string,\n page: string = '1'\n ): Promise<ApiResponse<WallpaperResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`\n )\n .then(({ data }) => {\n const $ = cheerio.load(data);\n const hasil: WallpaperResult[] = [];\n\n $('div.grid-item').each(function (_, b) {\n const titleAttr = $(b).find('p[title]').attr('title');\n const typeText = $(b).find('div.info > a:nth-child(2)').text();\n const hrefAttr = $(b).find('a').attr('href');\n const imgSrc = $(b).find('picture > img').attr('src');\n const srcset1 = $(b)\n .find('picture > source:nth-child(1)')\n .attr('srcset');\n const srcset2 = $(b)\n .find('picture > source:nth-child(2)')\n .attr('srcset');\n\n if (titleAttr && hrefAttr) {\n hasil.push({\n title: titleAttr.trim(),\n type: typeText?.trim() || '',\n source: 'https://www.besthdwallpaper.com' + hrefAttr,\n image: [imgSrc || '', srcset1 || '', srcset2 || ''],\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch((error) => {\n reject(error);\n });\n });\n };\n\n wikimedia = (title: string): Promise<ApiResponse<WikimediaResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`\n )\n .then((res) => {\n const $ = cheerio.load(res.data);\n const hasil: WikimediaResult[] = [];\n\n $('.sdms-search-results__list-wrapper > div > a').each(function (\n _,\n b\n ) {\n const altText = $(b).find('img').attr('alt');\n const href = $(b).attr('href');\n const dataSrc = $(b).find('img').attr('data-src');\n const src = $(b).find('img').attr('src');\n\n if (altText && href) {\n hasil.push({\n title: altText,\n source: href,\n image: dataSrc || src || '',\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch(reject);\n });\n };\n}\n","import axios, { AxiosResponse } from 'axios';\nimport FormData from 'form-data';\nimport Generator from '../utils/generator.js';\nglobal.creator = '@abotscraper – ahmuq'\n\n\nexport default class Tools {\n\n removeBackground = (image: string) => {\n return new Promise((resolve, reject) => {\n const headers = {\n \"accept\": \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n \"content-type\": \"application/json\",\n \"priority\": \"u=1, i\",\n \"sec-ch-ua\": \"\\\"Not)A;Brand\\\";v=\\\"8\\\", \\\"Chromium\\\";v=\\\"138\\\", \\\"Microsoft Edge\\\";v=\\\"138\\\"\",\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": \"\\\"Windows\\\"\",\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"same-origin\",\n \"referrer\": \"https://aibackgroundremover.org/\",\n }\n\n const payload = {\n image\n }\n axios.post(\"https://aibackgroundremover.org/api/remove-bg\", payload, {\n headers: headers\n }).then((CreateJobResponse: AxiosResponse) => {\n if (CreateJobResponse.status !== 200) {\n reject({\n creator: global.creator,\n status: false,\n error: `job creation failed`,\n });\n return;\n }\n const jobId = CreateJobResponse.data.id;\n const checkJobStatus = () => {\n axios.get(`https://aibackgroundremover.org/api/check-status?id=${jobId}`, {\n headers: headers\n }).then((jobResponse: AxiosResponse) => {\n if (jobResponse.data.status === \"succeeded\") {\n resolve({\n creator: global.creator,\n status: true,\n result: {\n job_id: jobId,\n image_url: jobResponse.data.output\n }\n });\n } else if (jobResponse.data.status === \"starting\") {\n setTimeout(checkJobStatus, 3000);\n } else {\n reject({\n creator: global.creator,\n status: false,\n error: `job status unknown: ${jobResponse.data.status}`,\n });\n }\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n };\n checkJobStatus();\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n })\n }\n\n reminiV2 = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('image', buffer, 'blob');\n form.append('scale', 2);\n axios.post('https://api2.pixelcut.app/image/upscale/v1', form, {\n headers: {\n ...form.getHeaders(),\n Accept: 'application/json',\n Referer: 'https://www.pixelcut.ai/',\n Origin: 'https://www.pixelcut.ai',\n 'x-client-version': 'web'\n }\n }).then((Response: AxiosResponse) => {\n if (Response.data.result_url) {\n resolve({\n creator: global.creator,\n status: true,\n result: Response.data.result_url\n })\n }\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n })\n })\n }\n\n reminiV1 = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('type', 'Enhancer');\n form.append('original_image_file', buffer, 'blob');\n const productSerial = Generator.getFingerprint();\n axios.post('https://api.remaker.ai/api/pai/v4/ai-enhance/create-job-new', form, {\n headers: {\n ...form.getHeaders(),\n 'authorization': '',\n 'product-code': '067003',\n 'product-serial': productSerial,\n 'Referer': 'https://remaker.ai/',\n \"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'\n }\n }).then((createJobResponse: AxiosResponse) => {\n if (createJobResponse.data.code !== 100000) {\n reject({\n creator: global.creator,\n status: false,\n error: `Job creation failed: ${createJobResponse.data.message.en}`,\n });\n return;\n }\n const jobId = createJobResponse.data.result.job_id;\n const checkJobStatus = () => {\n axios.get(`https://api.remaker.ai/api/pai/v4/ai-enhance/get-job/${jobId}`, {\n headers: {\n 'authorization': '',\n 'product-code': '067003',\n 'product-serial': productSerial,\n 'Referer': 'https://remaker.ai/',\n }\n }).then((jobResponse: AxiosResponse) => {\n if (jobResponse.data.code === 100000) {\n resolve({\n creator: global.creator,\n status: true,\n result: {\n job_id: jobId,\n image_url: jobResponse.data.result.output[0]\n }\n });\n } else if (jobResponse.data.code === 300013) {\n setTimeout(checkJobStatus, 3000);\n } else {\n reject({\n creator: global.creator,\n status: false,\n error: `Job failed: ${jobResponse.data.message.en}`,\n });\n }\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n };\n\n checkJobStatus();\n }).catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n });\n }\n\n uploadImage = (buffer: Buffer) => {\n return new Promise((resolve, reject) => {\n const form = new FormData();\n form.append('fileToUpload', buffer, 'image.jpg');\n form.append('reqtype', 'fileupload');\n form.append('userhash', '');\n\n axios.post('https://catbox.moe/user/api.php', form, {\n headers: {\n ...form.getHeaders(),\n }\n })\n .then((response: AxiosResponse) => {\n resolve({\n creator: global.creator,\n status: true,\n result: response.data\n })\n })\n .catch((error) => {\n reject({\n creator: global.creator,\n status: false,\n error: error.message,\n });\n });\n })\n }\n}","import Downloader from './scraper/downloader.js';\nimport Search from './scraper/search.js';\nimport Tools from './scraper/tools.js';\n\nconst downloader = new Downloader();\nconst search = new Search();\nconst tools = new Tools();\nexport default {\n downloader,\n search,\n tools\n};\n\nexport { Downloader, downloader, Search, search, Tools, tools };\n\n"],"mappings":"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","names":["response","axios","cheerio","data","axios","axios"]}
|