Commit Graph

8702 Commits

Author SHA1 Message Date
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: 584e6aec01/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
DIYgod 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
kjasn 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
DIYgod 7c2bcf5bdf
feat: add HTTP cache (#21814) 2026-04-24 11:35:51 +08:00
MurphyYi 779d67a76f
fix(xiaomiyoupin): 修复众筹路由 API 失效问题 (#21785)
* fix(xiaomiyoupin): 修复众筹路由 API 失效问题

- 原依赖 /venue/page 接口返回 query_list,但该接口现已返回空 floors
- 改用 homepage/main/v1005 API,无需 sign,长期稳定
- 新增 crowdfunding.tsx 模板,展示更丰富的众筹信息(进度条、支持人数、起止时间等)
- 适配新 API 数据结构字段

Signed-off-by: zy84338719 <zy84338719@users.noreply.github.com>

* fix(xiaomiyoupin): 修复众筹路由 API 失效问题

- 原依赖 /venue/page 接口返回 query_list,但该接口现已返回空 floors
- 改用 homepage/main/v1005 API,无需 sign,长期稳定
- 新增 crowdfunding.tsx 模板,展示众筹进度、支持人数、起止时间等
- 复用 utils.ts 中的 parseModule helper

Signed-off-by: zy84338719 <zy84338719@users.noreply.github.com>

* style: fix lint issues (eqeqeq, no-negated-condition) and add data validation

- Replace != with explicit null/undefined checks
- Add safe navigation for resp.data.data.homepage
- Throw descriptive errors on missing data

Signed-off-by: zy84338719 <zy84338719@users.noreply.github.com>

* fix(xiaomiyoupin): simplify fix per maintainer feedback - add accept header only

---------

Signed-off-by: zy84338719 <zy84338719@users.noreply.github.com>
2026-04-23 06:02:26 +08:00
ifwlzs 2dc92de43e
fix(route): update zxcs domain to zxcs.click (#21768) 2026-04-19 20:48:50 +08:00
Tony 6a664a87ff
feat(route): add mhlw (#21766)
* feat(route): add mhlw

* fix(route/mhlw): simplify selector for fetching data items
2026-04-19 03:22:54 +08:00
TimoYoung a0dbb6edf0
fix(route/huxiu): restore article content fetching and unify metadata building (#21756)
* fix(route/huxiu): fix article detail fetching

- Introduced `extractArticleId` function to extract article IDs from links.
- Added `fetchArticleDetail` function to retrieve article details using the extracted ID.
- Updated `fetchItem` to first attempt fetching article details before falling back to the original link.
- Enhanced error handling for API requests and parsing failures.

* refactor(route/huxiu): enhance data fetching and processing

- Introduced `prefixHuxiu` function to standardize titles and descriptions.
- Updated `fetchData` to handle icon URLs more robustly.
- Simplified `fetchItem` logic for better error handling and data retrieval.
- Removed unused `parseInitialState` function to clean up the codebase.

* refactor(route/huxiu): enhance data fetching and metadata building

- Replaced `fetchData` with `fetchApiRouteData` for improved data retrieval across multiple routes.
- Introduced `buildFeedMetadata` and `buildHuxiuRouteTitlePrefix` functions to standardize metadata construction.
- Updated various route handlers to utilize the new data fetching and metadata building methods, improving consistency and maintainability.
- Removed the `prefixHuxiu` function as its functionality is now integrated into the new metadata building process.
2026-04-18 05:47:50 +08:00
Tony 0bed8a993d
docs: add FANTIA_COOKIE (#21755)
* docs: add FANTIA_COOKIE

* fix(user): handle optional fanClub.comment in description
2026-04-17 03:27:51 +08:00
occam-7 1d2519f496
fix(route/bestblogs): API endpoint failure (#21753) 2026-04-16 21:09:39 +08:00
Tony 1d7f3dc8fc
feat(route): add caicai blog (#21741)
* feat(route): add caicai blog

* fix: favicon
2026-04-15 01:56:50 +08:00
Tony bd2f18c5c7
feat(route): add pixel update bulletins (#21740) 2026-04-15 00:43:31 +08:00
github-actions[bot] cb0e63de6c style: auto format 2026-04-14 15:33:50 +00:00
github-actions[bot] ebfe021b50 style: auto format 2026-04-14 15:15:05 +00:00
github-actions[bot] 7cb1e37da9 style: auto format 2026-04-14 00:39:34 +00:00
Tony cef5c68b9c refactor: add GraphQL annotation to queries for auto formatting in oxfmt v0.42
79a525cbd3
2026-04-14 08:38:54 +08:00
Tony 33996701af refactor: fix first() and undefined fallback abuse 2026-04-14 08:26:28 +08:00
Tony 2897f515a3
feat: disable IPv6 (#21719) 2026-04-13 23:45:08 +08:00
Chris Sauermann 42d7a77eaf
fix(elamigos): fix parsing after webpage layout update (#21705) 2026-04-13 05:53:44 +08:00
Tony 0f7808f345
docs: add sports category (#21704)
* feat: add sports category

* fix: fix runyeah
2026-04-13 04:21:20 +08:00
Tony c8ed099850
fix(route/gameapps): fix selectors (#21703) 2026-04-13 03:48:33 +08:00
Ananya 2af8e30e1c
feat(route): add Castbox route (#21700)
* feat(route): add Castbox route

* remove User Agent and switch item_image

* remove missed use of trueUA

* remove unnecessary import

* fix typo
2026-04-13 02:19:09 +08:00
Exat1979 72d4ee7ab4
feat: add projectjav actress (#21698) 2026-04-11 22:14:37 +08:00
Tony d375d79d8b
feat(route): add fcbayern (#21697) 2026-04-11 04:53:55 +08:00
github-actions[bot] e9a1bcb8e5 style: auto format 2026-04-10 11:17:45 +00:00
eve2ptp c0785bdc05
feat: add xhamster (#21640)
* feat xhamster

* style: auto format

* add maintainers

* remove useless header

* replace html() to text()

* Use U+002d instead of U+2013

* Use regex to match the string instead of replacing it

* no author

* remove link & author from description

* remove caching

* Apply suggestion

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Evilmass <21218296+Evilmass@users.noreply.github.com>
2026-04-10 19:16:55 +08:00
github-actions[bot] 1826ba4245 style: auto format 2026-04-10 04:35:18 +00:00
eve2ptp 45b13f09b5
feat: add jable (#21641)
* feat jable.tv

* fix jable
Unexpected string concatenation of literals.

* add maintainers

* remove useless headers

* only use find() once

* refactor

* remove unnecessary caching

---------

Co-authored-by: Evilmass <21218296+Evilmass@users.noreply.github.com>
2026-04-10 04:34:43 +00:00
Tony 86bc9553c7
feat(route): add iapp (#21682) 2026-04-10 09:37:26 +08:00
Rigo 718e37465a
fix: claude code changelog query (#21679)
* fix: claude code changelog query

* fix: route parseDate rule#13

* fix: cleanup .first() calls
2026-04-10 05:30:54 +08:00
Tony 25fa1279d8
feat(route): add nanhua (#21680)
* feat: add nanhua

* fix(radar): encode URI components for type parameters in report URL
2026-04-10 05:16:47 +08:00
dependabot[bot] ecd202c980
chore(deps-dev): bump got from 14.6.6 to 15.0.0 (#21591)
* chore(deps-dev): bump got from 14.6.6 to 15.0.0

Bumps [got](https://github.com/sindresorhus/got) from 14.6.6 to 15.0.0.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v14.6.6...v15.0.0)

---
updated-dependencies:
- dependency-name: got
  dependency-version: 15.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

* chore(deps): remove form-data dependency

* chore: make fakeGot function async

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tony <TonyRL@users.noreply.github.com>
2026-04-10 00:57:30 +08:00