feat(route/bilibili): authenticated article full text and current Opus images
What feature is it?
Enhance the existing Bilibili routes so a self-hosted RSSHub instance can use an explicitly configured Bilibili session to retrieve article bodies that the logged-in account is already allowed to read, and render images from the current Opus dynamic payload shape.
Proposed behavior:
- Allow
/bilibili/user/article/:uid/:loginUid?to selectBILIBILI_COOKIE_<loginUid>, falling back to the configured Bilibili cookie whenloginUidis omitted. - Fetch each article body from the Opus detail API, with the article page as a fallback.
- Keep anonymous/public behavior unchanged.
- Cache article details per authentication context and never cache or publish an authenticated title-only response as a successful full-text item.
- Normalize current Opus image modules in
/bilibili/user/dynamic/:uid/:routeParams?, including the image payload used by https://www.bilibili.com/opus/1223675872465125381.
This is authenticated access, not a paywall bypass: RSSHub should only return protected content when the supplied account can already access it.
What problem does this feature solve?
The current article route can return only titles/previews for charging-exclusive articles even when the self-hosted instance has a valid Bilibili cookie. Separately, current Opus dynamics may contain valid pictures in a newer module shape that the route does not render, so image posts appear text-only.
This makes the generated feed incomplete for legitimate logged-in use and causes full-text readers to persist title-only entries.
Additional description
Suggested acceptance criteria:
- Public articles still work without a cookie.
- With
BILIBILI_COOKIE_<loginUid>, articles already unlocked for that account contain their complete body. - CAPTCHA, authentication failure, and title-only responses are not cached or emitted as authenticated full-text success.
- Cache keys distinguish anonymous and authenticated sessions.
- Current Opus picture modules render all valid images in dynamic entries.
Related but not duplicate:
- #19985 covered an older
undefinedpreview-image regression and was fixed separately. - #18506 covers Bilibili API request failures (
-352), not article authorization or Opus image parsing.
This is not a duplicated feature request or new RSS proposal
- I have searched existing issues to ensure this feature has not already been requested and this is not a new RSS proposal.
Source: DIYgod/RSSHub