UNPKG

rsshub

Version:
75 lines (73 loc) 2.36 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import path from "node:path"; import { load } from "cheerio"; //#region lib/routes/163/open/vip.ts init_esm_shims(); const route = { path: "/open/vip", categories: ["study"], example: "/163/open/vip", parameters: {}, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["vip.open.163.com/"] }], name: "精品课程", maintainers: ["hoilc"], handler, url: "vip.open.163.com/" }; async function handler() { const url = "https://vip.open.163.com"; const $ = load((await got_default(url)).data); const initialState = JSON.parse($("script").text().match(/window\.__INITIAL_STATE__=(.*);\(function\(\){var/)[1]); const list = Object.values(initialState.courseindex.myModules).flatMap((mod) => mod.contents.map((item) => ({ title: `${item.title} - ${item.subtitle}`, author: item.authorName, pubDate: parseDate(item.publishTime, "x"), link: `${url}/courses/${item.courseUid}/`, courseUid: item.courseUid, category: mod.name }))); return { title: "网易公开课 - 精品课程", link: url, item: await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const { data: { data } } = await got_default.post(`${url}/open/trade/pc/course/getCourseInfo.do`, { form: { courseUid: item.courseUid, version: 1 } }); const $$1 = load(data.courseInfo.description, null, false); $$1("img").each((_, img) => { img.attribs.src = img.attribs.src.split("?")[0]; delete img.attribs.width; }); item.category = [ item.category, data.courseInfo.firstClassifyName, data.courseInfo.secondClassifyName ]; item.description = art(path.join(__dirname, "templates/open-c69043c4.art"), { data, description: $$1.html() }); return item; }))) }; } //#endregion export { route };