UNPKG

rsshub

Version:
108 lines (103 loc) 3.33 kB
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { t as timezone } from "./timezone-D8cuwzTY.mjs"; import { load } from "cheerio"; //#region lib/routes/hunau/utils/category-title.ts const categoryTitle = (type) => { let title; type = type.slice(0, 4).toLowerCase(); switch (type) { case "tzgg": title = "通知公告"; break; case "ggtz": title = "公告通知"; break; case "jwdt": title = "教务动态"; break; case "xyxw": title = "学院新闻"; break; case "jzxx": title = "讲座信息"; break; case "xzzq": title = "下载专区"; break; default: title = ""; } return title; }; var category_title_default = categoryTitle; //#endregion //#region lib/routes/hunau/utils/index-page.ts const indexPage = (page) => { return `index${page === "1" ? "" : `_${Number.parseInt(page) - 1}`}.html`; }; var index_page_default = indexPage; //#endregion //#region lib/routes/hunau/utils/news-content.ts async function newsContent(link, department = "") { try { const { data: response } = await got_default(link, { https: { rejectUnauthorized: false } }); const $ = load(response); let reg = /\d{4}(?:\/\d{2}){2}/; let element = ".newscontent"; if (department === "xky") { reg = /\d{4}-\d{2}-\d{2}/; element = ".content .edit"; } const extractDate = ($(".info").first().html()?.match(reg) || [])[0]; const pubDate = timezone(parseDate(extractDate, "YYYY-MM-DD", "zh-cn"), 8); const newsContent$1 = $(element).first(); newsContent$1.find("table").remove(); let description = newsContent$1.text().replaceAll(/\s+/g, ""); if (department === "gfxy") description = description.replace("点击下载文件:", ""); return { description, pubDate }; } catch { return { description: "", pubDate: null }; } } var news_content_default = newsContent; //#endregion //#region lib/routes/hunau/utils/common.ts async function getContent(ctx, { baseHost, baseCategory, baseType, baseTitle, baseDescription = "", baseDeparment = "", baseClass = "div.article_list ul li:has(a)" }) { const { category = baseCategory, type = baseType, page = "1" } = ctx.req.param(); const title = `${baseTitle} - ${category_title_default(category)}`; const description = baseDescription ? `${baseDescription} - ${category_title_default(category)}` : title; const baseURl = `${baseHost}${type ? `/${type}` : ""}/${category}`; const url = `${baseURl}/${index_page_default(page)}`; const { data: response } = await got_default(url); const $ = load(response); const list = $(baseClass).toArray().map((item) => { item = $(item); const a = item.find("a"); const href = a.attr("href"); return { title: a.text(), link: href.startsWith("./") && !href.endsWith(".pdf") ? `${baseURl}${href.replace("./", "/")}` : href }; }); return { title, description, link: url, item: await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const content = await news_content_default(item.link, baseDeparment); item.pubDate = content.pubDate; item.description = content.description; return item; }))) }; } var common_default = getContent; //#endregion export { common_default as t };