UNPKG

rsshub

Version:
141 lines (137 loc) 4.95 kB
import "./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 "./helpers-DxBp0Pty.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/hitsz/due.ts const handler = async (ctx) => { const baseUrl = "http://due.hitsz.edu.cn"; const categoryGroups = { teaching: [ "jwxw/jwgl", "jwxw/kwgl", "jwxw/zcgl", "jwxw/xkgl", "jwxw/cjgl" ], studentStatus: ["jwxw/xjgl_b_", "jwxw/xjgl_y_"], teachingSupport: ["jwxw/jxxxh", "jwxw/jzxj"], education: [ "xwgl/bksxw", "xwgl/ssxwpy/ktyzj", "xwgl/bsxwpy/qqhj1" ] }; const { type = "all" } = ctx.req.param(); const validType = Object.keys(categoryGroups).includes(type) ? type : "all"; const categories = validType === "all" ? Object.values(categoryGroups).flat() : categoryGroups[validType]; const pagePromises = categories.map(async (category) => { const pageUrl = new URL(`${category}.htm`, baseUrl).href; try { return await got_default(pageUrl); } catch { return null; } }); return { title: "哈尔滨工业大学(深圳)教务部-教务学务与学位管理-所有栏目新闻汇总", description: "哈尔滨工业大学(深圳)教务部中教务学务和学位管理所有栏目的最新新闻汇总,包括教务管理、考务管理、注册管理、选课管理、成绩管理、学籍管理、教学信息化、奖助学金、本科生新闻、硕士学位培养、博士学位培养等", link: "http://due.hitsz.edu.cn/jwxw/jwgl.htm", item: (await Promise.all(pagePromises)).flatMap((response, i) => { if (!response) return []; const category = categories[i]; const $ = load(response.data); return $("ul.box-main-list li, .list-main li, .list-main-modular li").toArray().map((el) => { const $el = $(el); const linkUrl = $el.find("a").attr("href"); if (!linkUrl) return null; const title = $el.find("span").text().trim(); const pubDateStr = $el.find("label").text().trim(); return { title, link: new URL(linkUrl, baseUrl).href, pubDate: pubDateStr ? timezone(parseDate(pubDateStr), 8) : null, category, description: title }; }).filter(Boolean); }).filter(Boolean).filter((item) => !item.title.includes("统一身份认证平台")), author: "哈尔滨工业大学(深圳)教务部" }; }; const route = { path: "/due/general/:type?", name: "教务部教务学务与学位管理所有栏目", url: "due.hitsz.edu.cn", maintainers: ["guohuiyuan"], handler, example: "/hitsz/due/general", parameters: { type: { description: "栏目类型筛选,默认all(所有栏目)", options: [ { value: "all", label: "所有栏目" }, { value: "teaching", label: "教务核心业务" }, { value: "studentStatus", label: "学籍相关" }, { value: "teachingSupport", label: "教学支持" }, { value: "education", label: "学生培养" } ], default: "all" } }, description: `哈尔滨工业大学(深圳)教务部中教务学务和学位管理所有栏目的最新新闻汇总。 #### 栏目分组说明 支持按业务类型筛选,使用路径参数指定分组: - \`type=teaching\` - 教务核心业务:教务管理、考务管理、注册管理、选课管理、成绩管理 - \`type=studentStatus\` - 学籍相关:本科生学籍管理、研究生学籍管理 - \`type=teachingSupport\` - 教学支持:教学信息化、奖助学金 - \`type=education\` - 学生培养:本科生新闻、硕士学位培养、博士学位培养 - \`type=all\` 或省略 - 所有栏目(默认) #### 包含栏目: - [教务管理](http://due.hitsz.edu.cn/jwxw/jwgl.htm) - [考务管理](http://due.hitsz.edu.cn/jwxw/kwgl.htm) - [注册管理](http://due.hitsz.edu.cn/jwxw/zcgl.htm) - [选课管理](http://due.hitsz.edu.cn/jwxw/xkgl.htm) - [成绩管理](http://due.hitsz.edu.cn/jwxw/cjgl.htm) - [学籍管理(本)](http://due.hitsz.edu.cn/jwxw/xjgl_b_.htm) - [学籍管理(研)](http://due.hitsz.edu.cn/jwxw/xjgl_y_.htm) - [教学信息化](http://due.hitsz.edu.cn/jwxw/jxxxh.htm) - [奖助学金](http://due.hitsz.edu.cn/jwxw/jzxj.htm) - [本科生新闻](http://due.hitsz.edu.cn/xwgl/bksxw.htm) - [硕士学位培养](http://due.hitsz.edu.cn/xwgl/ssxwpy/ktyzj.htm) - [博士学位培养](http://due.hitsz.edu.cn/xwgl/bsxwpy/qqhj1.htm)`, categories: ["university"], features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportRadar: true, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["due.hitsz.edu.cn/jwxw/jwgl.htm"], target: "/hitsz/due/general" }] }; //#endregion export { handler, route };