rsshub
Version:
Make RSS Great Again!
108 lines (103 loc) • 3.33 kB
JavaScript
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 };