@tiktikimelbo7/extensions
Version:
Nodejs library that provides high-level APIs for obtaining information on various entertainment media such as books, movies, comic books, anime, manga, and so on.
195 lines (194 loc) • 8.81 kB
TypeScript
import { AxiosAdapter } from 'axios';
import { AnimeParser, ISearch, IAnimeInfo, IAnimeResult, ISource, IAnimeEpisode, IEpisodeServer, Genres, MangaParser, IMangaChapterPage, IMangaInfo, IMangaResult, ProxyConfig } from '../../models';
declare class Anilist extends AnimeParser {
proxyConfig?: ProxyConfig | undefined;
readonly name = "Anilist";
protected baseUrl: string;
protected logo: string;
protected classPath: string;
private readonly anilistGraphqlUrl;
private readonly kitsuGraphqlUrl;
private readonly malSyncUrl;
private readonly enimeUrl;
provider: AnimeParser;
/**
* This class maps anilist to kitsu with any other anime provider.
* kitsu is used for episode images, titles and description.
* @param provider anime provider (optional) default: Gogoanime
* @param proxyConfig proxy config (optional)
* @param adapter axios adapter (optional)
*/
constructor(provider?: AnimeParser, proxyConfig?: ProxyConfig | undefined, adapter?: AxiosAdapter);
/**
* @param query Search query
* @param page Page number (optional)
* @param perPage Number of results per page (optional) (default: 15) (max: 50)
*/
search: (query: string, page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
/**
*
* @param query Search query (optional)
* @param type Media type (optional) (default: `ANIME`) (options: `ANIME`, `MANGA`)
* @param page Page number (optional)
* @param perPage Number of results per page (optional) (default: `20`) (max: `50`)
* @param format Format (optional) (options: `TV`, `TV_SHORT`, `MOVIE`, `SPECIAL`, `OVA`, `ONA`, `MUSIC`)
* @param sort Sort (optional) (Default: `[POPULARITY_DESC, SCORE_DESC]`) (options: `POPULARITY_DESC`, `POPULARITY`, `TRENDING_DESC`, `TRENDING`, `UPDATED_AT_DESC`, `UPDATED_AT`, `START_DATE_DESC`, `START_DATE`, `END_DATE_DESC`, `END_DATE`, `FAVOURITES_DESC`, `FAVOURITES`, `SCORE_DESC`, `SCORE`, `TITLE_ROMAJI_DESC`, `TITLE_ROMAJI`, `TITLE_ENGLISH_DESC`, `TITLE_ENGLISH`, `TITLE_NATIVE_DESC`, `TITLE_NATIVE`, `EPISODES_DESC`, `EPISODES`, `ID`, `ID_DESC`)
* @param genres Genres (optional) (options: `Action`, `Adventure`, `Cars`, `Comedy`, `Drama`, `Fantasy`, `Horror`, `Mahou Shoujo`, `Mecha`, `Music`, `Mystery`, `Psychological`, `Romance`, `Sci-Fi`, `Slice of Life`, `Sports`, `Supernatural`, `Thriller`)
* @param id anilist Id (optional)
* @param year Year (optional) e.g. `2022`
* @param status Status (optional) (options: `RELEASING`, `FINISHED`, `NOT_YET_RELEASED`, `CANCELLED`, `HIATUS`)
* @param season Season (optional) (options: `WINTER`, `SPRING`, `SUMMER`, `FALL`)
*/
advancedSearch: (query?: string, type?: string, page?: number, perPage?: number, format?: string, sort?: string[], genres?: Genres[] | string[], id?: string | number, year?: number, status?: string, season?: string) => Promise<ISearch<IAnimeResult>>;
/**
*
* @param id Anime id
* @param dub to get dubbed episodes (optional) set to `true` to get dubbed episodes. **ONLY WORKS FOR GOGOANIME**
* @param fetchFiller to get filler boolean on the episode object (optional) set to `true` to get filler boolean on the episode object.
*/
fetchAnimeInfo: (id: string, dub?: boolean, fetchFiller?: boolean) => Promise<IAnimeInfo>;
/**
*
* @param episodeId Episode id
*/
fetchEpisodeSources: (episodeId: string, ...args: any) => Promise<ISource>;
/**
*
* @param episodeId Episode id
*/
fetchEpisodeServers: (episodeId: string) => Promise<IEpisodeServer[]>;
private findAnime;
private findAnimeSlug;
private findKitsuAnime;
/**
* @param page page number to search for (optional)
* @param perPage number of results per page (optional)
*/
fetchTrendingAnime: (page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
/**
*
* @param page page number to search for (optional)
* @param perPage number of results per page (optional)
*/
fetchPopularAnime: (page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
/**
*
* @param page page number (optional)
* @param perPage number of results per page (optional)
* @param weekStart Filter by the start of the week (optional) (default: todays date) (options: 2 = Monday, 3 = Tuesday, 4 = Wednesday, 5 = Thursday, 6 = Friday, 0 = Saturday, 1 = Sunday) you can use either the number or the string
* @param weekEnd Filter by the end of the week (optional) similar to weekStart
* @param notYetAired if true will return anime that have not yet aired (optional)
* @returns the next airing episodes
*/
fetchAiringSchedule: (page?: number, perPage?: number, weekStart?: number | string, weekEnd?: number | string, notYetAired?: boolean) => Promise<ISearch<IAnimeResult>>;
/**
*
* @param genres An array of genres to filter by (optional) genres: [`Action`, `Adventure`, `Cars`, `Comedy`, `Drama`, `Fantasy`, `Horror`, `Mahou Shoujo`, `Mecha`, `Music`, `Mystery`, `Psychological`, `Romance`, `Sci-Fi`, `Slice of Life`, `Sports`, `Supernatural`, `Thriller`]
* @param page page number (optional)
* @param perPage number of results per page (optional)
*/
fetchAnimeGenres: (genres: string[] | Genres[], page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
private findAnimeRaw;
/**
* @returns a random anime
*/
fetchRandomAnime: () => Promise<IAnimeInfo>;
/**
* @param provider The provider to get the episode Ids from (optional) default: `gogoanime` (options: `gogoanime`, `zoro`)
* @param page page number (optional)
* @param perPage number of results per page (optional)
*/
fetchRecentEpisodes: (provider?: 'gogoanime' | 'zoro', page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
private fetchDefaultEpisodeList;
/**
* @param id anilist id
* @param dub language of the dubbed version (optional) currently only works for gogoanime
* @param fetchFiller to get filler boolean on the episode object (optional) set to `true` to get filler boolean on the episode object.
* @returns episode list **(without anime info)**
*/
fetchEpisodesListById: (id: string, dub?: boolean, fetchFiller?: boolean) => Promise<IAnimeEpisode[]>;
/**
* @param id anilist id
* @returns anilist data for the anime **(without episodes)** (use `fetchEpisodesListById` to get the episodes) (use `fetchAnimeInfo` to get both)
*/
fetchAnilistInfoById: (id: string) => Promise<IAnimeInfo>;
/**
* TODO: finish this (got lazy)
* @param id staff id from anilist
*
*/
fetchStaffById: (id: number) => Promise<never>;
/**
*
* @param id character id from anilist
*/
fetchCharacterInfoById: (id: string) => Promise<{
id: any;
name: {
first: any;
last: any;
full: any;
native: any;
userPreferred: any;
alternative: any;
alternativeSpoiler: any;
};
image: any;
description: any;
gender: any;
dateOfBirth: {
year: any;
month: any;
day: any;
};
bloodType: any;
age: any;
hairColor: any;
eyeColor: any;
height: any;
weight: any;
occupation: any;
partner: any;
relatives: any;
race: any;
rank: any;
previousPosition: any;
dislikes: any;
sign: any;
zodicSign: any;
zodicAnimal: any;
themeSong: any;
relations: any;
}>;
/**
* Anilist Anime class
*/
static Anime: typeof Anilist;
/**
* Anilist Manga Class
*/
static Manga: {
new (provider?: MangaParser): {
provider: MangaParser;
/**
*
* @param query query to search for
* @param page (optional) page number (default: `1`)
* @param perPage (optional) number of results per page (default: `20`)
*/
search: (query: string, page?: number, perPage?: number) => Promise<ISearch<IMangaResult>>;
/**
*
* @param chapterId chapter id
* @param args args to pass to the provider (if any)
* @returns
*/
fetchChapterPages: (chapterId: string, ...args: any) => Promise<IMangaChapterPage[]>;
fetchMangaInfo: (id: string, ...args: any) => Promise<IMangaInfo>;
};
};
private findMangaSlug;
private findMangaRaw;
private findManga;
}
export default Anilist;