• Extract AniList ID from a Comick manga's external links.

    Parameters

    Returns Promise<null | number>

    Promise resolving to AniList ID if found

    export async function extractAniListIdFromComick(
    comickManga: ComickManga,
    ): Promise<number | null> {
    try {
    // Get detailed info which includes external links
    const detail = await getComickMangaDetail(comickManga.slug);

    if (!detail?.comic) {
    console.log(
    `🔗 No comic data found for Comick manga: ${comickManga.title}`,
    );
    return null;
    }

    // Check if links exist and handle the actual structure (object with site keys)
    const links = detail.comic.links;
    if (!links) {
    console.log(
    `🔗 No external links found for Comick manga: ${comickManga.title}`,
    );
    return null;
    }

    if (typeof links !== "object") {
    console.log(
    `🔗 Links is not an object for Comick manga: ${comickManga.title}`,
    { linksType: typeof links, links },
    );
    return null;
    }

    // Look for AniList ID - 'al' is the key for AniList in Comick API
    const anilistId = links.al;

    if (!anilistId) {
    console.log(
    `🔗 No AniList ID found for Comick manga: ${comickManga.title}`,
    { availableLinks: Object.keys(links) },
    );
    return null;
    }

    // Convert to number
    const parsedAnilistId = parseInt(anilistId, 10);

    if (isNaN(parsedAnilistId)) {
    console.log(
    `🔗 Invalid AniList ID format for Comick manga: ${comickManga.title}`,
    { anilistId },
    );
    return null;
    }

    console.log(
    `🎯 Found AniList ID ${parsedAnilistId} for Comick manga: ${comickManga.title}`,
    );

    return parsedAnilistId;
    } catch (error) {
    console.error(
    `❌ Failed to extract AniList ID for Comick manga ${comickManga.title}:`,
    error,
    );
    return null;
    }
    }