• Search for manga on Comick and get their AniList counterparts.

    Parameters

    • query: string

      The search query

    • accessToken: string

      AniList access token for fetching manga details

    • limit: number = 1

      Maximum number of results to return (default: 1)

    Returns Promise<EnhancedAniListManga[]>

    Promise resolving to enhanced AniList manga with Comick source info

    export async function searchComickAndGetAniListManga(
    query: string,
    accessToken: string,
    limit: number = 1,
    ): Promise<EnhancedAniListManga[]> {
    try {
    console.log(`🔍 Starting Comick search for "${query}" with limit ${limit}`);

    // Search on Comick
    const comickResults = await searchComickManga(query, limit);

    if (!comickResults || comickResults.length === 0) {
    console.log(`📦 No Comick results found for "${query}"`);
    return [];
    }

    console.log(
    `📦 Found ${comickResults.length} Comick results, extracting AniList IDs...`,
    );

    // Extract AniList IDs from Comick results
    const anilistIds: number[] = [];
    const comickSourceMap = new Map<number, ComickManga>();

    for (const comickManga of comickResults) {
    const anilistId = await extractAniListIdFromComick(comickManga);

    if (anilistId) {
    anilistIds.push(anilistId);
    comickSourceMap.set(anilistId, comickManga);
    }
    }

    if (anilistIds.length === 0) {
    console.log(`🔗 No AniList links found in Comick results for "${query}"`);
    return [];
    }

    console.log(
    `🎯 Found ${anilistIds.length} AniList IDs from Comick: [${anilistIds.join(", ")}]`,
    );

    // Fetch AniList manga details
    const anilistManga = await getMangaByIds(anilistIds, accessToken);

    if (!anilistManga || anilistManga.length === 0) {
    console.log(
    `❌ Failed to fetch AniList manga for IDs: [${anilistIds.join(", ")}]`,
    );
    return [];
    }

    // Enhance AniList manga with Comick source info
    const enhancedManga: EnhancedAniListManga[] = anilistManga.map((manga) => {
    const comickSource = comickSourceMap.get(manga.id);

    return {
    ...manga,
    comickSource: comickSource
    ? {
    title: comickSource.title,
    slug: comickSource.slug,
    comickId: comickSource.id,
    foundViaComick: true,
    }
    : undefined,
    };
    });

    console.log(
    `✅ Successfully enhanced ${enhancedManga.length} AniList manga with Comick source info`,
    );
    return enhancedManga;
    } catch (error) {
    console.error(
    `❌ Comick search and AniList fetch failed for "${query}":`,
    error,
    );
    return [];
    }
    }