Commit Graph

8344 Commits

Author SHA1 Message Date
Stephen Zhou 69a859ca9d
refactor(package): simple type solution 2025-11-27 01:21:20 +08:00
Stephen Zhou bc86bda10d
fix(package): allow empty conf 2025-11-26 21:48:35 +08:00
Stephen Zhou b4a2aa5e70
fix(core): package mode (#20580) 2025-11-26 20:44:18 +08:00
Cason Kervis 87bb77ca4c
fix(route/sspai/index): fix order (#20575) 2025-11-26 20:12:05 +08:00
Ethan Shen 68fdac3ea2
feat(route): add 中国百货商业协会 (#20571)
* feat(route): add 中国百货商业协会

* fix typo
2025-11-26 09:13:42 +08:00
Serhii Hospodarchuk 81b03f2d8a
fix(route/substack): use ofetch directly to avoid xml parse errors (#20564)
* fix(route/substack): clean up xml before parsing

* fix(route/substack): use ofetch directly to avoid xml parse errors

* fix(route/substack): use isValidHost to validate the user
2025-11-26 04:54:21 +08:00
Tony fb3ae13f79 fix: update import statements to use local ofetch utility 2025-11-26 03:38:50 +08:00
Tony 87641236b8
fix(route/iwara): use ofetch (#20572) 2025-11-26 03:37:24 +08:00
sk22 d8c2be5710
feat(route): Add route for wiensued.at cooperative housing (#20552)
* feat(category): add housing category

* feat(route/wiensued): add route for wiensued.at

* Revert "feat(category): add housing category"

This reverts commit 953f59421717592dc5d8f2e0d8c42b5d54c77c72.

* feat(route/wiensued): change category

---------

Co-authored-by: Samuel Kaiser <samuel.kaiser@timetoact.at>
2025-11-26 03:09:22 +08:00
sk22 cbff05689a
feat(route): Add WBV-GPA Austrian communal housing search (#20544)
* feat(category): add housing category

* feat(route): Add WBV-GPA housing search

* fix(route/wbv-gpa): fix import

* fix(route/wbv-gpa): fix feed title

* Revert "feat(category): add housing category"

This reverts commit 953f59421717592dc5d8f2e0d8c42b5d54c77c72.

* feat(route/wbv-gpa): change category

---------

Co-authored-by: Samuel Kaiser <samuel.kaiser@timetoact.at>
2025-11-26 01:53:31 +08:00
sk22 36b6b34ffc
feat(route): Add route for gesiba.at (#20538)
* feat(category): add housing category

* feat(route): Add gesiba.at route

* fix(route/gesiba): improve feed, fix imports

* fix(route/gesiba): fix feed title

* Revert "feat(category): add housing category"

This reverts commit 953f59421717592dc5d8f2e0d8c42b5d54c77c72.

* fix(route/gesiba): change category

---------

Co-authored-by: Samuel Kaiser <samuel.kaiser@timetoact.at>
2025-11-25 23:36:44 +08:00
sk22 9946c99ff6
feat(route): Add route for oesw.at (#20537)
* feat(category): add housing category

* feat(route): add oesw.at housing search

* fix(route/oesw): append count to guid instead of link

* fix(route/oesw): fix feed title and imports

* Revert "feat(category): add housing category"

This reverts commit 953f59421717592dc5d8f2e0d8c42b5d54c77c72.

* feat(route/oesw): change category

---------

Co-authored-by: Samuel Kaiser <samuel.kaiser@timetoact.at>
2025-11-25 22:12:44 +08:00
Saif Azmi ad79cc6870
docs(route/linkedin/posts): update Puppeteer requirement to true (#20551) 2025-11-23 22:02:00 +08:00
AiraNadih ea262406ac
fix(route/kemono): fallback to added date if published date is missing (#20548)
Co-authored-by: AiraNadih <AiraNadih@users.noreply.github.com>
2025-11-23 21:48:24 +08:00
Tony 934d95a4ed
fix(route/1point3acres): handle optional tags in category assignment (#20547) 2025-11-23 13:11:09 +08:00
Zhengyi 98014554ca
fix(route/qidian/chapter): Add User Agent (#20513) 2025-11-23 04:44:10 +08:00
Ethan Shen 4caa9f65a3
feat(route): add 北青网 (#20539)
* feat(route): add 北青网

* fix typo
2025-11-22 22:19:15 +08:00
千代有希= e0aee671fb
feat(route): add some insitutes' routes of ECNU (#20532)
* fix(route): fix wrong title of /ecnu/bksy

Co-authored-by: FrozenStarrrr <frozenstars@qq.com>

* feat(route): add ECNU Software Engineering Insitute notices route

* fix(route): modify wrong radar target

* add School of Computer Science and Technology ECNU notices route

* add School of data science and engineering notices route

* add School of Comm. & Elec. Engineering notices route

* add School of Geospace A.I. Engineering ECNU notices route

* add ECNU faculty of Edu. notices route

* add ECNU faculty of Earth Sci. notices route

* add ECNU Meng Xiancheng notices route

* add ECNU Guanghua notices route

* fix(route): add empty line at the end of files.

* add department of history ECNU notices route

* add department of Philo. ECNU notices route

* fix(route): add maintainer of /ecnu/bksy

* fix(route): delete unnecessary try-catch statment, modified incorrect url, fix image url.

* fix(route): fix unnecessary try-catch, description, condition and wrond url

* fix(route): fix image display

* fix(route): fix problems in bksy.ts

---------

Co-authored-by: FrozenStarrrr <frozenstars@qq.com>
2025-11-22 22:06:51 +08:00
Rongrong 6eb460c33b
feat(route/weibo): Fetch visitor Cookies before accessing some APIs (#20534)
* feat(route/weibo): Fetch visitor Cookies before accessing some APIs

Signed-off-by: Rongrong <i@rong.moe>

* fix(route/weibo/utils): getCookies: return too early on slow connection

Signed-off-by: Rongrong <i@rong.moe>

* fix(route/weibo/utils): getCookies: Redirection assertion is too loose

Signed-off-by: Rongrong <i@rong.moe>

---------

Signed-off-by: Rongrong <i@rong.moe>
2025-11-22 06:04:14 +08:00
IChengHo 8c7cd6832e
fix(route/phoronix): Use `ofetch` and `parseString` for reliable feed fetching (#20543)
The `rss-parser`'s internal `parseURL` method can fail with an "Error:
Non-whitespace before first tag" on feeds that are gzipped or contain a
Byte Order Mark (BOM), as it lacks robust decompression and encoding
handling.

This change switches the Phoronix route to:

Fetch the raw XML string using `ofetch`, which handles compression and
encoding correctly.

Pass the resulting clean string to `parser.parseString()`.

This resolves the parsing issue and ensures the route is reliable.
2025-11-22 04:33:29 +08:00
Rongrong 3ede128c55
fix(route/picnob): bring back support for diygod/rsshub:chromium-bundled (#20504)
* ci(docker-release): enable ZRAM to reduce memory pressure

This should hopefully help reduce stuck build jobs. Note that this can't
completely eliminate stuck builds since this is usually caused by
synchronization issues in QEMU.

Signed-off-by: Rongrong <i@rong.moe>

* build(Dockerfile): Add support for puppeteer-real-browser

Sets CHROMIUM_EXECUTABLE_PATH on AMD64 and installs essential
dependencies.

Signed-off-by: Rongrong <i@rong.moe>

* fix(route/picnob): bring back support for diygod/rsshub:chromium-bundled

The support for puppeteer-real-browser on diygod/rsshub:chromium-bundled
was improperly implemented in 400fb1fa49 ("fix(route/picnob): use
puppeteer-real-browser to pass cf check (#20478)") and was then removed
in 2cb11d7c7e ("fix(route/picnob): support img not in slide").

With proper support for puppeteer-real-browser added to Dockerfile, this
patch brings back the support for diygod/rsshub:chromium-bundled.

This partially reverts commit 2cb11d7c7e ("fix(route/picnob): support
img not in slide").

Signed-off-by: Rongrong <i@rong.moe>

* chore(route/picnob): add myself as maintainer

This route explicitly consult CHROMIUM_EXECUTABLE_PATH from the docker
image variant `diygod/rsshub:chromium-bundled`. Since I am the author of
the image variant, add myself as one of route maintainers so that I am
mentioned when the route is broken.

Signed-off-by: Rongrong <i@rong.moe>

# Conflicts:
#	lib/routes/picnob/user.ts

---------

Signed-off-by: Rongrong <i@rong.moe>
2025-11-21 01:23:22 +08:00
千代有希= 28bc65d0be
feat(route): add ECNU Software Engineering Insitute notices route (#20531)
* fix(route): fix wrong title of /ecnu/bksy

Co-authored-by: FrozenStarrrr <frozenstars@qq.com>

* feat(route): add ECNU Software Engineering Insitute notices route

* fix(route): modify wrong radar target

---------

Co-authored-by: FrozenStarrrr <frozenstars@qq.com>
2025-11-21 00:32:29 +08:00
Ethan Shen d91d4681a0
feat(route): add Cloudflare Status (#20514)
* feat(route): add Cloudflare Status

* fix: missing type
2025-11-20 00:09:54 +08:00
FrozenStar 46086571b9
feat(route): add East China Normal University Undergraduate Office notice (#20515)
* feat(route): add East China Normal University Undergraduate Office notices

Co-authored-by: Yuki Chiyo <chiyo.uk@outlook.com>

* fix(route): delete a useless option and modified outdated url

Co-authored-by: Yuki Chiyo <chiyo.uk@outlook.com>

---------

Co-authored-by: Yuki Chiyo <chiyo.uk@outlook.com>
2025-11-19 21:57:07 +08:00
Tony d5cd095599
feat(route): add picnob.info (#20517) 2025-11-19 03:02:28 +08:00
Tony 5f80a3001f
fix(route/google): replace puppeteer with google-play-scraper (#20516)
* feat(route/google): replace puppeteer with google-play-scraper

* fix: override more deps

* fix(route/google/play): correct import casing for google-play-scraper
2025-11-19 02:54:37 +08:00
Keo ccfca1ad19
fix(route/ntrblog): use utils/got to get feed content (#20511) 2025-11-19 01:55:34 +08:00
surwall 1ffd371dfe
feat(route): add Google Play Store (#20231)
Co-authored-by: Xinhao Luo <neverbehave@fastmail.com>
2025-11-17 13:32:10 -08:00
Andvari ed51422824
fix(route/initium): replace got with ofetch and handle dead link (#20494)
* fix(route/initium): replace got with ofetch and handle dead link

* fix(route/theinitium): update fetchWebPage to handle new article structure
2025-11-18 01:29:51 +08:00
Stephen Zhou 4ab0547d9d
fix(route/picnob): ignore detail page error 2025-11-17 12:24:20 +08:00
Ethan Shen 87e2225139
fix(route): 中国炼焦行业协会 (#20493) 2025-11-17 00:13:31 +08:00
Liao-Ke 6e5409d7eb
feat(route): add AI 博客 (#20488)
* feat(route): add AI 博客

新增了一个归档路由处理函数,用于抓取AI博客的所有文章归档。

- 定义了一个新的路由配置对象`route`,路径为`/archives`,属于`blog`类别。
- 使用`ofetch`获取归档页面内容,并通过`cheerio`解析HTML。
- 遍历每个月份分组内的每篇文章,提取标题、链接、发布时间,并存储在列表中。
- 对列表中的每个条目,使用`cache.tryGet`缓存文章详情,若无缓存则再次使用`ofetch`获取,并解析出文章的主要内容。
- 返回处理后的结果对象,包含优化后的标题、归档页面链接以及过滤无效数据后的文章列表。

新增了一个命名空间配置对象`namespace`,用于定义AI博客的基本信息。

- 定义了一个新的命名空间配置对象`namespace`,包含站点名称、URL和语言。

* refactor(handler): 优化归档页面处理逻辑

- 使用 `toArray()` 和 `flatMap()` 方法简化了遍历每个月份分组和提取文章信息的代码逻辑。
- 修正了 `link` 属性的处理,确保当链接不存在时返回空字符串。
- 添加了 `author` 和 `description` 属性到文章对象中,以便更完整地描述文章内容。
- 精简了每个文章项的 `description` 构建,去除了不必要的 HTML 结构复制。
2025-11-16 23:48:33 +08:00
DIYgod 92032a8c51
fix(twitter): update proxy agent implementation to use new Client and HttpCookieAgentCookie 2025-11-15 09:37:48 +08:00
DIYgod d03f5697a4
fix(twitter): replace zstd decompression with gzip for third-party API requests 2025-11-15 09:01:46 +08:00
Tony e3c18adc71
chore: bump to node 24 (#20486) 2025-11-15 03:56:04 +08:00
github-actions[bot] 099fde307f style: auto format 2025-11-14 17:58:02 +00:00
Tony daf9460e6a
fix(router/twitter): replace zstd decoder with native zlib decompression (#20485)
* fix(twitter): replace zstd decoder with native zlib decompression

* fix(twitter): update node version compatibility and enable experimental features
2025-11-15 01:56:23 +08:00
Ethan Shen d9d807ab12
feat(route): add 数字尾巴视频 (#20470)
* feat(route): add 数字尾巴视频

* fix pubDate
2025-11-15 00:15:22 +08:00
Stephen Zhou 2cb11d7c7e
fix(route/picnob): support img not in slide 2025-11-14 22:10:32 +08:00
Stephen Zhou 400fb1fa49
fix(route/picnob): use puppeteer-real-browser to pass cf check (#20478) 2025-11-14 15:32:09 +08:00
DIYgod a07565d356
feat(api): implement zstd decoding for third-party API responses 2025-11-14 14:13:18 +08:00
DIYgod 6e29199fd2
fix(cache): update request URL for cookie retrieval in getCookie function 2025-11-14 12:08:13 +08:00
IChengHo 6969cf1bcb
fix(route/twreporter): Prevent crash when hero_image or og_image is missing (#20481)
The original code directly accessed nested properties on
`post.hero_image`, which is not guaranteed to exist.
This cause a TypeError when the image object was nil.

This commit introduces safe access by:
- Prioritizing `hero_image` but falling back to `og_image`
- Only rendering the banner if a valid image URL was resolved
2025-11-14 11:22:13 +08:00
Tony 2ae10a7a02
feat: replace rand-user-agent with header-generator (#20480)
* Initial plan

* Replace @tonyrl/rand-user-agent with header-generator and add sec-ch-* headers

Co-authored-by: TonyRL <11386903+TonyRL@users.noreply.github.com>

* Extract unwanted UA validation into standalone isValidUserAgent function

Co-authored-by: TonyRL <11386903+TonyRL@users.noreply.github.com>

* Add headerGeneratorPreset option to got and ofetch utilities

* Replace randUserAgent usage in lib/routes with headerGeneratorPreset option

Co-authored-by: TonyRL <11386903+TonyRL@users.noreply.github.com>

* chore: pin header-generator to exact match

* fix: replace randUserAgent with a static user agent string in config

* Remove deprecated _randUserAgent function and related tests

Co-authored-by: TonyRL <11386903+TonyRL@users.noreply.github.com>

* refactor: rename to header-generator

* Changes before error encountered

Co-authored-by: TonyRL <11386903+TonyRL@users.noreply.github.com>

* fix: update generateHeaders parameter type to Partial<HeaderGeneratorOptions>

* fix: add ios preset

* fix: rename headerGeneratorPreset to headerGeneratorOptions

* feat: add MODERN_IOS preset and update header-generator patch hash

* fix: use ios preset

* fix: update FetchOptions to include headerGeneratorOptions type

* refactor: simplify header generation and update header inclusion list

* fix: remove header-generator patch

* refactor: update user-agent handling in requests and tests

* test: remove redundant headerGeneratorOptions test and add new ofetch header preset test

* test: add custom user-agent test for ofetch

* test: update user-agent expectation in ofetch headers test

* Update lib/utils/ofetch.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: replace hardcoded headers with generatedHeaders in fetch and get request handlers

* refactor: rename test suite from rand-user-agent to header-generator and remove unused dependency

* Update lib/utils/header-generator.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: TonyRL <11386903+TonyRL@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-14 00:49:41 +08:00
Ethan Shen 60ad86b6f6
fix(route): 艾瑞咨询研究报告 (#20450)
* fix(route): 艾瑞咨询研究报告

* fix loop

* fix typo

* fix typo
2025-11-13 00:15:25 +08:00
Kenny Fong bea6da0dd2
feat(route/futunn): add live, topic and video (#20464)
* add live, topic and video

* fix issues

* Update lib/routes/futunn/topic.ts
2025-11-12 22:26:35 +08:00
Tony 4e247a46ae
fix(route/youtube): ensure youtubei is not invoked when using google api (#20469) 2025-11-11 21:54:48 +08:00
Tony dac672d3bb
fix(route/youtube): ensure youtubei is not invoked when using google api (#20465) 2025-11-11 15:27:47 +08:00
Tony da32313da8
feat(route): add netflix (#20453)
* feat(route): add netflix

* feat: add research

* fix: remove migrated entries

* fix: clean up

* fix: remove optional chaining for embedLink and title in render function

* fix: remove optional chaining for embedLink

* fix: image url

* fix: remove empty target field in radar configuration
2025-11-09 23:00:07 +08:00
Aicnal Liueic f0f561a894
feat(router): add router of Capital Normal University (#20430) 2025-11-07 18:28:16 +08:00