@bochilteam/scraper-instagram
Version:
Instagram scraper module
42 lines (41 loc) • 1.38 kB
JavaScript
import got from 'got';
import cheerio from 'cheerio';
import { DEFAULT_HEADERS } from './constant.js';
import { InstagramdlArgsSchema, InstagramdlSchema } from '../types/instagramdl-v1.js';
export default async function instagramdl(url) {
InstagramdlArgsSchema.parse(arguments);
const form = {
recaptchaToken: '',
q: url,
t: 'media',
lang: 'id'
};
const data = await got.post('https://v3.igdownloader.app/api/ajaxSearch', {
headers: {
...DEFAULT_HEADERS,
'content-type': 'application/x-www-form-urlencoded',
'origin': 'https://igdownloader.app',
'referer': 'https://igdownloader.app/'
},
form
}).json();
if (data.status !== 'ok') {
throw data;
}
const $ = cheerio.load(data.data);
const results = [];
$('.download-items').each(function () {
const $el = $(this);
const $img = $el.find('.download-items__thumb > img');
const thumbnail = $img.attr('data-src') || $img.attr('src');
const $a = $el.find('.download-items__btn > a');
const url = $a.attr('href');
const type = /video/i.test($a.find('span').text()) ? 'video' : 'image';
results.push({
thumbnail,
url,
type
});
});
return InstagramdlSchema.parse(results);
}