UNPKG

rsshub

Version:
54 lines (46 loc) 1.52 kB
import { Route } from '@/types'; import ofetch from '@/utils/ofetch'; import { parseDate } from '@/utils/parse-date'; import type { Context } from 'hono'; import { Value } from './types'; export const route: Route = { path: '/share/:shortId', categories: ['other'], example: '/dingshao/share/FzFypN', parameters: { shortId: '频道 ID', }, radar: [ { source: ['www.dingshao.cn/share/:shortId'], }, ], name: '频道', maintainers: ['TonyRL'], handler, }; const baseUrl = 'https://www.dingshao.cn'; async function handler(ctx: Context) { const { shortId } = ctx.req.param(); const response = await ofetch<Value>(`${baseUrl}/api/v2/channel/get-channel-and-recent-messages-by-short-id`, { method: 'POST', body: { shortId, }, }); const items = response.value.bundle.channelMessages.map((message) => ({ title: message.excerpt.split('\n')[0], description: message.content, pubDate: parseDate(message.publishedAt), category: message.tags, link: `${baseUrl}/channel/${response.value.channel}/${message.id}`, })); const channelProfile = response.value.bundle.channels.find((channel) => channel.id === response.value.channel)?.profile; return { title: channelProfile?.name, description: channelProfile?.description, link: `${baseUrl}/share/${shortId}`, image: channelProfile?.image, item: items, }; }