0.0.5 • Published 8 months ago
@agcplayer/core v0.0.5
@agcplayer/core
AGC Player 小组件通用模块
Usage
npm install @agcplayer/core --save-dev
pnpm install @agcplayer/core --save-dev
yarn install @agcplayer/core --save-devconst { request, success, error, Cheerio, Cache } = require("@agcplayer/core");
const cheerio = new Cheerio();
const cache = new Cache();
async function detail({ vod_id, type_id }) {
if (cache.get(`detail:${vod_id}`)) {
return success(cache.get(`detail:${vod_id}`));
}
try {
const response = await request(appConfig.playUrl(vod_id), {
headers
});
const html = await response.text();
const $ = cheerio.load(html);
const vod_name = unescapeEntity($(".movie-details .card-title").text());
const vod_pic = $(".poster-container .img-fluid").attr("src");
const vod_blurb = unescapeEntity($(".movie-description > p").text());
const vod_actor = $(".movie-info .movie-info-item")
.eq(0)
.find("p")
.text();
const vod_remarks = $(".poster-container .remarks-badge").text();
const vod_year = "";
const vod_link = [];
const similar = cache.get(`type:${type_id}:page:1`) || [];
$(".play-buttons .play-button").each((_, item) => {
const name = $(item).text();
const url = extractUrlFromButton($(item).attr("onclick"));
vod_link.push({
name,
url
});
});
const vod_info = {
vod_blurb,
vod_id,
vod_name,
vod_remarks,
vod_pic,
vod_year,
vod_actor,
vod_time: "",
vod_lang: "cn",
vod_area: "",
vod_class: "",
similar,
vod_sources: [
{
source_name: "选集列表",
vod_play_list: {
url_count: vod_link.length,
urls: vod_link
}
}
]
};
cache.set("detail:" + vod_id, vod_info);
return success(vod_info);
} catch (e) {
return error(e.message);
}
}