import { XVIDEOS_BASE_URL } from '@/constants/urls'; import { GalleryData } from '@/meta/data'; import axios, { AxiosError } from 'axios'; import * as cheerio from "cheerio"; import { getHeaders } from './headers'; interface FetchParams { baseUrl?: string query?: string } export const fetchGalleryData = async (params?: FetchParams): Promise => { let data: GalleryData[] = []; const reqHeaders = getHeaders() const queryUrl = `${(params && params.baseUrl) ?? XVIDEOS_BASE_URL}${params && params.query ? '/?k=' + params.query : ''}` await axios.get(queryUrl, reqHeaders) .then(response => { const html = response.data; const $ = cheerio.load(html); const thumbs = $(".thumb-block"); thumbs.map((key, thumb) => { const videoUrl = $(thumb).find(".thumb a").attr("href") const imgUrl = $(thumb).find(".thumb img").attr("data-src") const text = $(thumb).find(".thumb-under a").attr("title") videoUrl && imgUrl && text && data.push({ videoUrl, imgUrl, text }) }) }).catch((error: AxiosError) => { // handle errors }); return data }