UNPKG

@xct007/frieren-scraper

Version:
109 lines (108 loc) 3.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.detail = exports.search = exports.latest = void 0; const Utils_1 = require("../Utils"); const Constant_1 = require("../Constant"); async function latest() { try { const { data } = await Utils_1.Axios.get(Constant_1.BokepSinBaseUrl).catch((e) => e?.response); const $ = (0, Utils_1.Cheerio)(data); const _temp = []; $("#content > div > div > div > div > div > div").each((i, e) => { const title = $(e).find("a.thumb").attr("title"); const views = $(e).find("span.views-number").text().trim(); const duration = $(e).find("span.duration").text().trim(); const url = $(e).find("a.thumb").attr("href"); const thumbnail = $(e).find("a.thumb > img").attr("data-src"); _temp.push({ title, views, duration, url, thumbnail }); }); if (Array.isArray(_temp) && _temp.length) { return _temp; } else { throw new Error("Results is not an array"); } } catch (e) { return { error: true, message: String(e), }; } } exports.latest = latest; async function search(query) { try { const { data } = await Utils_1.Axios.request({ baseURL: Constant_1.BokepSinBaseUrl, url: `/search/${query}`, }).catch((e) => e?.response); const $ = (0, Utils_1.Cheerio)(data); const _temp = []; $("div.row.no-gutters > div").each((i, e) => { const title = $(e).find("a.thumb").attr("title"); const views = $(e).find("span.views-number").text().trim(); const duration = $(e).find("span.duration").text().trim(); const url = $(e).find("a.thumb").attr("href"); const thumbnail = $(e).find("a.thumb > img").attr("data-src"); _temp.push({ title, views, duration, url, thumbnail }); }); if (Array.isArray(_temp) && _temp.length) { return _temp; } else { throw new Error("Results is not an array"); } } catch (e) { return { error: true, message: String(e), }; } } exports.search = search; async function detail(url) { if (!url.includes(Constant_1.BokepSinBaseUrl)) { return { error: true, message: `Invalid ${Constant_1.BokepSinBaseUrl} base url`, }; } try { const { data } = await Utils_1.Axios.get(url).catch((e) => e?.response); const $ = (0, Utils_1.Cheerio)(data); const views = $(".single-video-infos") .find(".views-number") .text() .trim(); const index = $(".video-player"); const title = $(index) .find("meta[itemprop='name']") .attr("content"); const duration = $(index) .find("meta[itemprop='duration']") .attr("content") .replace(/[^DHMS\0-9]/g, ""); const thumbnail = $(index) .find("meta[itemprop='thumbnailUrl']") .attr("content"); const embed = $(index) .find("meta[itemprop='embedURL']") .attr("content"); return { title, views, duration, thumbnail, embed, }; } catch (e) { return { error: true, message: String(e), }; } } exports.detail = detail;