mirror of
https://github.com/p-stream/providers.git
synced 2026-01-11 20:10:33 +00:00
Update anilist.ts
This commit is contained in:
parent
bebb680927
commit
628d2f7401
1 changed files with 79 additions and 0 deletions
|
|
@ -108,3 +108,82 @@ export async function getAnilistIdFromMedia(ctx: ScrapeContext, media: MovieMedi
|
|||
cache.set(key, anilistId);
|
||||
return anilistId;
|
||||
}
|
||||
const anilistTitlesQuery = `
|
||||
query ($id: Int) {
|
||||
Media(id: $id, type: ANIME) {
|
||||
title {
|
||||
romaji
|
||||
english
|
||||
native
|
||||
}
|
||||
synonyms
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
type AnilistTitlesResponse = {
|
||||
data: {
|
||||
Media: {
|
||||
title: {
|
||||
romaji: string;
|
||||
english?: string;
|
||||
native?: string;
|
||||
};
|
||||
synonyms: string[];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
export async function getAnilistTitles(ctx: ScrapeContext, media: MovieMedia | ShowMedia): Promise<string[]> {
|
||||
const id = await getAnilistIdFromMedia(ctx, media);
|
||||
const res = await ctx.proxiedFetcher<AnilistTitlesResponse>('', {
|
||||
baseUrl: 'https://graphql.anilist.co',
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query: anilistTitlesQuery,
|
||||
variables: {
|
||||
id,
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
const titles = [
|
||||
res.data.Media.title.romaji,
|
||||
res.data.Media.title.english,
|
||||
res.data.Media.title.native,
|
||||
...res.data.Media.synonyms,
|
||||
]
|
||||
.filter((t): t is string => !!t)
|
||||
.map((t) => t.toLowerCase());
|
||||
|
||||
return titles;
|
||||
}
|
||||
|
||||
export async function getAnilistEnglishTitle(
|
||||
ctx: ScrapeContext,
|
||||
media: MovieMedia | ShowMedia,
|
||||
): Promise<string | null> {
|
||||
const id = await getAnilistIdFromMedia(ctx, media);
|
||||
const res = await ctx.proxiedFetcher<AnilistTitlesResponse>('', {
|
||||
baseUrl: 'https://graphql.anilist.co',
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query: anilistTitlesQuery,
|
||||
variables: {
|
||||
id,
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
const englishTitle = res.data.Media.title.english;
|
||||
|
||||
return englishTitle ? englishTitle.toLowerCase() : null;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue