Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MR414N-ID
GitHub Repository: MR414N-ID/botku2
Path: blob/master/node_modules/@bochilteam/scraper/lib/cjs/social-media/youtube.js
1126 views
1
"use strict";
2
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
if (k2 === undefined) k2 = k;
4
var desc = Object.getOwnPropertyDescriptor(m, k);
5
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
desc = { enumerable: true, get: function() { return m[k]; } };
7
}
8
Object.defineProperty(o, k2, desc);
9
}) : (function(o, m, k, k2) {
10
if (k2 === undefined) k2 = k;
11
o[k2] = m[k];
12
}));
13
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
Object.defineProperty(o, "default", { enumerable: true, value: v });
15
}) : function(o, v) {
16
o["default"] = v;
17
});
18
var __importStar = (this && this.__importStar) || function (mod) {
19
if (mod && mod.__esModule) return mod;
20
var result = {};
21
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
__setModuleDefault(result, mod);
23
return result;
24
};
25
var __importDefault = (this && this.__importDefault) || function (mod) {
26
return (mod && mod.__esModule) ? mod : { "default": mod };
27
};
28
Object.defineProperty(exports, "__esModule", { value: true });
29
exports.youtubedlv3 = exports.youtubedlv2 = exports.youtubedl = void 0;
30
const cheerio_1 = __importDefault(require("cheerio"));
31
const got_1 = __importDefault(require("got"));
32
const utils_js_1 = require("../utils.js");
33
const human_readable_1 = require("human-readable");
34
const toFormat = (0, human_readable_1.sizeFormatter)({
35
std: 'JEDEC',
36
decimalPlaces: 2,
37
keepTrailingZeroes: false,
38
render: (literal, symbol) => `${literal} ${symbol}B`
39
});
40
// https://github.com/BochilGaming/games-wabot/blob/main/lib/y2mate.js
41
const servers = ['en163', 'id90', 'en172'];
42
async function youtubedl(url, server = 'en163') {
43
if (!servers.includes(server))
44
server = servers[0];
45
const params = {
46
url: url,
47
q_auto: 0,
48
ajax: 1
49
};
50
const json = await got_1.default
51
.post(`https://www.y2mate.com/mates/${server}/analyze/ajax`, {
52
headers: {
53
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
54
cookie: '_ga=GA1.2.1405332118.1641699259; _gid=GA1.2.70284915.1642387108; _gat_gtag_UA_84863187_23=1',
55
origin: 'https://www.y2mate.com'
56
},
57
form: params
58
})
59
.json();
60
const $ = cheerio_1.default.load(json.result);
61
const id = (/var k__id = "(.*?)"/.exec($.html()) || ['', ''])[1];
62
const v_id = (/var k_data_vid = "(.*?)"/.exec($.html()) || ['', ''])[1];
63
const thumbnail = $('.video-thumbnail > img').attr('src');
64
const title = $('div.caption > b').text().trim();
65
const video = {};
66
const audio = {};
67
$('#mp4 > table > tbody > tr').each(function () {
68
var _a, _b, _c;
69
const el = $(this).find('td');
70
const _quality = el.eq(0).find('a').text();
71
const quality = (_c = (_b = (_a = _quality.split('(')) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.trim()) === null || _c === void 0 ? void 0 : _c.toLowerCase();
72
const fileSizeH = el.eq(1).text();
73
if (!/\.3gp/i.test(_quality)) {
74
video[quality] = {
75
quality,
76
fileSizeH,
77
fileSize: parseFloat(fileSizeH) * (/MB$/.test(fileSizeH) ? 1000 : 1),
78
download: convert.bind(null, id, v_id, 'mp4', quality.replace(/p/i, ''))
79
};
80
}
81
});
82
$('#mp3 > table > tbody > tr').each(function () {
83
var _a, _b, _c, _d;
84
const el = $(this).find('td');
85
const _quality = el.eq(0).find('a').text();
86
const quality = (_d = (_c = (_b = (_a = _quality
87
.split('(')) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.replace(')', '')) === null || _c === void 0 ? void 0 : _c.trim()) === null || _d === void 0 ? void 0 : _d.toLowerCase();
88
const fileSizeH = el.eq(1).text();
89
audio[quality] = {
90
quality,
91
fileSizeH,
92
fileSize: parseFloat(fileSizeH) * (/MB$/.test(fileSizeH) ? 1000 : 1),
93
download: convert.bind(null, id, v_id, 'mp3', quality.replace(/kbps/i, ''))
94
};
95
});
96
return {
97
id,
98
v_id,
99
thumbnail,
100
title,
101
video,
102
audio
103
};
104
}
105
exports.youtubedl = youtubedl;
106
async function youtubedlv2(url) {
107
const html = await (0, got_1.default)('https://yt5s.com/en32').text();
108
const urlAjax = (/k_url_search="(.*?)"/.exec(html) || ['', ''])[1];
109
const urlConvert = (/k_url_convert="(.*?)"/.exec(html) || ['', ''])[1];
110
const params = {
111
q: url,
112
vt: 'home'
113
};
114
const json = await (0, got_1.default)(urlAjax, {
115
method: 'POST',
116
headers: {
117
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
118
cookie: '__cflb=04dToSoFRg9oqH9pYF2En9gKJK4fe8D9TcYtUD6tYu; _ga=GA1.2.1350132744.1641709803; _gid=GA1.2.1492233267.1641709803; _gat_gtag_UA_122831834_4=1',
119
origin: 'https://yt5s.com',
120
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
121
},
122
searchParams: new URLSearchParams(Object.entries(params))
123
}).json();
124
const video = {};
125
Object.values(json.links.mp4).forEach(({ k, size }) => {
126
video[k] = {
127
quality: k,
128
fileSizeH: size,
129
fileSize: parseFloat(size) * (/MB$/.test(size) ? 1000 : 1),
130
// @ts-ignore
131
download: convertv2.bind(null, urlConvert, json.vid, 'mp4', k, json.token, parseInt(json.timeExpires), json.fn)
132
};
133
});
134
const audio = {};
135
Object.values(json.links.mp3).forEach(({ key, size }) => {
136
audio[key] = {
137
quality: key,
138
fileSizeH: size,
139
fileSize: parseFloat(size) * (/MB$/.test(size) ? 1000 : 1),
140
// @ts-ignore
141
download: convertv2.bind(null, urlConvert, json.vid, 'mp3', key.replace(/kbps/i, ''), json.token, parseInt(json.timeExpires), json.fn)
142
};
143
});
144
return {
145
id: json.vid,
146
title: json.title,
147
thumbnail: `https://i.ytimg.com/vi/${json.vid}/0.jpg`,
148
video,
149
audio
150
};
151
}
152
exports.youtubedlv2 = youtubedlv2;
153
async function youtubedlv3(url) {
154
const payload = {
155
url
156
};
157
const { id, meta: { title }, thumb, url: results } = await got_1.default.post('https://api.onlinevideoconverter.pro/api/convert', {
158
headers: {
159
accept: 'application/json, text/plain, */*',
160
'accept-encoding': 'gzip, deflate, br',
161
'accept-language': 'en-US,en;q=0.9',
162
'content-type': 'application/json',
163
origin: 'https://onlinevideoconverter.pro',
164
referer: 'https://onlinevideoconverter.pro/',
165
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
166
},
167
body: JSON.stringify(payload)
168
}).json();
169
const video = {};
170
const audioArray = {};
171
results.forEach(({ url, info_url, attr, quality, audio, no_audio, filesize, ext }) => {
172
if (!no_audio && ext === 'mp4') {
173
video[quality] = {
174
quality,
175
fileSizeH: (filesize && toFormat(filesize)) || undefined,
176
fileSize: filesize,
177
download: async () => (url || info_url)
178
};
179
}
180
if (audio && !no_audio) {
181
audioArray[quality] = {
182
quality,
183
fileSizeH: (filesize && toFormat(filesize)) || undefined,
184
fileSize: filesize,
185
download: async () => (url || info_url)
186
};
187
}
188
});
189
return {
190
id,
191
title,
192
thumbnail: thumb,
193
video,
194
audio: audioArray
195
};
196
}
197
exports.youtubedlv3 = youtubedlv3;
198
async function convert(_id, v_id, ftype, fquality) {
199
const params = {
200
type: 'youtube',
201
_id,
202
v_id,
203
ajax: '1',
204
token: '',
205
ftype,
206
fquality
207
};
208
const json = await (0, got_1.default)('https://www.y2mate.com/mates/convert', {
209
method: 'POST',
210
headers: {
211
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
212
cookie: '_ga=GA1.2.1405332118.1641699259; _gid=GA1.2.1117783105.1641699259; MarketGidStorage=%7B%220%22%3A%7B%7D%2C%22C702514%22%3A%7B%22page%22%3A2%2C%22time%22%3A1641701743540%7D%7D; _PN_SBSCRBR_FALLBACK_DENIED=1641701744162',
213
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
214
},
215
form: params
216
}).json();
217
const $ = cheerio_1.default.load(json.result);
218
const link = $('a[href]').attr('href');
219
if (link === 'https://app.y2mate.com/download')
220
throw new utils_js_1.ScraperError(JSON.stringify({ link, json: json }, null, 2));
221
return link;
222
}
223
function convertv2(url, v_id, ftype, fquality, token, timeExpire, fname) {
224
return new Promise(async (resolve, reject) => {
225
const params = {
226
v_id,
227
ftype,
228
fquality,
229
token,
230
timeExpire,
231
client: 'yt5s.com'
232
};
233
const resServer = await (0, got_1.default)(url, {
234
method: 'POST',
235
headers: {
236
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
237
origin: 'https://yt5s.com',
238
referer: 'https://yt5s.com/',
239
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
240
'X-Requested-Key': 'de0cfuirtgf67a'
241
},
242
form: params
243
}).json();
244
const server = resServer.c_server;
245
if (!server && ftype === 'mp3')
246
return resolve(server || resServer.d_url || '');
247
const payload = {
248
v_id,
249
ftype,
250
fquality,
251
fname,
252
token,
253
timeExpire
254
};
255
const results = await (0, got_1.default)(`${server}/api/json/convert`, {
256
method: 'POST',
257
form: payload
258
}).json();
259
if (results.statusCode === 200)
260
return resolve(results.result);
261
else if (results.statusCode === 300) {
262
try {
263
// @ts-ignore
264
const WebSocket = (await Promise.resolve().then(() => __importStar(require('ws')))).default;
265
const Url = new URL(server);
266
const WSUrl = `${/https/i.test(Url.protocol) ? 'wss:' : 'ws:'}//${Url.host}/sub/${results.jobId}?fname=yt5s.com`;
267
const ws = new WebSocket(WSUrl, undefined, {
268
headers: {
269
'Accept-Encoding': 'gzip, deflate, br',
270
Host: Url.host,
271
Origin: 'https://yt5s.com',
272
'Sec-WebSocket-Extensions': 'permessage-deflate; client_max_window_bits',
273
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
274
}
275
});
276
ws.on('message', function incoming(message) {
277
const msg = JSON.parse(message.toString());
278
if (msg.action === 'success') {
279
try {
280
ws.close();
281
}
282
catch (e) {
283
console.error(e);
284
}
285
ws.removeAllListeners('message');
286
return resolve(msg.url);
287
}
288
else if (msg.action === 'error')
289
return reject(msg);
290
});
291
}
292
catch (e) {
293
console.error(e);
294
return reject(e);
295
}
296
}
297
else
298
return reject(results);
299
});
300
}
301
//# sourceMappingURL=youtube.js.map
302