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
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
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
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.
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.
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
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.