proxyraye-nextjs/src/utils/scrape/gallery.ts

50 lines
1.3 KiB
TypeScript

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<GalleryData[]> => {
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
}