From 751cd2ef17870ee35f9902b71fc35f412ca189f7 Mon Sep 17 00:00:00 2001 From: Bubu <43925055+p3psi-boo@users.noreply.github.com> Date: Tue, 17 Dec 2024 22:14:03 +0800 Subject: [PATCH] feat(route): add techsir.com (#17840) --- lib/routes/techsir/index.ts | 67 +++++++++++++++++++++++++++++++++ lib/routes/techsir/namespace.ts | 8 ++++ 2 files changed, 75 insertions(+) create mode 100644 lib/routes/techsir/index.ts create mode 100644 lib/routes/techsir/namespace.ts diff --git a/lib/routes/techsir/index.ts b/lib/routes/techsir/index.ts new file mode 100644 index 00000000000000..a2ceb44ac128b5 --- /dev/null +++ b/lib/routes/techsir/index.ts @@ -0,0 +1,67 @@ +import { Route } from '@/types'; + +import cache from '@/utils/cache'; +import got from '@/utils/got'; +import { parseDate } from '@/utils/parse-date'; +import { load } from 'cheerio'; + +export const route: Route = { + path: '/', + categories: ['new-media'], + example: '/techsir', + url: 'www.techsir.com', + name: '最新资讯', + maintainers: ['p3psi-boo'], + handler, +}; + +async function handler() { + const baseUrl = 'https://techsir.com'; + + const response = await got({ + method: 'get', + url: baseUrl, + }); + + const $ = load(response.data); + + const alist = $( + '#kt_wrapper > div.main-content-area > div.container.container-fluid > div:nth-child(1) > div.col-xs-12.col-sm-6.col-md-8.post-listing > div.row.flex-row-fluid > div:nth-child(2) > div > div > div.card-body.pt-2 > div.d-flex' + ); + + const list = alist.toArray().map((item) => { + const $item = $(item); + + const path = $item.find('a').attr('href'); + const link = `${baseUrl}${path}`; + const title = $item.find('a').text(); + + return { + title, + link, + }; + }); + + const items = await Promise.all( + list.map((item) => + cache.tryGet(item.link, async () => { + const response = await got({ + method: 'get', + url: item.link, + }); + + const $ = load(response.data); + item.description = $('.kg-card-markdown').html(); + item.pubDate = parseDate($('time.time').text()); + item.author = $('a.author').text(); + return item; + }) + ) + ); + + return { + title: 'TechSir - 最新资讯', + link: baseUrl, + item: items, + }; +} diff --git a/lib/routes/techsir/namespace.ts b/lib/routes/techsir/namespace.ts new file mode 100644 index 00000000000000..b24fb4977c2050 --- /dev/null +++ b/lib/routes/techsir/namespace.ts @@ -0,0 +1,8 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: 'TechSir', + url: 'techsir.com', + description: '科技先生 TechSir.Com 是新酷科技创新与创业媒体', + lang: 'zh-CN', +};