@xct007/frieren-scraper
Version:
109 lines (108 loc) • 3.57 kB
JavaScript
;
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;