Commit Graph
8731 Commits
Author SHA1 Message Date
Ch3n4yandCh3n4y e5e2368fe0 feat(route): add itsec news (#22066)
* feat(route): add itsec news

* fix(route): preserve itsec titles

---------

Co-authored-by: Ch3n4y <ch3n4y@gmial.com>
2026-05-21 13:51:27 +08:00
github-actions[bot] 9d3790f73c style: auto format 2026-05-14 14:26:50 +00:00
Jiamin 5cb99133d9 feat: add Shanghai Museum exhibition route (#21890)
* feat: add Shanghai Museum exhibition route

* Update shanghaimuseum.ts

* feat: add Shanghai Museum exhibition route

* Update shanghaimuseum.ts

* Update shanghaimuseum.ts

* docs: add namespace for shanghaimuseum

* feat(route): rename to offline-exhibit and update metadata

* fix: update with fixed output and fix errors

* fix: fix errors

* fix: add exhibitiontype

* fix: refactor to JSX

* feat: update shanghai museum route with type param

* fix: update offline-exhibit to use path params

* fix: exhibitItem from ExhibitItem

* fix: update interface
2026-05-14 22:25:36 +08:00
DIYgod 30776baef7 fix: update obsidian community routes 2026-05-14 15:47:50 +08:00
DIYgod 265921b7b8 fix(route): normalize Bilibili mall image URLs 2026-05-14 13:18:46 +08:00
chansanthemanandClaude Sonnet 4.6 591dcb85be feat(route/gigazine): add English news full-text feed (#21757)
* route(gigazine): add English news full-text feed

Adds /gigazine/en route that fetches full article content from
GIGAZINE's English news listing. Uses sequential fetching with
delays to respect Cloudflare rate limits; subsequent loads are
served from cache.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* route(gigazine): improve english feed resilience

* test(gigazine): add english route coverage

* test(gigazine): move route coverage out of route tree

* test(api): cover route status cache fallbacks

* refactor(gigazine): apply PR review feedback to english route

- Use ofetch built-in auto-retry instead of hand-rolled circuit breaker
- Remove config.trueUA; let request-rewriter inject random browser UA
- Simplify Number.parseInt call (drop redundant ?? '' fallback)
- Update tests to match new retry and UA behaviour

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: remove unrelated changes and unnecessary test file

* refactor(gigazine): simplify selectors and cleanup logic per review

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 03:54:02 +08:00
Q16KBreak dd8ee08393 feat(route/nyaa): support fulltext mode (#21888)
* feat(route): support fulltext mode for nyaa

* feat(route): replace parameter name

* feat(route): migrate from query parameters to route paths

* feat(route): use mode=fulltext as trigger and update namespace

* delete fulltext routes
2026-05-12 02:45:14 +08:00
github-actions[bot] 6e12d60764 style: auto format 2026-05-11 16:26:16 +00:00
Shoggomo 5cf0d2b133 feat(route/4chan): add filters for sticky threads and reply count (#21964)
* feat(route/4chan): add filters for sticky threads and reply count

* Revert formatting

* Applied suggestion
2026-05-12 00:25:01 +08:00
898b320644 feat(route): add /humanlayer/blog route (#21565)
* feat(route): add /humanlayer/blog route

Add RSS feed for HumanLayer blog (www.humanlayer.dev/blog), scraping
blog listing and full article content with cheerio.

via [HAPI](https://hapi.run)

Co-Authored-By: HAPI <noreply@hapi.run>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor(route): use CSS :not() selector instead of JS filter for humanlayer blog

Address PR review feedback: move /blog/tags/ exclusion into the CSS selector
instead of using a separate .filter() call.

via [HAPI](https://hapi.run)

Co-Authored-By: HAPI <noreply@hapi.run>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(route): extract tags into category field for humanlayer blog

Parse #-prefixed tags from the meta line and populate the category field.

via [HAPI](https://hapi.run)

Co-Authored-By: HAPI <noreply@hapi.run>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(route): address review feedback for humanlayer blog

- Remove redundant :not() selector (tag links use different class)
- Simplify tag extraction from parts.slice(3).join() to parts[3]
- Fix tag regex to match hyphenated tags like best-practices

via [HAPI](https://hapi.run)

Co-Authored-By: HAPI <noreply@hapi.run>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(route): remove custom limit for humanlayer blog, use built-in

via [HAPI](https://hapi.run)

Co-Authored-By: HAPI <noreply@hapi.run>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: HAPI <noreply@hapi.run>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: zj1123581321 <zj1123581321@users.noreply.github.com>
2026-05-12 00:03:51 +08:00
Tony e55ade5117 fix(route/github): fix pr url (#21974) 2026-05-11 21:44:59 +08:00
Tony a98de2effd refactor: use arrow function 2026-05-11 02:16:04 +08:00
DIYgod 3b0d76ae20 test(route): move techflowpost test outside routes 2026-05-09 17:24:41 +08:00
DIYgod ff3d9a79be fix(route): update techflowpost routes 2026-05-09 17:16:25 +08:00
kjasnandCopilot Autofix powered by AI 0b2b8e0e66 feat(route/qwen): replace deprecated qwen blog route with new one (#21944)
* feat: replace deprecated qwen blog route

* fix: replace wrong field and add param desc

* fix: remove unnecessary param

* fix: use import type

* refactor: qwen blog

* Potential fix for pull request finding

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

* error handling and tidy

* tidy

* fix: remove unnecessary header

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-08 21:12:00 +08:00
DIYgod 03fabd9cdf fix: separate quoted tweets in twitter feeds 2026-05-08 11:28:33 +08:00
Tony c2b00f6090 chore: format description in lint-staged 2026-05-08 05:59:53 +08:00
github-actions[bot] a4b9d76776 style: auto format 2026-05-07 21:41:39 +00:00
github-actions[bot] 788c549948 style: auto format 2026-05-07 20:42:08 +00:00
Tony 70cd080406 chore: revive remark formatter
refs: #14040
2026-05-08 04:40:49 +08:00
TehPeGaSuS 78068da475 feat(route): make GitHub pulls title and docs consistent with issues (#21903)
* feat(route): make GitHub pulls title and docs consistent with issues

I'm not really a coder, but I use RSSHub to bridge GitHub updates into IRC for my community. I noticed that the `pulls.ts` route didn't show the "Open/Closed" state in the feed title like the `issues.ts` route does, which was making my users a bit confused!

I tried my best to replicate the logic and metadata structure from `issues.ts` over to `pulls.ts`.

Changes:
- Updated the feed title to dynamically show the state (Open/Closed/All) and any labels.
- Updated the parameter metadata so the documentation looks as clean and organized as the Issues page.

I've tested this locally and it’s working perfectly for my IRC tracker. Hopefully, this helps keep things consistent across the GitHub routes!

Closes #21902

* Fix title formatting in pull request response
2026-05-08 02:26:57 +08:00
E-larex 8b302d70b6 feat(route): add hypergryph/endfield (#21808) 2026-05-07 23:00:14 +08:00
DIYgod c39f1c4e3d fix: update theblockbeats api signing 2026-05-07 21:05:20 +08:00
Tony e7fd3528bf fix(route/jiemian): remove duplicated image (#21946)
* Revert "style: auto format"

This reverts commit 2b85aba8c4.

* Revert "fix(route/thepaper)(route/jiemian): remove useless image and audio (#21800)"

This reverts commit 37b70b48b6.

* fix(route/jiemian): remove duplicated image

* fix: typo
2026-05-07 20:59:30 +08:00
DIYgod 7b22a41092 fix: update playstation monthly games route 2026-05-07 20:52:51 +08:00
github-actions[bot] 2b85aba8c4 style: auto format 2026-05-07 06:40:54 +00:00
HamadaMasatoshi 37b70b48b6 fix(route/thepaper)(route/jiemian): remove useless image and audio (#21800)
* Comment out media object in rss_item

Comment out media object in rss_item construction

* Disable voiceInfo handling in RSS item

Comment out voiceInfo handling logic in RSS item creation.

* Update description extraction to exclude report view

* Refactor description logic in common.tsx

Refactor description extraction to remove specific images and report view paragraphs.

* Handle missing featured image in description logic

* Improve description extraction in common.tsx

Refactor description extraction logic to handle cases without a featured image more cleanly.
2026-05-07 14:39:54 +08:00
Harvie 51ef0df0c2 feat(route): add 国际能源网 (in-en.com) news route (#21669)
* feat(route): add 国际能源网 (in-en.com) news route

Add RSS route for in-en.com (国际能源网), a major Chinese energy news portal.

Supported channels via /in-en/news/:type:
- solar  — 光伏太阳能
- wind   — 风电
- chuneng — 储能
- h2     — 氢能
- chd    — 充换电
- newenergy — 新能源综合
- power  — 电力
- huanbao — 环保

Features: fetches article list from each subdomain's news page,
then retrieves full article body via detail page (cached).
Handles Chinese relative timestamps (X分钟/小时/天前).

* fix(in-en): add maintainer, fix timezone double-shift, translate comments to English

* fix(in-en): correct news paths for h2/chd/huanbao, drop date-only pubDate override

* fix(in-en): sort imports, fix numeric separators, add category field, use trueUA

* fix(in-en): address review comments

- Remove config.trueUA, use default UA
- Remove custom parseRelTime, use parseDate directly
- Fix title text extraction without cloning element
- Remove unnecessary .first() on pubDate
- Fix author: handle both em.ly and plain-text source via .prompt > span
- Simplify category field (remove redundant length check)
- Fix description selector: .article-body → #article
- Fix detail author selector: .article-meta .source a → p.source a
- Remove try-catch around detail fetch

* fix(in-en): fix author including category text and handle relative pubDate formats

* fix(in-en): use parseRelativeDate, simplify selectors, drop redundant fallbacks

- Replace hand-rolled relative-date logic with parseRelativeDate (covers
  "刚刚 / N分钟前 / N小时前 / 今天 HH:MM / 昨天 HH:MM / YYYY-MM-DD"). Fixes
  Invalid Date on the first few entries and resolves the two oxlint findings
  (no-useless-undefined, numeric-separators-style).
- Drop the `.first()` on `.listTxt .prompt i` — each `ul.infoList > li` carries
  exactly one `<i>` (date), confirmed against https://solar.in-en.com/news/.
- Author selector: `.prompt > span:first-of-type`, then strip leading "来源:".
  Cheerio's `.text()` flattens `<em class="ly">…</em>` into the same string,
  so this matches both shapes shown on https://solar.in-en.com/news/
  (plain text vs. wrapped in em.ly).
- Category selector: `.prompt > span:not(:first-of-type) em a`, scoped to the
  second span so author text never leaks in.
- Drop `|| undefined` on author and `?? ''` on description (redundant —
  DataItem already accepts undefined).
- Add an HTML-shape comment pointing to the live sample URL so future
  reviewers can verify the layout assumptions.

* fix(in-en): drop dead default + use new-media category

- Hono treats `:type` as compulsory (path is `/news/:type`), so users without
  it never reach the handler — the `?? 'solar'` fallback was unreachable.
  Replace with a non-null assertion to keep the type narrow.
- categories: 'traditional-media' → 'new-media' per review suggestion.
2026-05-07 11:20:00 +08:00
KKumiko 63157fb030 feat(route): add 福建日报电子报 route (#21472)
* feat(route/fjrb): add Fujian Daily route and namespace configuration

* feat(route/fjrb): update route to support date parameter and improve error handling

* fix(route/fjrb): standardize root URL constant usage

* fix(route/fjrb): address review comments for Fujian Daily route

* fix(route/fjrb): refactor media source retrieval to use getNodeSrc function

* fix(route/fjrb): update Fujian Daily URL to use the second level domain

* feat(route/fjdaily): add Fujian Daily route and namespace configuration

* fix(route/fjdaily): add Fujian Daily route and namespace configuration
2026-05-07 03:34:07 +08:00
Yufan You 5589b89478 fix(cache): call JSON.stringify when storing value in cache.tryGet (#20671)
* fix(cache): call JSON.stringify when storing value in cache.tryGet

The value is returned as-is, so we may assume that it's not JSON
stringified inside `getValueFunc`. Otherwise, the caller already needs
to distinguish between values that are either JSON parsed or not.

* Revert "fix(routes/mastodon): don't refresh account ID cache (#20663)"

This reverts commit c2cff410fa.

* test: add test

* test: lint
2026-05-07 01:26:11 +08:00
DIYgod 759551073c fix: update browser fetching for bilibili and xsijishe 2026-05-06 16:30:15 +08:00
Tony 1410f03e6d test: remove text "Not Found" from httperror
undici (v8.0.2) in node 26.0 enables http2 by default which has empty statusText
refs: https://github.com/nodejs/undici/blob/584e6aec01a922f6e9ba259ee7c153475cb87a44/lib/dispatcher/client-h2.js#L945
2026-05-06 03:12:57 +08:00
DIYgod 90b81b51fc fix: connect playwright ws endpoint via protocol (#21917) 2026-05-05 22:17:25 +08:00
d0c6e6a87a feat(route/bilibili): fold browser mode into video route (#21913)
* feat(route/bilibili): add video-browser route using Puppeteer for video list extraction

Replace broken real-browser API dependency with getPuppeteerPage + browserless
to render Bilibili space pages and extract video data via DOM parsing. Includes
username extraction from page title and cover image detection.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(route/bilibili): fix video title extraction picking stats over actual titles

The candidate selection logic was preferring longer text (e.g. "8.3万23907:45")
over real titles (e.g. "爆肝三天,我总结了 GPT Image 2 全网最实用的玩法")
because stats strings passed the hasTitle check. Now prefer candidates that
contain Chinese characters and don't start with digits, falling back to
longest hasTitle candidate. Fixes 11/35 UIDs returning empty results.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(route/bilibili): add /user/video-browser route using Puppeteer + XHR interception

Close #20406

Bilibili upgraded anti-crawler (WBI signing) on /x/space/wbi/arc/search
in Nov 2025, causing existing /user/video/:uid to return 412.

This new route bypasses it by intercepting the browser's own API response
via Puppeteer, extracting structured JSON data (title, bvid, pic, created
timestamp, author, play/comment counts) instead of fragile DOM scraping.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(route/bilibili): fold browser mode into video route

---------

Co-authored-by: gqy20 <qingyu_ge@foxmail.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 18:07:51 +08:00
DIYgod 566f028aaf refactor: migrate browser automation to Playwright (#21901)
* refactor: migrate browser automation to Playwright

* ci: update browser checks for Playwright
2026-05-04 21:16:18 +08:00
github-actions[bot] bd4ce4506d style: auto format 2026-05-02 03:05:48 +00:00
ashi-koki 843c3ff8c1 feat(route): add rule34video latest route (#21696)
* feat(route): add rule34video latest route

* fix(route): reduce redundant returns, use suggested full route path

* fix(route): removed user-agent  usage

* fix(route): removed redundant import
2026-05-02 11:04:46 +08:00
wanlala 496e98a4cf fix(route/nuaa): 修复NUAA教务处DOM元素解析 (#21879)
<!--
If you have any difficulties in filling out this form, please refer to https://docs.rsshub.app/joinus/new-rss/submit-route
如果你在填写此表单时遇到任何困难,请参考 https://docs.rsshub.app/zh/joinus/new-rss/submit-route
-->

## Involved Issue / 该 PR 相关 Issue



## Example for the Proposed Route(s) / 路由地址示例

<!--
请在 `routes` 区域填写以 / 开头的完整路由地址,否则你的 PR 将会被无条件关闭。
如果路由包含在文档中列出可以完全穷举的参数(例如分类),请依次全部列出。

Please include route starts with /, with all required and optional parameters in the `routes` section. Fail to comply will result in your pull request being closed automatically.
```route
/some/route
/some/other/route
/dont/use/this/or/modify/it
/use/the/fenced/code/block/below
```
如果你的 PR 与路由无关, 请在 `routes` 区域填写 `NOROUTE`,而不是直接删除 `routes` 区域。否则你的 PR 将会被无条件关闭。
If your changes are not related to route, please fill in `routes` with `NOROUTE`. Fail to comply will result in your PR being closed.
-->

```
/nuaa/jwc/tzgg
```

## New RSS Route Checklist / 新 RSS 路由检查表

- [ ] New Route / 新的路由
  - [ ] Follows [Script Standard](https://docs.rsshub.app/joinus/advanced/script-standard) / 跟随 [路由规范](https://docs.rsshub.app/zh/joinus/advanced/script-standard)
- [x] Documentation / 文档说明
- [x] Full text / 全文获取
  - [ ] Use cache / 使用缓存
- [x] Anti-bot or rate limit / 反爬/频率限制
  - [ ] If yes, do your code reflect this sign? / 如果有, 是否有对应的措施?
- [ ] [Date and time](https://docs.rsshub.app/joinus/advanced/pub-date) / [日期和时间](https://docs.rsshub.app/zh/joinus/advanced/pub-date)
  - [ ] Parsed / 可以解析
  - [ ] Correct time zone / 时区正确
- [ ] New package added / 添加了新的包
- [ ] `Puppeteer`

## Note / 说明
更新了 DOM 元素的解析,适配了新的南航教务处页面样式
2026-05-01 15:29:41 +08:00
Haven Madray 5b2e1a5d02 fix(route/javdb): use puppeteer to overcome api restrictions (#21865)
* fix(javdb): use puppeteer to overcome api restrictions

* chore(javdb): block unnecessary requests
2026-04-30 22:38:06 +08:00
Tony 2f66481a33 fix(route/nhk): fix linebreak (#21863) 2026-04-29 17:21:27 +08:00
Tony cf2f06cdd7 fix(route/nmc): update selectors (#21854) 2026-04-29 13:34:34 +08:00
Tony e06a6dee24 fix(youtube): correct cache expiration handling in getLive function (#21853) 2026-04-29 12:52:27 +08:00
dependabot[bot] bb5a944b35 chore(deps-dev): bump tsdown from 0.21.9 to 0.21.10 (#21810)
* chore(deps-dev): bump tsdown from 0.21.9 to 0.21.10

Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.21.9 to 0.21.10.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](https://github.com/rolldown/tsdown/compare/v0.21.9...v0.21.10)

---
updated-dependencies:
- dependency-name: tsdown
  dependency-version: 0.21.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: migrate tsdown options

* test: fix flaky test

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-29 05:09:46 +08:00
Tony 796bbf1ecf fix(route/yahoo): fix providers (#21852)
* fix(yahoo): fix getProviderList

* fix(yahoo): fix region config

* fix: typo
2026-04-29 04:00:53 +08:00
dependabot[bot] d811d053b2 chore(deps-dev): bump the oxc group with 5 updates (#21847)
* chore(deps-dev): bump the oxc group with 5 updates

Bumps the oxc group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@oxlint/plugins](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugins) | `1.61.0` | `1.62.0` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.46.0` | `0.47.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.61.0` | `1.62.0` |
| [oxlint-plugin-eslint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugin-eslint) | `1.61.0` | `1.62.0` |
| [oxlint-tsgolint](https://github.com/oxc-project/tsgolint) | `0.22.0` | `0.22.1` |


Updates `@oxlint/plugins` from 1.61.0 to 1.62.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/apps_v1.62.0/npm/oxlint-plugins)

Updates `oxfmt` from 0.46.0 to 0.47.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.47.0/npm/oxfmt)

Updates `oxlint` from 1.61.0 to 1.62.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.62.0/npm/oxlint)

Updates `oxlint-plugin-eslint` from 1.61.0 to 1.62.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint-plugin-eslint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/apps_v1.62.0/npm/oxlint-plugin-eslint)

Updates `oxlint-tsgolint` from 0.22.0 to 0.22.1
- [Release notes](https://github.com/oxc-project/tsgolint/releases)
- [Commits](https://github.com/oxc-project/tsgolint/compare/v0.22.0...v0.22.1)

---
updated-dependencies:
- dependency-name: "@oxlint/plugins"
  dependency-version: 1.62.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: oxc
- dependency-name: oxfmt
  dependency-version: 0.47.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: oxc
- dependency-name: oxlint
  dependency-version: 1.62.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: oxc
- dependency-name: oxlint-plugin-eslint
  dependency-version: 1.62.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: oxc
- dependency-name: oxlint-tsgolint
  dependency-version: 0.22.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: oxc
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: ignore eslint-disable on ci

* chore: bump pnpm

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-29 03:49:51 +08:00
DIYgod 7a7453d2d2 fix(twitter): handle unavailable quoted tweets 2026-04-28 21:09:55 +08:00
Lukas Wolfsteiner 5b4fe8e68d feat(route): add user likes activity for Hugging Face (#21838)
Introduces a new route to fetch and display user likes activity from Hugging Face, including links to liked repositories and their types.
The route is accessible via '/activity/:user/likes' and supports various repository types such as datasets, spaces, papers, and collections.

This is done by parsing the JSON provided through the HuggingFace API.
E.g.: `https://huggingface.co/api/users/dotwee/likes`
2026-04-27 03:04:25 +08:00
Volundio be87dfd523 docs: edit zaimanhua description. (#21829) 2026-04-25 20:21:21 +08:00
Tony 0ddea9ef86 fix(route): apple apps (#21824) 2026-04-24 19:39:30 +08:00
kjasnandCopilot 6528dc0a2f feat: add token option for zaimanhua route (#21815)
* feat: zaimanhua use cookie

* feat: zaimanhua recent update and comic update add token option

* Update lib/routes/zaimanhua/update.ts

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-24 18:59:58 +08:00