19956 Commits

Author SHA1 Message Date
pseudoyu 0f184a37d4 feat(route/gfqh): add research reports
Reports from the GF Futures research site, filtered by the site's own
variety and report type codes. The reports are mostly PDF attachments,
so each item lists the attachment links after the article body.

Closes #23604
v2026.10.16-8435.0f184a3
2026-10-16 20:05:22 +08:00
pseudoyu 8e94b94947 fix(route/pixiv): read only the statement that defines window.pixiv
8aeca4cf7 read the novel from the arguments of Object.defineProperty, but
evaluateScriptCallback keeps the last matching call. The reported "No
novel data found" can only come from a descriptor without value.novel,
which means a later defineProperty call on the webview page replaced the
one that defines window.pixiv. Find the
Object.defineProperty(window, 'pixiv', ...) statement and read only that,
so other scripts on the page no longer affect the result.

The repo has no home for route regression tests (tests/ was removed in
4cf494653 and lib/routes tests are rejected), so this was checked with a
temporary test against the page head quoted in upbit/pixivpy#337, with a
second defineProperty call in a later script and in the same script: both
fail with "No novel data found" before this change and pass after it.

Closes #23592
v2026.10.16-8434.8e94b94
2026-10-16 17:32:59 +08:00
dependabot[bot] 6577a137bf chore(deps-dev): bump the typescript-eslint group with 2 updates (#23596)
Bumps the typescript-eslint group with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser).


