abot-scraper 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +70 -46
- package/package.json +25 -18
- package/src/index.js +7 -15
- package/src/scraper/downloader.js +294 -275
- package/src/scraper/search.js +144 -0
- package/testing.js +70 -0
package/README.MD
CHANGED
@@ -1,46 +1,70 @@
|
|
1
|
-
# abot-scraper
|
2
|
-
|
3
|
-
abot-scraper is a library node js. Can get data downloader like facebook, youtube, instagram and etc.
|
4
|
-
|
5
|
-
# Installation
|
6
|
-
|
7
|
-
Install stable version of scraper:
|
8
|
-
|
9
|
-
```sh
|
10
|
-
npm i
|
11
|
-
```
|
12
|
-
|
13
|
-
Install latest version from github (not recommended)
|
14
|
-
|
15
|
-
```sh
|
16
|
-
npm i github:ahlulmukh/abot-scraper
|
17
|
-
```
|
18
|
-
|
19
|
-
## Usage
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
.
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
1
|
+
# abot-scraper
|
2
|
+
|
3
|
+
abot-scraper is a library node js. Can get data downloader like facebook, youtube, instagram and etc.
|
4
|
+
|
5
|
+
# Installation
|
6
|
+
|
7
|
+
Install stable version of scraper:
|
8
|
+
|
9
|
+
```sh
|
10
|
+
npm i abot-scraper
|
11
|
+
```
|
12
|
+
|
13
|
+
Install latest version from github (not recommended)
|
14
|
+
|
15
|
+
```sh
|
16
|
+
npm i github:ahlulmukh/abot-scraper
|
17
|
+
```
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
For Downloader
|
22
|
+
|
23
|
+
```js
|
24
|
+
const { downloader } = require("@ahlulmukh/abot-scraper");
|
25
|
+
|
26
|
+
downloader
|
27
|
+
.ytMP4("https://youtu.be/j_MlBCb9-m8?si=g6KsGM6cHNotU-rH")
|
28
|
+
.then((result) => {
|
29
|
+
console.log(result); // json;
|
30
|
+
})
|
31
|
+
.catch((error) => {
|
32
|
+
console.error(error);
|
33
|
+
});
|
34
|
+
```
|
35
|
+
|
36
|
+
For Search
|
37
|
+
|
38
|
+
```js
|
39
|
+
const { search } = require("@ahlulmukh/abot-scraper");
|
40
|
+
|
41
|
+
search
|
42
|
+
.ytPlay("Lagu Terbaru")
|
43
|
+
.then((result) => {
|
44
|
+
console.log(result); // json;
|
45
|
+
})
|
46
|
+
.catch((error) => {
|
47
|
+
console.error(error);
|
48
|
+
});
|
49
|
+
```
|
50
|
+
|
51
|
+
## Features
|
52
|
+
|
53
|
+
- Youtube Downloader
|
54
|
+
- Facebok Downloader
|
55
|
+
- Tiktok Downloader
|
56
|
+
- Instagram Downloader
|
57
|
+
- Instastory Downloader
|
58
|
+
- Pinterest Search
|
59
|
+
- Youtube Play By query
|
60
|
+
- Wallpaper
|
61
|
+
|
62
|
+
## Contributing
|
63
|
+
|
64
|
+
If you find a bug or have a feature request, please open an issue on our GitHub repository.
|
65
|
+
|
66
|
+
We welcome contributions from the community. If you'd like to contribute, please fork the repository and submit a pull request.
|
67
|
+
|
68
|
+
## License
|
69
|
+
|
70
|
+
Scraper is licensed under the GPL-3.0-or-later license. See [LICENSE](LICENSE) for more information.
|
package/package.json
CHANGED
@@ -1,18 +1,25 @@
|
|
1
|
-
{
|
2
|
-
"name": "abot-scraper",
|
3
|
-
"version": "1.
|
4
|
-
"description": "scraper random",
|
5
|
-
"main": "src/index.js",
|
6
|
-
"scripts": {
|
7
|
-
"test": "npm test"
|
8
|
-
},
|
9
|
-
"keywords": [
|
10
|
-
"scraper"
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
"
|
16
|
-
|
17
|
-
|
18
|
-
|
1
|
+
{
|
2
|
+
"name": "abot-scraper",
|
3
|
+
"version": "1.1.1",
|
4
|
+
"description": "scraper random for downloader and searching",
|
5
|
+
"main": "src/index.js",
|
6
|
+
"scripts": {
|
7
|
+
"test": "npm test"
|
8
|
+
},
|
9
|
+
"keywords": [
|
10
|
+
"scraper",
|
11
|
+
"ytdownloader",
|
12
|
+
"instagram",
|
13
|
+
"youtube-dl",
|
14
|
+
"youtube",
|
15
|
+
"facebook"
|
16
|
+
],
|
17
|
+
"author": "Ahlul Mukhramin",
|
18
|
+
"license": "ISC",
|
19
|
+
"dependencies": {
|
20
|
+
"axios": "^1.5.1",
|
21
|
+
"axios-cookiejar-support": "^5.0.5",
|
22
|
+
"cheerio": "^1.0.0-rc.12",
|
23
|
+
"tough-cookie": "^5.1.2"
|
24
|
+
}
|
25
|
+
}
|
package/src/index.js
CHANGED
@@ -1,15 +1,7 @@
|
|
1
|
-
const
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
}
|
8
|
-
|
9
|
-
module.exports = {
|
10
|
-
facebook,
|
11
|
-
igstory,
|
12
|
-
instagram,
|
13
|
-
ytMP3,
|
14
|
-
ytMP4,
|
15
|
-
};
|
1
|
+
const Downloader = require("./scraper/downloader");
|
2
|
+
const Search = require("./scraper/search");
|
3
|
+
|
4
|
+
module.exports = {
|
5
|
+
downloader: new Downloader(),
|
6
|
+
search: new Search(),
|
7
|
+
};
|
@@ -1,275 +1,294 @@
|
|
1
|
-
const { default: axios } = require("axios");
|
2
|
-
const cheerio = require("cheerio");
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
"
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
.
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
)
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
}
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
}
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
1
|
+
const { default: axios } = require("axios");
|
2
|
+
const cheerio = require("cheerio");
|
3
|
+
const FormData = require("form-data");
|
4
|
+
global.creator = `@abotscraper – ahmuq`;
|
5
|
+
|
6
|
+
module.exports = class Downloader {
|
7
|
+
facebook = (url) => {
|
8
|
+
return new Promise((resolve, reject) => {
|
9
|
+
let headerss = {
|
10
|
+
"User-Agent":
|
11
|
+
"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",
|
12
|
+
Origin: "https://www.fdown.world",
|
13
|
+
referer: "https://www.fdown.world/",
|
14
|
+
"x-requested-with": "XMLHttpRequest",
|
15
|
+
Cookie: "codehap_domain=www.fdown.world",
|
16
|
+
};
|
17
|
+
|
18
|
+
const data = {
|
19
|
+
codehap_link: url,
|
20
|
+
codehap: "true",
|
21
|
+
};
|
22
|
+
|
23
|
+
axios("https://www.fdown.world/result.php", {
|
24
|
+
method: "POST",
|
25
|
+
data: new URLSearchParams(Object.entries(data)),
|
26
|
+
headers: headerss,
|
27
|
+
})
|
28
|
+
.then(({ data }) => {
|
29
|
+
const $ = cheerio.load(data);
|
30
|
+
const videoUrl = $("video source").attr("src");
|
31
|
+
const imageUrl = $("img").attr("src");
|
32
|
+
|
33
|
+
resolve({
|
34
|
+
creator: global.creator,
|
35
|
+
status: 200,
|
36
|
+
result: {
|
37
|
+
thumbnail: imageUrl,
|
38
|
+
videoUrl: videoUrl,
|
39
|
+
},
|
40
|
+
});
|
41
|
+
})
|
42
|
+
.catch(reject);
|
43
|
+
});
|
44
|
+
};
|
45
|
+
|
46
|
+
tiktokDownloader = (url) => {
|
47
|
+
return new Promise((resolve, reject) => {
|
48
|
+
let headers = {
|
49
|
+
"sec-ch-ua":
|
50
|
+
'" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
|
51
|
+
"user-agent":
|
52
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
53
|
+
};
|
54
|
+
|
55
|
+
let config = {
|
56
|
+
id: url,
|
57
|
+
locale: "en",
|
58
|
+
tt: "WmNzZDk_",
|
59
|
+
};
|
60
|
+
axios("https://ssstik.io/abc?url=dl", {
|
61
|
+
method: "POST",
|
62
|
+
data: new URLSearchParams(Object.entries(config)),
|
63
|
+
headers: headers,
|
64
|
+
})
|
65
|
+
.then(({ data }) => {
|
66
|
+
const $ = cheerio.load(data);
|
67
|
+
const title = $("p.maintext").text().trim();
|
68
|
+
const audio = $("a.download_link.music").attr("href");
|
69
|
+
const video = $("a.download_link.without_watermark").attr("href");
|
70
|
+
resolve({
|
71
|
+
creator: global.creator,
|
72
|
+
status: 200,
|
73
|
+
result: {
|
74
|
+
title: title,
|
75
|
+
video: video,
|
76
|
+
audio: audio,
|
77
|
+
},
|
78
|
+
});
|
79
|
+
})
|
80
|
+
.catch(reject);
|
81
|
+
});
|
82
|
+
};
|
83
|
+
|
84
|
+
igstory = (username) => {
|
85
|
+
function encodeParameter(username) {
|
86
|
+
const parameter = `-1::${username}::rJP2tBRKf6ktbRqPUBtRE9klgBWb7d`;
|
87
|
+
let encoded = Buffer.from(parameter).toString("base64");
|
88
|
+
encoded = encoded
|
89
|
+
.replace(/[+]/g, ".")
|
90
|
+
.replace(/[/]/g, "_")
|
91
|
+
.replace(/[=]/g, "-");
|
92
|
+
|
93
|
+
return encoded;
|
94
|
+
}
|
95
|
+
return new Promise(async (resolve) => {
|
96
|
+
const headers = {
|
97
|
+
"User-Agent":
|
98
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/",
|
99
|
+
};
|
100
|
+
try {
|
101
|
+
const encodedParameter = encodeParameter(username);
|
102
|
+
const storyData = await axios(
|
103
|
+
`https://instanavigation.net/api/v1/stories/${encodedParameter}`,
|
104
|
+
{
|
105
|
+
method: "GET",
|
106
|
+
headers: headers,
|
107
|
+
}
|
108
|
+
);
|
109
|
+
const data = storyData.data;
|
110
|
+
const sources = data.stories.map((story) => story.source);
|
111
|
+
return resolve({
|
112
|
+
creator: global.creator,
|
113
|
+
status: 200,
|
114
|
+
result: {
|
115
|
+
user_info: data.user_info,
|
116
|
+
links: sources,
|
117
|
+
},
|
118
|
+
});
|
119
|
+
} catch (error) {
|
120
|
+
return resolve({
|
121
|
+
creator: global.creator,
|
122
|
+
status: false,
|
123
|
+
});
|
124
|
+
}
|
125
|
+
});
|
126
|
+
};
|
127
|
+
|
128
|
+
instagram = (url) => {
|
129
|
+
return new Promise((resolve, reject) => {
|
130
|
+
let config = {
|
131
|
+
url: url,
|
132
|
+
new: 2,
|
133
|
+
lang: "en",
|
134
|
+
app: "",
|
135
|
+
};
|
136
|
+
let headerss = {
|
137
|
+
"user-agent":
|
138
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
139
|
+
};
|
140
|
+
axios("https://snapinsta.app/get-data.php", {
|
141
|
+
method: "POST",
|
142
|
+
data: new URLSearchParams(Object.entries(config)),
|
143
|
+
headers: headerss,
|
144
|
+
})
|
145
|
+
.then(({ data }) => {
|
146
|
+
const downloadLinks = data.files
|
147
|
+
.map((file) => {
|
148
|
+
if (file.__type === "GraphVideo") {
|
149
|
+
return file.video_url;
|
150
|
+
} else if (file.__type === "GraphImage") {
|
151
|
+
return file.download_url;
|
152
|
+
}
|
153
|
+
return null;
|
154
|
+
})
|
155
|
+
.filter((link) => link !== null);
|
156
|
+
resolve({
|
157
|
+
creator: global.creator,
|
158
|
+
status: 200,
|
159
|
+
result: downloadLinks,
|
160
|
+
});
|
161
|
+
})
|
162
|
+
.catch(({ error }) => {
|
163
|
+
reject(error);
|
164
|
+
});
|
165
|
+
});
|
166
|
+
};
|
167
|
+
|
168
|
+
ytMP3(url) {
|
169
|
+
return new Promise((resolve, reject) => {
|
170
|
+
let configd = {
|
171
|
+
k_query: url,
|
172
|
+
k_page: "Youtube Downloader",
|
173
|
+
hl: "en",
|
174
|
+
q_auto: 0,
|
175
|
+
};
|
176
|
+
let headerss = {
|
177
|
+
"sec-ch-ua":
|
178
|
+
'" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
|
179
|
+
"user-agent":
|
180
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
181
|
+
Cookie:
|
182
|
+
'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={"0":{},"C702514":{"page":5,"time":1625200846733}}',
|
183
|
+
};
|
184
|
+
axios("https://www.y2mate.com/mates/analyzeV2/ajax", {
|
185
|
+
method: "POST",
|
186
|
+
data: new URLSearchParams(Object.entries(configd)),
|
187
|
+
headers: headerss,
|
188
|
+
})
|
189
|
+
.then(({ data }) => {
|
190
|
+
let url = "https://www.youtube.com/watch?v=" + data.vid;
|
191
|
+
let configimg = {
|
192
|
+
url: "https://www.youtube.be/" + url,
|
193
|
+
q_auto: 0,
|
194
|
+
ajax: 1,
|
195
|
+
};
|
196
|
+
let configdl = {
|
197
|
+
vid: data.vid,
|
198
|
+
k: data.links.mp3.mp3128.k,
|
199
|
+
};
|
200
|
+
let size = data.links.mp3.mp3128.size;
|
201
|
+
axios("https://www.y2mate.com/mates/en68/analyze/ajax", {
|
202
|
+
method: "POST",
|
203
|
+
data: new URLSearchParams(Object.entries(configimg)),
|
204
|
+
headers: headerss,
|
205
|
+
}).then(({ data }) => {
|
206
|
+
const $ = cheerio.load(data.result);
|
207
|
+
let img = $("div.thumbnail.cover > a > img").attr("src");
|
208
|
+
axios("https://www.y2mate.com/mates/convertV2/index", {
|
209
|
+
method: "POST",
|
210
|
+
data: new URLSearchParams(Object.entries(configdl)),
|
211
|
+
headers: headerss,
|
212
|
+
}).then(({ data }) => {
|
213
|
+
resolve({
|
214
|
+
creator: global.creator,
|
215
|
+
status: 200,
|
216
|
+
result: {
|
217
|
+
title: data.title,
|
218
|
+
ftype: data.ftype,
|
219
|
+
quality: data.fquality,
|
220
|
+
thumb: img,
|
221
|
+
size_mp3: size,
|
222
|
+
link: data.dlink,
|
223
|
+
},
|
224
|
+
});
|
225
|
+
});
|
226
|
+
});
|
227
|
+
})
|
228
|
+
.catch(reject);
|
229
|
+
});
|
230
|
+
}
|
231
|
+
|
232
|
+
ytMP4 = (url) => {
|
233
|
+
return new Promise((resolve, reject) => {
|
234
|
+
let configd = {
|
235
|
+
k_query: url,
|
236
|
+
k_page: "Youtube Downloader",
|
237
|
+
hl: "en",
|
238
|
+
q_auto: 0,
|
239
|
+
};
|
240
|
+
let headerss = {
|
241
|
+
"sec-ch-ua":
|
242
|
+
'" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
|
243
|
+
"user-agent":
|
244
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
245
|
+
Cookie:
|
246
|
+
'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={"0":{},"C702514":{"page":5,"time":1625200846733}}',
|
247
|
+
};
|
248
|
+
axios("https://www.y2mate.com/mates/analyzeV2/ajax", {
|
249
|
+
method: "POST",
|
250
|
+
data: new URLSearchParams(Object.entries(configd)),
|
251
|
+
headers: headerss,
|
252
|
+
})
|
253
|
+
.then(({ data }) => {
|
254
|
+
let url = "https://www.youtube.com/watch?v=" + data.vid;
|
255
|
+
let configimg = {
|
256
|
+
url: "https://www.youtube.be/" + url,
|
257
|
+
q_auto: 0,
|
258
|
+
ajax: 1,
|
259
|
+
};
|
260
|
+
let configdl = {
|
261
|
+
vid: data.vid,
|
262
|
+
k: data.links.mp4[135].k,
|
263
|
+
};
|
264
|
+
let size = data.links.mp4[135].size;
|
265
|
+
axios("https://www.y2mate.com/mates/en68/analyze/ajax", {
|
266
|
+
method: "POST",
|
267
|
+
data: new URLSearchParams(Object.entries(configimg)),
|
268
|
+
headers: headerss,
|
269
|
+
}).then(({ data }) => {
|
270
|
+
const $ = cheerio.load(data.result);
|
271
|
+
let img = $("div.thumbnail.cover > a > img").attr("src");
|
272
|
+
axios("https://www.y2mate.com/mates/convertV2/index", {
|
273
|
+
method: "POST",
|
274
|
+
data: new URLSearchParams(Object.entries(configdl)),
|
275
|
+
headers: headerss,
|
276
|
+
}).then(({ data }) => {
|
277
|
+
resolve({
|
278
|
+
creator: global.creator,
|
279
|
+
status: 200,
|
280
|
+
result: {
|
281
|
+
title: data.title,
|
282
|
+
ftype: data.ftype,
|
283
|
+
thumb: img,
|
284
|
+
size_mp4: size,
|
285
|
+
link: data.dlink,
|
286
|
+
},
|
287
|
+
});
|
288
|
+
});
|
289
|
+
});
|
290
|
+
})
|
291
|
+
.catch(reject);
|
292
|
+
});
|
293
|
+
};
|
294
|
+
};
|
@@ -0,0 +1,144 @@
|
|
1
|
+
const { default: axios } = require("axios");
|
2
|
+
const cheerio = require("cheerio");
|
3
|
+
global.creator = `@abotscraper – ahmuq`;
|
4
|
+
|
5
|
+
module.exports = class Search {
|
6
|
+
ytPlay = (text) => {
|
7
|
+
return new Promise((resolve, reject) => {
|
8
|
+
let configd = {
|
9
|
+
k_query: text,
|
10
|
+
k_page: "mp3",
|
11
|
+
q_auto: 1,
|
12
|
+
};
|
13
|
+
let headerss = {
|
14
|
+
"sec-ch-ua":
|
15
|
+
'" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
|
16
|
+
"user-agent":
|
17
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
18
|
+
Cookie:
|
19
|
+
'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={"0":{},"C702514":{"page":5,"time":1625200846733}}',
|
20
|
+
};
|
21
|
+
|
22
|
+
axios("https://www.y2mate.com/mates/analyzeV2/ajax", {
|
23
|
+
method: "POST",
|
24
|
+
data: new URLSearchParams(Object.entries(configd)),
|
25
|
+
headers: headerss,
|
26
|
+
})
|
27
|
+
.then(({ data }) => {
|
28
|
+
let v = data.vitems;
|
29
|
+
var v2 = v[Math.floor(Math.random() * v.length)].v;
|
30
|
+
let url = "https://www.youtube.com/watch?v=" + v2;
|
31
|
+
let config = {
|
32
|
+
k_query: "https://www.youtube.be/" + url,
|
33
|
+
k_page: "mp3",
|
34
|
+
hl: "en",
|
35
|
+
q_auto: 1,
|
36
|
+
};
|
37
|
+
let config2 = {
|
38
|
+
url: "https://www.youtube.be/" + url,
|
39
|
+
q_auto: 0,
|
40
|
+
ajax: 1,
|
41
|
+
};
|
42
|
+
axios("https://www.y2mate.com/mates/en68/analyze/ajax", {
|
43
|
+
method: "POST",
|
44
|
+
data: new URLSearchParams(Object.entries(config2)),
|
45
|
+
headers: headerss,
|
46
|
+
}).then(({ data }) => {
|
47
|
+
const $ = cheerio.load(data.result);
|
48
|
+
let img = $("div.thumbnail.cover > a > img").attr("src");
|
49
|
+
axios("https://www.y2mate.com/mates/analyzeV2/ajax", {
|
50
|
+
method: "POST",
|
51
|
+
data: new URLSearchParams(Object.entries(config)),
|
52
|
+
headers: headerss,
|
53
|
+
}).then(({ data }) => {
|
54
|
+
const convertConfig = {
|
55
|
+
vid: data.vid,
|
56
|
+
k: data.links.mp3.mp3128.k,
|
57
|
+
};
|
58
|
+
let size = data.links.mp3.mp3128.size;
|
59
|
+
axios("https://www.y2mate.com/mates/convertV2/index", {
|
60
|
+
method: "POST",
|
61
|
+
data: new URLSearchParams(Object.entries(convertConfig)),
|
62
|
+
headers: headerss,
|
63
|
+
})
|
64
|
+
.then((response) => {
|
65
|
+
resolve({
|
66
|
+
creator: global.creator,
|
67
|
+
status: 200,
|
68
|
+
result: {
|
69
|
+
status: response.data.status,
|
70
|
+
title: response.data.title,
|
71
|
+
ftype: response.data.ftype,
|
72
|
+
thumb: img,
|
73
|
+
size_mp3: size,
|
74
|
+
link: response.data.dlink,
|
75
|
+
},
|
76
|
+
});
|
77
|
+
})
|
78
|
+
.catch(reject);
|
79
|
+
});
|
80
|
+
});
|
81
|
+
})
|
82
|
+
.catch(reject);
|
83
|
+
});
|
84
|
+
};
|
85
|
+
|
86
|
+
wallpaper = (title, page = "1") => {
|
87
|
+
return new Promise((resolve, reject) => {
|
88
|
+
axios
|
89
|
+
.get(
|
90
|
+
`https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`
|
91
|
+
)
|
92
|
+
.then(({ data }) => {
|
93
|
+
let $ = cheerio.load(data);
|
94
|
+
let hasil = [];
|
95
|
+
|
96
|
+
$("div.grid-item").each(function (a, b) {
|
97
|
+
hasil.push({
|
98
|
+
title: $(b).find("p[title]").attr("title").trim(),
|
99
|
+
type: $(b).find("div.info > a:nth-child(2)").text().trim(),
|
100
|
+
source:
|
101
|
+
"https://www.besthdwallpaper.com" + $(b).find("a").attr("href"),
|
102
|
+
image: [
|
103
|
+
$(b).find("picture > img").attr("src"),
|
104
|
+
$(b).find("picture > source:nth-child(1)").attr("srcset"),
|
105
|
+
$(b).find("picture > source:nth-child(2)").attr("srcset"),
|
106
|
+
],
|
107
|
+
});
|
108
|
+
});
|
109
|
+
resolve({ creator: global.creator, status: 200, hasil });
|
110
|
+
})
|
111
|
+
.catch((error) => {
|
112
|
+
reject(error);
|
113
|
+
});
|
114
|
+
});
|
115
|
+
};
|
116
|
+
|
117
|
+
wikimedia = (title) => {
|
118
|
+
return new Promise((resolve, reject) => {
|
119
|
+
axios
|
120
|
+
.get(
|
121
|
+
`https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`
|
122
|
+
)
|
123
|
+
.then((res) => {
|
124
|
+
let $ = cheerio.load(res.data);
|
125
|
+
let hasil = [];
|
126
|
+
$(".sdms-search-results__list-wrapper > div > a").each(function (
|
127
|
+
a,
|
128
|
+
b
|
129
|
+
) {
|
130
|
+
hasil.push({
|
131
|
+
title: $(b).find("img").attr("alt"),
|
132
|
+
source: $(b).attr("href"),
|
133
|
+
image:
|
134
|
+
$(b).find("img").attr("data-src") ||
|
135
|
+
$(b).find("img").attr("src"),
|
136
|
+
});
|
137
|
+
});
|
138
|
+
|
139
|
+
resolve({ creator: global.creator, status: 200, hasil });
|
140
|
+
})
|
141
|
+
.catch(reject);
|
142
|
+
});
|
143
|
+
};
|
144
|
+
};
|
package/testing.js
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
// Import Axios (jika di Node.js)
|
2
|
+
const axios = require("axios"); // Hapus baris ini jika di browser
|
3
|
+
|
4
|
+
// Fungsi untuk meng-encode parameter
|
5
|
+
function encodeParameter(username) {
|
6
|
+
// Format parameter: "-1::username::token"
|
7
|
+
const parameter = `-1::${username}::rJP2tBRKf6ktbRqPUBtRE9klgBWb7d`;
|
8
|
+
|
9
|
+
// Encode ke Base64
|
10
|
+
let encoded = Buffer.from(parameter).toString("base64");
|
11
|
+
|
12
|
+
// Ganti karakter khusus
|
13
|
+
encoded = encoded
|
14
|
+
.replace(/[+]/g, ".")
|
15
|
+
.replace(/[/]/g, "_")
|
16
|
+
.replace(/[=]/g, "-");
|
17
|
+
|
18
|
+
return encoded;
|
19
|
+
}
|
20
|
+
|
21
|
+
// Fungsi untuk mengambil data story dari API menggunakan Axios
|
22
|
+
async function fetchStoryData(username) {
|
23
|
+
const baseUrl = "https://instanavigation.net";
|
24
|
+
const encodedParameter = encodeParameter(username);
|
25
|
+
const apiUrl = `${baseUrl}/api/v1/stories/${encodedParameter}`;
|
26
|
+
|
27
|
+
try {
|
28
|
+
// Lakukan permintaan ke API menggunakan Axios
|
29
|
+
const response = await axios.get(apiUrl);
|
30
|
+
|
31
|
+
// Ambil data dari response
|
32
|
+
const data = response.data;
|
33
|
+
return data;
|
34
|
+
} catch (error) {
|
35
|
+
console.error("Error fetching story data:", error.message);
|
36
|
+
return null;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
// Contoh penggunaan
|
41
|
+
(async () => {
|
42
|
+
const username = "cristiano"; // Ganti dengan username yang diinginkan
|
43
|
+
const storyData = await fetchStoryData(username);
|
44
|
+
|
45
|
+
if (storyData) {
|
46
|
+
console.log("Data Story:", storyData);
|
47
|
+
|
48
|
+
// Simpan data ke localStorage (jika di browser)
|
49
|
+
if (typeof localStorage !== "undefined" && storyData.user_info) {
|
50
|
+
const userInfo = storyData.user_info;
|
51
|
+
localStorage.setItem(
|
52
|
+
userInfo.username,
|
53
|
+
JSON.stringify([
|
54
|
+
userInfo.id,
|
55
|
+
userInfo.full_name,
|
56
|
+
userInfo.profile_pic_url,
|
57
|
+
userInfo.is_private,
|
58
|
+
userInfo.is_verified,
|
59
|
+
userInfo.posts,
|
60
|
+
userInfo.followers,
|
61
|
+
userInfo.following,
|
62
|
+
Date.now(),
|
63
|
+
])
|
64
|
+
);
|
65
|
+
console.log("Data disimpan di localStorage.");
|
66
|
+
}
|
67
|
+
} else {
|
68
|
+
console.log("Gagal mengambil data story.");
|
69
|
+
}
|
70
|
+
})();
|