UNPKG

@yuna0x0/anilist-node

Version:

A lightweight Node.js wrapper for the AniList API

69 lines (61 loc) 2.36 kB
/** * Access recommendations on AniList * @since 1.8.0 * @memberof AniList */ class Recommendation { /** * @description This constructor is meant for internal use and is apart of initializing. You cannot access this * through the AniList class and are not expect to. * @param { Utilities } utilities - The AniList Utilities class. * @hideconstructor */ constructor(utilities) { this.util = utilities; } /** * Get AniList recommendations for a media. * @param {Number} mediaID The AniList media ID * @param {Number} page Target a specific page number for recommended. * @param {Number} perPage Limits the page amount to a specific number. 25 is max as per AniList limits. * @returns {RecommendationList} * @since 1.8.0 */ getList(mediaID, page = 1, perPage = 25) { if (typeof mediaID !== "number") { throw new Error("mediaID is not a number type!"); } if (typeof page !== "number") { throw new Error("page is not a number type!"); } if (typeof perPage !== "number") { throw new Error("perPage is not a number type!"); } const recommendQuery = `query ($page: Int, $perPage: Int, $id: Int) { Recommendation (mediaId: $id) { media { id title { romaji english native userPreferred } type } } Page(page: $page, perPage: $perPage) { recommendations(mediaId: $id, sort: RATING_DESC) { rating userRating user { id name } id mediaRecommendation { id title { romaji english native userPreferred } type } } } }`; return this.util.send(recommendQuery, { id: mediaID, page: page, perPage: perPage }); } /** * Get an AniList recommendation via its ID * @param {Number} recommendID The AniList recommendation ID * @returns {SingleRecommendation} * @since 1.8.0 */ get(recommendID) { if (typeof recommendID !== "number") { throw new Error("recommendID is not a number type!"); } const recommendQuery = `query ($id: Int) { Recommendation (id: $id) { id rating userRating media { id title { romaji english native userPreferred } type } mediaRecommendation { id title { romaji english native userPreferred } type } user { id name } } }`; return this.util.send(recommendQuery, { id: recommendID }).then((data) => { return data.Recommendation; }); } } module.exports = Recommendation;