From ef861aed0507888237460e2562be5e2b7b0b58b7 Mon Sep 17 00:00:00 2001 From: dxxxxxxx <31104430+d380025303@users.noreply.github.com> Date: Sat, 26 Apr 2025 16:32:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=99=AB=E9=83=A8=E8=90=BD=20(#154)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: coolapk fixed #138 * feat: 虫部落 --------- Co-authored-by: ourongxing feat: add source 虫部落 hot and latest chore: use rss to fetch 虫部落 latest --- pnpm-lock.yaml | 24 +++++++++++++++++------- public/icons/chongbuluo.png | Bin 0 -> 17460 bytes server/glob.d.ts | 1 + server/sources/chongbuluo.ts | 32 ++++++++++++++++++++++++++++++++ shared/pinyin.json | 4 +++- shared/pre-sources.ts | 19 +++++++++++++++++++ shared/sources.json | 26 ++++++++++++++++++++++++++ 7 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 public/icons/chongbuluo.png create mode 100644 server/sources/chongbuluo.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad5a7e6..302cfb7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3262,6 +3262,9 @@ packages: destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -4021,8 +4024,8 @@ packages: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - h3-nightly@1.15.1-20250222-111608-d1c00fc: - resolution: {integrity: sha512-V2DeFol/CJ4QLimURS59juWk4b+XY2qhSlyhi0U3WnqN3PKLAIpLtRn340MHQf53ldMhP4oQA/SrJG9hPOcnLA==} + h3-nightly@1.15.2-20250418-133010-0c9b276: + resolution: {integrity: sha512-s7CE2w7A7EqAdC/0WIAbNDAuvZB3afNCLXyv3Yvflcih3uKki4mRXMuw1Mq4bvykh0uJfAPZTF1GpOeca4xQ6A==} h3@1.15.1: resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} @@ -5862,6 +5865,9 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -9426,6 +9432,8 @@ snapshots: destr@2.0.3: {} + destr@2.0.5: {} + destroy@1.2.0: {} detect-libc@1.0.3: {} @@ -10439,16 +10447,16 @@ snapshots: dependencies: duplexer: 0.1.2 - h3-nightly@1.15.1-20250222-111608-d1c00fc: + h3-nightly@1.15.2-20250418-133010-0c9b276: dependencies: cookie-es: 1.2.2 crossws: 0.3.4 defu: 6.1.4 - destr: 2.0.3 + destr: 2.0.5 iron-webcrypto: 1.2.1 node-mock-http: 1.0.0 radix3: 1.1.2 - ufo: 1.5.4 + ufo: 1.6.1 uncrypto: 0.1.3 h3@1.15.1: @@ -11178,7 +11186,7 @@ snapshots: fs-extra: 11.3.0 globby: 14.1.0 gzip-size: 7.0.0 - h3: h3-nightly@1.15.1-20250222-111608-d1c00fc + h3: h3-nightly@1.15.2-20250418-133010-0c9b276 hookable: 5.5.3 httpxy: 0.1.7 ioredis: 5.5.0 @@ -12472,6 +12480,8 @@ snapshots: ufo@1.5.4: {} + ufo@1.6.1: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -12743,7 +12753,7 @@ snapshots: dependencies: consola: 3.4.0 defu: 6.1.4 - h3: h3-nightly@1.15.1-20250222-111608-d1c00fc + h3: h3-nightly@1.15.2-20250418-133010-0c9b276 nitropack: nitro-go@0.0.1(better-sqlite3@11.8.1)(typescript@5.8.2) vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) transitivePeerDependencies: diff --git a/public/icons/chongbuluo.png b/public/icons/chongbuluo.png new file mode 100644 index 0000000000000000000000000000000000000000..eee2aaffafb678520b8226153cb97830e71320d3 GIT binary patch literal 17460 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 E4+_jc!~g&Q literal 0 HcmV?d00001 diff --git a/server/glob.d.ts b/server/glob.d.ts index 94311df..dab77e1 100644 --- a/server/glob.d.ts +++ b/server/glob.d.ts @@ -5,6 +5,7 @@ declare module 'glob:./sources/{*.ts,**/index.ts}' { export const baidu: typeof import('./sources/baidu') export const bilibili: typeof import('./sources/bilibili') export const cankaoxiaoxi: typeof import('./sources/cankaoxiaoxi') + export const chongbuluo: typeof import('./sources/chongbuluo') export const cls: typeof import('./sources/cls/index') export const coolapk: typeof import('./sources/coolapk/index') export const douyin: typeof import('./sources/douyin') diff --git a/server/sources/chongbuluo.ts b/server/sources/chongbuluo.ts new file mode 100644 index 0000000..d3d812a --- /dev/null +++ b/server/sources/chongbuluo.ts @@ -0,0 +1,32 @@ +import type { NewsItem } from "@shared/types" +import * as cheerio from "cheerio" + +const hot = defineSource(async () => { + const baseUrl = "https://www.chongbuluo.com/" + const html: string = await myFetch(`${baseUrl}forum.php?mod=guide&view=hot`) + const $ = cheerio.load(html) + const news: NewsItem[] = [] + + $(".bmw table tr").each((_, elem) => { + const xst = $(elem).find(".common .xst").text() + const url = $(elem).find(".common a").attr("href") + news.push({ + id: baseUrl + url, + url: baseUrl + url, + title: xst, + extra: { + hover: xst, + }, + }) + }) + + return news +}) + +const latest = defineRSSSource("https://www.chongbuluo.com/forum.php?mod=rss&view=newthread") + +export default defineSource({ + "chongbuluo": hot, + "chongbuluo-hot": hot, + "chongbuluo-latest": latest, +}) diff --git a/shared/pinyin.json b/shared/pinyin.json index 153b23a..445c1df 100644 --- a/shared/pinyin.json +++ b/shared/pinyin.json @@ -42,5 +42,7 @@ "nowcoder": "niuke", "sspai": "shaoshupai", "juejin": "xitujuejin", - "ifeng": "fenghuangwang-redianzixun" + "ifeng": "fenghuangwang-redianzixun", + "chongbuluo-latest": "chongbuluo-zuixin", + "chongbuluo-hot": "chongbuluo-zuire" } \ No newline at end of file diff --git a/shared/pre-sources.ts b/shared/pre-sources.ts index d7dddd9..efe00a3 100644 --- a/shared/pre-sources.ts +++ b/shared/pre-sources.ts @@ -379,6 +379,25 @@ export const originSources = { title: "热点资讯", home: "https://www.ifeng.com", }, + "chongbuluo": { + name: "虫部落", + column: "china", + color: "green", + home: "https://www.chongbuluo.com", + sub: { + latest: { + title: "最新", + interval: Time.Common, + home: "https://www.chongbuluo.com/forum.php?mod=guide&view=newthread", + }, + hot: { + title: "最热", + type: "hottest", + interval: Time.Common, + home: "https://www.chongbuluo.com/forum.php?mod=guide&view=hot", + }, + }, + }, } as const satisfies Record export function genSources() { diff --git a/shared/sources.json b/shared/sources.json index 0ffe8f4..4b1da60 100644 --- a/shared/sources.json +++ b/shared/sources.json @@ -475,5 +475,31 @@ "home": "https://www.ifeng.com", "color": "red", "interval": 600000 + }, + "chongbuluo": { + "redirect": "chongbuluo-latest", + "name": "虫部落", + "column": "china", + "home": "https://www.chongbuluo.com/forum.php?mod=guide&view=newthread", + "color": "green", + "interval": 1800000, + "title": "最新" + }, + "chongbuluo-latest": { + "name": "虫部落", + "column": "china", + "home": "https://www.chongbuluo.com/forum.php?mod=guide&view=newthread", + "color": "green", + "interval": 1800000, + "title": "最新" + }, + "chongbuluo-hot": { + "name": "虫部落", + "type": "hottest", + "column": "china", + "home": "https://www.chongbuluo.com/forum.php?mod=guide&view=hot", + "color": "green", + "interval": 1800000, + "title": "最热" } } \ No newline at end of file