UNPKG

@bochilteam/scraper-instagram

Version:
42 lines (41 loc) 1.38 kB
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); }