UNPKG

rsshub

Version:
70 lines (63 loc) 2.12 kB
import { Route } from '@/types'; import cache from '@/utils/cache'; import got from '@/utils/got'; import { parseDate } from '@/utils/parse-date'; import timezone from '@/utils/timezone'; const typeMap = { 0: '全部', 1: '其他', 2: '规则变更', }; /** * * @param ctx {import('koa').Context} */ export const route: Route = { path: '/notice/:type?', categories: ['programming'], example: '/dangdang/notice/1', parameters: { type: '公告分类,默认为全部' }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, }, name: '公告', maintainers: ['353325487'], handler, description: `| 类型 | type | | -------- | ---- | | 全部 | 0 | | 其他 | 1 | | 规则变更 | 2 |`, }; async function handler(ctx) { const type = ctx.req.param('type'); const url = `https://open.dangdang.com/op-api/developer-platform/document/menu/list?categoryId=3&type=${type > 0 ? typeMap[type] : ''}`; const response = await got({ method: 'get', url }); const list = response.data.data.documentMenu.map((item) => ({ title: item.title, description: item.type, documentId: item.documentId, source: `https://open.dangdang.com/op-api/developer-platform/document/info/get?document_id=${item.documentId}`, link: `https://open.dangdang.com/home/notice/message/1/${item.documentId}`, pubDate: timezone(parseDate(item.modifyTime), +8), })); const result = await Promise.all( list.map((item) => cache.tryGet(item.source, async () => { const itemResponse = await got(item.source); item.description = itemResponse.data.data.documentContentList[0].content; return item; }) ) ); return { title: `当当开放平台 - ${typeMap[type] || typeMap[0]}`, link: `https://open.dangdang.com/home/notice/message/1`, item: result, }; }