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