2023-04-18 11:24:00 +07:00
|
|
|
import { scrapeContent } from "../../scraper/xhamster/xhamsterGetController";
|
|
|
|
|
import c from "../../utils/options";
|
|
|
|
|
import { load } from "cheerio";
|
2026-05-14 04:57:54 +07:00
|
|
|
import { lust } from "../../LustPress";
|
2023-04-18 11:24:00 +07:00
|
|
|
|
2026-05-14 04:57:54 +07:00
|
|
|
export async function randomXhamster() {
|
2023-04-18 11:24:00 +07:00
|
|
|
try {
|
|
|
|
|
const resolve = await lust.fetchBody(`${c.XHAMSTER}/newest`);
|
|
|
|
|
const $ = load(resolve);
|
2026-03-12 16:21:04 +05:30
|
|
|
|
|
|
|
|
const videoLinks = $("div.thumb-list__item[data-video-id]")
|
|
|
|
|
.map((_, el) => {
|
|
|
|
|
const href = $(el).find("a[data-role='thumb-link']").attr("href");
|
|
|
|
|
return href && href.includes("/videos/") ? href : null;
|
|
|
|
|
})
|
|
|
|
|
.get()
|
|
|
|
|
.filter(Boolean);
|
|
|
|
|
|
|
|
|
|
// Select a random video URL from the list
|
|
|
|
|
const randomIndex = Math.floor(Math.random() * videoLinks.length);
|
|
|
|
|
const randomUrl = videoLinks[randomIndex];
|
|
|
|
|
|
|
|
|
|
const data = await scrapeContent(randomUrl);
|
|
|
|
|
|
2026-05-14 04:57:54 +07:00
|
|
|
return data;
|
2023-04-18 11:24:00 +07:00
|
|
|
} catch (err) {
|
|
|
|
|
const e = err as Error;
|
2026-05-14 04:57:54 +07:00
|
|
|
throw new Error(e.message);
|
2023-04-18 11:24:00 +07:00
|
|
|
}
|
|
|
|
|
}
|
2026-05-14 04:57:54 +07:00
|
|
|
|