Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MR414N-ID
GitHub Repository: MR414N-ID/botku2
Path: blob/master/node_modules/@bochilteam/scraper/lib/esm/social-media/facebook.js
1126 views
1
import cheerio from 'cheerio';
2
import got from 'got';
3
import { randomBytes } from '../encryptions/crypto.js';
4
import { ScraperError, decodeSnapApp } from '../utils.js';
5
// only support download video yet
6
export async function facebookdl(url) {
7
/* eslint no-mixed-spaces-and-tabs: ["error", "smart-tabs"] */
8
const { data: { id, thumbnail, duration, a, av, v } } = await got('https://youtube4kdownloader.com/ajax/getLinks.php', {
9
headers: {
10
'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'
11
},
12
searchParams: {
13
video: url,
14
rand: randomBytes(13)
15
}
16
}).json();
17
const result = (a || [])
18
.concat(av)
19
.concat(v)
20
.map(({ size, ext, url, quality, vcodec, fid }) => {
21
const isVideo = ext === 'mp4';
22
const isWebm = ext === 'webm';
23
return {
24
size,
25
ext,
26
url,
27
quality,
28
vcodec,
29
fid,
30
isVideo: isVideo || isWebm,
31
isAudio: /audio/i.test(quality || '') || (isVideo && !isWebm)
32
};
33
// ext webm video without audio
34
});
35
if (!result.length)
36
throw new ScraperError(`Can't download!\n${JSON.stringify({ id, thumbnail, duration, a, av, v }, null, 2)}`);
37
return {
38
id,
39
thumbnail,
40
duration,
41
result
42
};
43
}
44
export async function facebookdlv2(url) {
45
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
46
const params = {
47
url: encodeURI(url)
48
};
49
const res = await got
50
.post('https://snapsave.app/action.php', {
51
headers: {
52
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
53
'accept-encoding': 'gzip, deflate, br',
54
'accept-language': 'en-US,en;q=0.9',
55
'content-type': 'application/x-www-form-urlencoded',
56
origin: 'https://snapsave.app',
57
referer: 'https://snapsave.app/',
58
'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'
59
},
60
form: params
61
}).text();
62
const decodeParams = (_b = (_a = res.split('))</script>')[0]
63
.split('decodeURIComponent(escape(r))}(')[1]) === null || _a === void 0 ? void 0 : _a.split(',')) === null || _b === void 0 ? void 0 : _b.map(v => v.replace(/^"/, '')
64
.replace(/"$/, '').trim());
65
let html;
66
if (!Array.isArray(decodeParams) || decodeParams.length !== 6)
67
html = (_c = (typeof res === 'string' ? JSON.parse(res) : res)) === null || _c === void 0 ? void 0 : _c.data;
68
else {
69
const decode = decodeSnapApp(...decodeParams);
70
html = (_j = (_h = (_g = (_f = (_e = (_d = decode === null || decode === void 0 ? void 0 : decode.split('("download-section").innerHTML = "')[1]) === null || _d === void 0 ? void 0 : _d.split('; parent.document.getElementById("inputData").remove();')[0]) === null || _e === void 0 ? void 0 : _e.split('</style><section class=')[1].split('"> ')) === null || _f === void 0 ? void 0 : _f.slice(1)) === null || _g === void 0 ? void 0 : _g.map(v => (v + '">').trim()).join()) === null || _h === void 0 ? void 0 : _h.split('</section><div class=')[0]) === null || _j === void 0 ? void 0 : _j.replace(/\\(\\)?/g, '');
71
}
72
if (!html)
73
throw new ScraperError(`Can't parse encode params!\n${res}`);
74
const result = [];
75
const $ = cheerio.load(html);
76
$('table.table > tbody > tr').each(function () {
77
var _a, _b;
78
const el = $(this).find('td');
79
if (/tidak|no/i.test(el.eq(1).text())) {
80
const quality = (_b = (_a = el.eq(0).text().split('(')) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.trim();
81
const url = el.eq(2).find('a[href]').attr('href');
82
if (url)
83
result.push({ quality, url });
84
}
85
});
86
if (!result.length)
87
throw new ScraperError(`Can't download!\n${$.html()}`);
88
return {
89
id: ((_l = (_k = $('div.media-content > div.content > p > strong')
90
.text()
91
.split('#')) === null || _k === void 0 ? void 0 : _k[1]) === null || _l === void 0 ? void 0 : _l.trim()) || '',
92
title: $('div.media-content > div.content > p > strong').text(),
93
description: $('div.media-content > div.content > p > span.video-des').text(),
94
thumbnail: $('figure > p.image > img[src]').attr('src'),
95
result
96
};
97
}
98
export async function facebookdlv3(url) {
99
var _a;
100
const payload = {
101
url
102
};
103
const text = await got('https://www.getfvid.com/downloader', {
104
method: 'POST',
105
headers: {
106
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
107
'accept-encoding': 'gzip, deflate, br',
108
'accept-language': 'en-US,en;q=0.9',
109
'content-type': 'application/x-www-form-urlencoded',
110
cookie: '_ga=GA1.2.887753826.1642391325; _gid=GA1.2.2022692773.1642391325; __gads=ID=4ea88e3817c8d71b-22332defffcf0045:T=1642391326:RT=1642391326:S=ALNI_MY3oJyiEG_b8KXZBJ7RqvN2Mn8wbw; XSRF-TOKEN=eyJpdiI6ImdNUElWWU83S01jOTdZeitCUWdkWXc9PSIsInZhbHVlIjoiTGxnaE9oRVJTKzA5NDBncUtBa0xEdCtqNHBJXC9ZMVFPR1U2RnBSYUFzZHltWElZS2VtVUltUTJ2TjB5V3pEeTYzRUNMcENjMURGSkhBXC9OUitpcjMrZz09IiwibWFjIjoiMTViZTNjZDI3ZTZmOTk2ZWRjOWM1NTA5MTU2NDFhYWFlMjIxNTQxZTJlYjliMjJiMzE3YzlkNGMxODc2NjhmMCJ9; laravel_session=eyJpdiI6IjhZbElIRmpLSkVqZGZpQXJoK2MzVHc9PSIsInZhbHVlIjoianBSSFhPb2t0RFY4Q1wvYkk1S3pxMUNxXC82b0U1NHZROTVpS1Z4dGhES3ZTYTNsenJUSXpwcWNMVDkwWFk4OUY1TitGNmlDK1RXbTVyREVzcHVoRnRidz09IiwibWFjIjoiY2U1YzI2ODZlYWI2NzFkZDU1NTQ5Zjk0M2NmMDc2MTZhY2M3ODQxYjljZGUzMDQwMTYxZGQwZGYxMDM3NDMyZSJ9; __cf_bm=ephRNXRqwgrTB4SmHlsudy886EfsR2Ns2KtXVBnph4I-1642392732-0-AXtTUW5HRNQUeUcTJPhJTOPlMcjBFmMyoLKYOnxrDZ6Fa06XaJ4pMNW9arLg4zco/ef+ji00IV8NZb0nGOAKgfg=; _gat=1; __atuvc=6%7C3; __atuvs=61e4e71d2b803588005; __atssc=google%3B3',
111
origin: 'https://www.getfvid.com',
112
referer: 'https://www.getfvid.com/',
113
'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'
114
},
115
form: payload
116
}).text();
117
const $ = cheerio.load(text);
118
const row = $('div.card > div.row > div');
119
const thumbnail = (_a = /background-image: url\((.*?)\);/i.exec(row.eq(0).find('a[href]').attr('style'))) === null || _a === void 0 ? void 0 : _a[1];
120
const result = [];
121
row.find('.btns-download > p > a[href]').each(function () {
122
var _a;
123
const el = $(this);
124
const url = el.attr('href');
125
const info = el.text().trim();
126
const isAudio = /audio/i.test(info);
127
const quality = isAudio ? 'audio' : (_a = /Download in (\w+) Quality/i.exec(info)) === null || _a === void 0 ? void 0 : _a[1];
128
const isVideo = quality !== 'audio';
129
if (url) {
130
result.push({
131
url,
132
quality,
133
isAudio,
134
isVideo
135
});
136
}
137
});
138
if (!result.length)
139
throw new ScraperError(`Can't download!\n${$.html()}`);
140
return {
141
title: $('#title_video').val(),
142
thumbnail,
143
result
144
};
145
}
146
//# sourceMappingURL=facebook.js.map
147