feat(pixiv): flip dispatch to the native ingester (#129 step 4)
pixiv joins NATIVE_INGESTER_PLATFORMS: download/verify/preview and the recover/recapture UI actions now route through PixivIngester. Campaign id is parsed straight from the source URL (numeric user id — no network resolver), with a platform-aware resolution-failure message. auth_token now rides the uniform adapter construction (token platforms use it, cookie platforms accept-and-ignore), and the preview endpoint fetches/threads it. The legacy gallery-dl pixiv path is fully removed (PLATFORM_DEFAULTS entry + the refresh-token config branches in download/verify) per no-legacy policy; gallery-dl keeps hentaifoundry/discord/deviantart until they migrate/retire. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM
This commit is contained in:
@@ -3,12 +3,15 @@ native ingester vs. gallery-dl. Pure, no DB."""
|
||||
|
||||
from backend.app.services.download_backends import (
|
||||
NATIVE_INGESTER_PLATFORMS,
|
||||
_campaign_resolution_error,
|
||||
_native_ingester_cls,
|
||||
uses_native_ingester,
|
||||
)
|
||||
from backend.app.services.pixiv_ingester import PixivIngester
|
||||
|
||||
|
||||
def test_native_platforms():
|
||||
for platform in ("patreon", "subscribestar"):
|
||||
for platform in ("patreon", "subscribestar", "pixiv"):
|
||||
assert uses_native_ingester(platform) is True
|
||||
assert platform in NATIVE_INGESTER_PLATFORMS
|
||||
|
||||
@@ -16,9 +19,19 @@ def test_native_platforms():
|
||||
def test_gallery_dl_platforms_are_not_native():
|
||||
# The platforms still served by gallery-dl must NOT route to the native
|
||||
# ingester — guards an accidental over-broad migration.
|
||||
for platform in ("hentaifoundry", "discord", "pixiv", "deviantart"):
|
||||
for platform in ("hentaifoundry", "discord", "deviantart"):
|
||||
assert uses_native_ingester(platform) is False
|
||||
|
||||
|
||||
def test_unknown_platform_is_not_native():
|
||||
assert uses_native_ingester("nonsense") is False
|
||||
|
||||
|
||||
def test_pixiv_dispatches_to_its_ingester():
|
||||
assert _native_ingester_cls("pixiv") is PixivIngester
|
||||
|
||||
|
||||
def test_pixiv_resolution_error_names_the_expected_url_shape():
|
||||
msg = _campaign_resolution_error("pixiv", "https://www.pixiv.net/artworks/1")
|
||||
assert "pixiv user id" in msg
|
||||
assert "users/<id>" in msg
|
||||
|
||||
Reference in New Issue
Block a user