* 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
* 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>
<!--
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 元素的解析,适配了新的南航教务处页面样式
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`
* 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.
* 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>