Updates `@typescript-eslint/eslint-plugin` from 8.71.1 to 8.71.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.71.2/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.71.1 to 8.71.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.71.2/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.71.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.71.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-16 08:16:53 +00:00
dependabot[bot] d9a6d936d6 chore(deps): bump @scalar/hono-api-reference (#23594)
Bumps the hono group with 1 update: [@scalar/hono-api-reference](https://github.com/scalar/scalar/tree/HEAD/integrations/hono).


Updates `@scalar/hono-api-reference` from 0.12.11 to 0.12.12
- [Release notes](https://github.com/scalar/scalar/releases)
- [Changelog](https://github.com/scalar/scalar/blob/main/integrations/hono/CHANGELOG.md)
- [Commits](https://github.com/scalar/scalar/commits/HEAD/integrations/hono)

---
updated-dependencies:
- dependency-name: "@scalar/hono-api-reference"
  dependency-version: 0.12.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: hono
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-16 08:16:26 +00:00
dependabot[bot] 5652d11fd6 chore(deps): bump zod from 4.6.6 to 4.6.7 (#23600)
Bumps [zod](https://github.com/colinhacks/zod) from 4.6.6 to 4.6.7.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.6.6...v4.6.7)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.6.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-16 08:15:45 +00:00
dependabot[bot] e5fbd8f521 chore(deps-dev): bump @mswjs/interceptors (#23595)
Bumps the msw group with 1 update: [@mswjs/interceptors](https://github.com/mswjs/interceptors).


Updates `@mswjs/interceptors` from 0.45.7 to 0.45.8
- [Release notes](https://github.com/mswjs/interceptors/releases)
- [Commits](https://github.com/mswjs/interceptors/compare/v0.45.7...v0.45.8)

---
updated-dependencies:
- dependency-name: "@mswjs/interceptors"
  dependency-version: 0.45.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: msw
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-16 08:12:53 +00:00
pseudoyu 8aeca4cf73 fix(route/pixiv): read NSFW novel data defined with Object.defineProperty
The app webview page defines its data with
Object.defineProperty(window, 'pixiv', { value: { novel, ... } }).
JSDOM ran that call, but the script data parser does not execute calls,
so window.pixiv was never set and the novel series route failed with
"Unsupported script data expression: CallExpression". Read the value from
the defineProperty call arguments instead.

Closes #23592
v2026.10.16-8433.8aeca4c
2026-10-16 14:36:46 +08:00
github-actions[bot] f515e234f5 style: auto format 2026-10-15 14:45:12 +00:00
DIYgod f23ada8a63 chore: integrate upstream before publishing route recovery v2026.10.15-8432.f23ada8 2026-10-15 22:40:17 +08:00
DIYgod 9f81fd7dfc refactor(routes): remove integrations for retired sources
Remove nine route definitions and their unused namespace/helper files after
checking the live source pages and previously documented alternatives:

- 6park: both the forum and news origins explicitly announce permanent
  closure. Their new-community link does not preserve the former channels.
- 56kog: the homepage, category and ranking pages now contain the same
  unrelated advertising redirect, with parked-domain authoritative DNS.
- ACG Vinyl: the configured domain identifies its original hosting site,
  which explicitly says it has been closed after 180 days of inactivity.
  The publisher also announced that the news website would stop updating.
- Cartoonmad: the homepage and original comic URL lead to GoDaddy's
  domain-sale destination rather than the former comic source.
- DoMP4: the configured homepage, original detail and update pages all
  return a domain-sale form. Previously documented domains yielded no
  verified successor source.

Do not remove sources based only on an HTTP 5xx, TLS error or timeout.
Retain other uncertain sources and preserve the separately repaired
Cloud Native Community integration, whose official successor is verified.

Validation: regenerate the route registry, confirm exactly nine removed
patterns and no other additions/removals, and request every removed
example through the actual app (404 with zero upstream requests).
TypeScript, the retained migration's lint/format checks and diff checks
pass. Public-source evidence is saved in the local retirement audit.
2026-10-15 22:12:45 +08:00
DIYgod 6896cf1761 fix(cloudnative): follow official website migration
The previous domain now leads to a domain-sale page. The publisher's
repository explicitly identifies cloudnative.jimmysong.io as its successor:
https://github.com/cloudnativeto/cloudnative.to/blob/master/README.md

Update the namespace and blog source, resolve relative article links, and
preserve individual categories and the source publication dates.

Verified the unchanged /cloudnative/blog example through the actual RSSHub
application: RSS 200 with 10 distinct article links, valid dates and native
summaries. Both changed files pass lint and formatting checks.
2026-10-15 22:09:38 +08:00
DIYgod ac741fb34e fix(ele.me): include public announcement content 2026-10-15 20:49:50 +08:00
DIYgod 9d8699500e fix(cug): include WeChat article bodies and lazy images 2026-10-15 20:27:26 +08:00
DIYgod be9b6efced fix(hust): preserve article titles and exclude navigation headings 2026-10-15 20:24:36 +08:00
DIYgod df867e7ec7 fix(tencent): recover developer article content with a shared browser 2026-10-15 20:22:39 +08:00
DIYgod c23e028622 fix(ieee): recover article metadata with a shared browser 2026-10-15 20:08:53 +08:00
DIYgod bb329ed7e2 fix(wenku8): include source update dates in category feeds 2026-10-15 19:44:22 +08:00
dependabot[bot] 00c39a2fde chore(deps): bump devenv from a73c5b8 to a60ff7d in the nix group (#23585)
Bumps the nix group with 1 update: [devenv](https://github.com/cachix/devenv).


Updates `devenv` from `a73c5b8` to `a60ff7d`
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/a73c5b84c9527760f009232988466763068f9f61...a60ff7da8843686d06b4c6646846024d97138da8)

---
updated-dependencies:
- dependency-name: devenv
  dependency-version: a60ff7da8843686d06b4c6646846024d97138da8
  dependency-type: direct:production
  dependency-group: nix
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 19:39:36 +08:00
DIYgod c3151da81e fix(medium): recover authenticated feeds with source previews 2026-10-15 19:36:37 +08:00
DIYgod 70284f0574 fix(taoguba): support authenticated article content 2026-10-15 19:28:21 +08:00
dependabot[bot] 77ca152da2 chore(deps-dev): bump @cloudflare/workers-types (#23584)
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).


Updates `@cloudflare/workers-types` from 5.20261011.1 to 5.20261012.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)

---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
  dependency-version: 5.20261012.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: cloudflare
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 19:19:14 +08:00
DIYgod 152d3434d3 fix(ft): preserve RSS content when article enrichment is unavailable 2026-10-15 19:10:34 +08:00
pseudoyu b4a7c36fbc feat(route/bandcamp): add artist releases
Follow the releases of an artist or label from its music page. The page
renders the first releases in its grid and the rest in
data-client-items, so read both to cover the whole discography, then
parse each release with the shared parser. The latest 10 are returned
by default, and an artist without releases gives an empty feed.

Refs #7477
v2026.10.15-8431.b4a7c36
2026-10-15 18:27:06 +08:00
pseudoyu 7e3888204f refactor(route/bandcamp): share the release page parser
Move the album and track page parsing out of the tag route into
utils.tsx so other Bandcamp routes can reuse it. The tag route still
takes the title, author and link from the discover API, so its feed is
unchanged.
2026-10-15 18:26:46 +08:00
DIYgod b680d0f813 fix(xueqiu): use current authenticated feed endpoints 2026-10-15 18:05:54 +08:00
DIYgod dedcd100e0 fix(cara): support authenticated likes feeds 2026-10-15 17:36:51 +08:00
DIYgod bee8d850ce fix(discourse): keep notification metadata out of post caches 2026-10-15 16:35:27 +08:00
DIYgod da1ac8582b fix(manhuagui): ignore empty subscription placeholders 2026-10-15 15:42:51 +08:00
DIYgod 5414312f75 fix(zhihu): render pins in topic and collection feeds 2026-10-15 14:37:09 +08:00
DIYgod 27d3073866 fix(ycwb): recover verified article bodies with a shared browser 2026-10-15 13:51:57 +08:00
DIYgod 13b93c3d66 fix(skysports): include public live blog updates in article bodies 2026-10-15 13:51:57 +08:00
DIYgod af9feefc23 fix(secshi): recover the current public movie list through the browser 2026-10-15 13:38:52 +08:00
DIYgod 74662de79d fix(mox): use the current Kmoe source with scoped authentication 2026-10-15 13:36:17 +08:00
DIYgod 2b7b0ce67c fix(dx2025): recover official article pages through the shared browser 2026-10-15 13:34:27 +08:00
DIYgod 27d48020db fix(upc): load public career articles from the official data API 2026-10-15 13:29:56 +08:00
DIYgod e949bce5de fix(modb): cache article bodies with bounded detail requests 2026-10-15 13:29:56 +08:00
DIYgod bc585bf6e5 fix(im2maker): recover public feeds after certificate trust errors 2026-10-15 13:23:44 +08:00
DIYgod a67cb081ad fix(hubu): recover resource college notices and official homepage 2026-10-15 13:23:44 +08:00
DIYgod d2462848ce fix(xueqiu): recover anonymous columns behind browser verification 2026-10-15 13:18:16 +08:00
DIYgod 8bb38bedc0 fix(wainao): include public React special report bodies 2026-10-15 13:18:16 +08:00
DIYgod 8a698d5206 fix(latepost): recover public articles after certificate trust errors 2026-10-15 13:18:16 +08:00
DIYgod 2bd50f8a49 fix(buaa): recover public new books through the shared browser 2026-10-15 13:18:16 +08:00
DIYgod c88cb13804 fix(tongji): recover public notices behind source verification 2026-10-15 13:03:28 +08:00
DIYgod b655aad3cb fix(mi): link golden awards to the public subject page 2026-10-15 13:03:28 +08:00
DIYgod ffdc29a745 fix(zhitongcaijing): recover verified article pages in one browser session 2026-10-15 13:03:28 +08:00
DIYgod 9bf0d55189 fix(cug): recover admissions articles with the current template 2026-10-15 13:03:28 +08:00
DIYgod 0da7c7f6ef fix(cug): fetch verified university news article links 2026-10-15 13:03:28 +08:00
DIYgod 4b4c26433d fix(bse): recover list requests through the public browser session 2026-10-15 13:03:28 +08:00
DIYgod 113646e1d5 fix(jinse): repair legacy links and redirected feed metadata 2026-10-15 13:03:28 +08:00
DIYgod 2c1ec99912 fix(ftchinese): parse public quiz pages without a story container 2026-10-15 12:36:26 +08:00