Commit Graph

8694 Commits

Author SHA1 Message Date
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
Cod1doc 013e869ce8
fix(telegram): preserve access auth params in media links (#21503)
* fix(telegram): preserve access auth params in media links

* test(telegram): sort imports in channel regression test

* chore: remove channel.test.ts

---------

Co-authored-by: jack <jack@example.com>
2026-04-09 19:59:11 +08:00
Tony 7b6ced8ab4
feat(route): add wkjyqh (#21666)
* feat(route): add wkjyqh

* fix: more accurate pubDate
2026-04-09 09:29:09 +08:00
Tony b8b2065e57
feat(route): add trendforce (#21665)
* feat(route): add trendforce

* fix: pubDate
2026-04-09 09:00:10 +08:00
Tony 79a6e644e1
feat(route/thepaper): update sidebar sections (#21664) 2026-04-09 07:56:59 +08:00
Qi He (Heki) 42c6b49a1d
feat(route): add Polymarket (#21445)
* feat: add Polymarket

* feat(route): add Polymarket routes using Gamma API

Routes:
- /polymarket/events/:tag_slug? - List events by category
- /polymarket/event/:slug - Event details with markets
- /polymarket/search/:query - Keyword subscription
- /polymarket/series/:slug? - Recurring event series
- /polymarket/user/:address - User trading activity
- /polymarket/positions/:address - User positions
- /polymarket/leaderboard/:category?/:timePeriod? - Trader rankings

APIs used:
- Gamma API (gamma-api.polymarket.com): events, series
- Data API (data-api.polymarket.com): activity, positions, leaderboard

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

* feat(route): add Polymarket routes using Gamma API and Data API

Routes:
- /polymarket/events/:tagSlug? - List events by category
- /polymarket/event/:slug - Event details with markets
- /polymarket/search/:query - Keyword subscription
- /polymarket/series/:slug? - Recurring event series
- /polymarket/user/:address - User trading activity
- /polymarket/positions/:address - User positions
- /polymarket/leaderboard/:category?/:timePeriod? - Trader rankings

APIs used:
- Gamma API (gamma-api.polymarket.com): /events/pagination, /events/slug, /series, /public-search
- Data API (data-api.polymarket.com): /activity, /positions, /v1/leaderboard

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 23:05:05 +08:00
Mervyn Zhan 8f74424c39
fix(route/eastmoney): using `.html()` instead of `.text()` as description content (#21655)
fix #21654
2026-04-08 10:16:38 +08:00
Wenhao Deng 2933f894ac
feat(route/thinkingmachines): add news route for Thinking Machines Lab (#21609)
* route(thinkingmachines): add news route for Thinking Machines Lab

Add route for Thinking Machines Lab (thinkingmachines.ai) news page.
Founded by Mira Murati (ex-OpenAI CTO), the lab publishes news about
their AI research and products.

Closes #0

* fix: use import type and sort imports for oxlint

* fix: correct import sort order per simple-import-sort

* fix: strip title/author/pubDate heading from description, remove unnecessary try/catch

Address review feedback:
- Remove .post-heading block from description (title, author, pubDate have dedicated fields)
- Remove try/catch wrapper (requests do not throw errors)

* fix: remove article fallback and strip paginator from description
2026-04-07 03:01:16 +08:00
Guorui Yu d8eaee5889
fix(route/twitter): dynamically resolve GraphQL query IDs and fix production CookieAgent (#21544)
* fix(route/twitter): dynamically resolve GraphQL query IDs from Twitter JS bundles

Twitter rotates GraphQL query IDs every 2-4 weeks, causing 404 errors.
Instead of relying solely on hardcoded IDs, fetch and cache the latest
query IDs from Twitter's client-web main.js bundle at runtime.

- Add gql-id-resolver module to extract queryId/operationName pairs
- Cache resolved IDs using CACHE_CONTENT_EXPIRE (Redis supported)
- Fall back to hardcoded IDs if dynamic resolution fails
- Update init() to trigger resolution before first API call

Signed-off-by: yuguorui <yuguorui@pku.edu.cn>

* fix(route/twitter): use undici.fetch directly to preserve CookieAgent dispatcher

Both ofetch and the global wrappedFetch (request-rewriter) drop the
dispatcher option when constructing a new Request object, which prevents
the CookieAgent from attaching cookies in production builds. Use
undici.fetch directly for Twitter API requests to preserve the dispatcher.

Signed-off-by: yuguorui <yuguorui@pku.edu.cn>

---------

Signed-off-by: yuguorui <yuguorui@pku.edu.cn>
2026-04-06 22:46:29 +08:00