39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { Route } from '@/types';
|
||
import { baseUrl, parsePage } from './utils';
|
||
import puppeteer from '@/utils/puppeteer';
|
||
|
||
export const route: Route = {
|
||
path: '/sub/:channel',
|
||
categories: ['traditional-media'],
|
||
example: '/cw/sub/615',
|
||
parameters: { channel: '子頻道 ID,可在 URL 中找到' },
|
||
features: {
|
||
requireConfig: false,
|
||
requirePuppeteer: true,
|
||
antiCrawler: true,
|
||
supportBT: false,
|
||
supportPodcast: false,
|
||
supportScihub: false,
|
||
},
|
||
name: '子頻道',
|
||
maintainers: ['TonyRL'],
|
||
handler,
|
||
};
|
||
|
||
async function handler(ctx) {
|
||
const browser = await puppeteer();
|
||
|
||
const { $, items } = await parsePage('sub', browser, ctx);
|
||
|
||
await browser.close();
|
||
|
||
return {
|
||
title: $('head title').text(),
|
||
description: $('meta[name=description]').attr('content'),
|
||
link: `${baseUrl}/subchannel.action?idSubChannel=${ctx.req.param('channel')}`,
|
||
image: `${baseUrl}/assets_new/img/fbshare.jpg`,
|
||
language: $('meta[property="og:locale"]').attr('content'),
|
||
item: items,
|
||
};
|
||
}
|