0bbcdee3bd
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
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
"""Pixiv — one quirk.
|
|
|
|
post_url: the sidecar's `url` (legacy gallery-dl era) is the image URL
|
|
on `i.pximg.net`, and the native post record (#129) writes no url key
|
|
at all — the permalink is synthesized from `id` here either way:
|
|
/artworks/<id>. external_post_id (= `id`) was already correct, so no
|
|
override there.
|
|
|
|
Downloads run through the native ingester (pixiv_ingester.py), not
|
|
gallery-dl; this registry entry still owns URL validation, sidecar
|
|
parsing, and the credential surface (the OAuth refresh token).
|
|
"""
|
|
|
|
from .base import GD_DEFAULTS, PlatformInfo, str_id_value
|
|
|
|
|
|
def derive_post_url(data: dict) -> str | None:
|
|
pid = str_id_value(data.get("id"))
|
|
if pid:
|
|
return f"https://www.pixiv.net/artworks/{pid}"
|
|
return None
|
|
|
|
|
|
INFO = PlatformInfo(
|
|
key="pixiv",
|
|
name="Pixiv",
|
|
description="Download artwork from Pixiv artists",
|
|
auth_type="token",
|
|
requires_auth=True,
|
|
url_pattern=r"^https?://(www\.)?pixiv\.net/",
|
|
url_examples=[
|
|
"https://www.pixiv.net/users/12345678",
|
|
"https://www.pixiv.net/en/users/12345678",
|
|
],
|
|
default_config={**GD_DEFAULTS, "content_types": ["all"]},
|
|
notes="Requires OAuth refresh token. Run `gallery-dl oauth:pixiv` to obtain one.",
|
|
derive_post_url=derive_post_url,
|
|
)
|