"""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/. 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, )