diff --git a/lib/routes/nwpu/jsj.ts b/lib/routes/nwpu/jsj.ts
new file mode 100644
index 000000000000..c6fdf8352190
--- /dev/null
+++ b/lib/routes/nwpu/jsj.ts
@@ -0,0 +1,74 @@
+import { load } from 'cheerio';
+
+import type { Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+export const route: Route = {
+ path: '/jsj/:channelId?',
+ categories: ['university'],
+ example: '/nwpu/jsj/1599',
+ parameters: { channelId: '栏目 ID,默认为 1599(通知公告)' },
+ features: {
+ requireConfig: false,
+ requirePuppeteer: false,
+ antiCrawler: false,
+ supportBT: false,
+ supportPodcast: false,
+ supportScihub: false,
+ },
+ radar: [
+ {
+ source: ['jsj.nwpu.edu.cn/snew/list.jsp'],
+ target: '/jsj/1599',
+ },
+ ],
+ name: '计算机学院通知公告',
+ maintainers: [],
+ handler,
+};
+
+async function handler(ctx) {
+ const channelId = ctx.req.param('channelId') || '1599';
+ const baseUrl = 'https://jsj.nwpu.edu.cn';
+ const listUrl = `${baseUrl}/snew/list.jsp`;
+
+ const response = await ofetch(listUrl, {
+ query: {
+ urltype: 'tree.TreeTempUrl',
+ wbtreeid: channelId,
+ },
+ });
+
+ const $ = load(response);
+
+ // 内容在
下的 - 中,格式为:
- 日期标题
+ const items = $('div.cno-right > UL > LI')
+ .toArray()
+ .map((el) => {
+ const $el = $(el);
+ const span = $el.find('SPAN').first();
+ const a = $el.find('A').first();
+ const dateText = span.text().trim();
+ // 链接格式: ../info/1599/29115.htm
+ const href = a.attr('href');
+ if (!href) {
+ return null;
+ }
+ // 转换为完整 URL: https://jsj.nwpu.edu.cn/info/1599/29115.htm
+ const link = `${baseUrl}/${href.replaceAll('../', '')}`;
+
+ return {
+ title: a.text().trim(),
+ link,
+ pubDate: dateText ? parseDate(dateText) : undefined,
+ };
+ })
+ .filter((item): item is { title: string; link: string; pubDate: Date | undefined } => item !== null && !!item.title);
+
+ return {
+ title: '西北工业大学计算机学院通知公告',
+ link: `${baseUrl}/snew/list.jsp?urltype=tree.TreeTempUrl&wbtreeid=${channelId}`,
+ item: items,
+ };
+}
diff --git a/lib/routes/nwpu/namespace.ts b/lib/routes/nwpu/namespace.ts
new file mode 100644
index 000000000000..625addf73128
--- /dev/null
+++ b/lib/routes/nwpu/namespace.ts
@@ -0,0 +1,6 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: '西北工业大学',
+ url: 'nwpu.edu.cn',
+};
\ No newline at end of file