UNPKG

hanime-crave

Version:
79 lines (67 loc) 2.75 kB
const HentaiEpisode = require('../structures/episode.js'); const tag = require('./tag.js'); const defaults = { tag: 'ahegao', page: 0, order: 'desc' }; function addMissingArgs(args) { let keys = Object.keys(defaults); let newArgs = args; for(let i = 0; i < keys.length; i++) if(!newArgs.hasOwnProperty(keys[i])) newArgs[keys[i]] = defaults[keys[i]]; return newArgs } module.exports = (args = defaults) => { return new Promise((res, rej) => { if(typeof args !== 'object') { if(!isNaN(args)) args = addMissingArgs({page: args}); if(typeof args === 'string') { if(['asc','desc'].includes(args)) args = addMissingArgs({order: args}) else args = addMissingArgs({tag: args}) } } else args = addMissingArgs(args); if(typeof args !== 'object' || (args || []).length >= 0) return rej(new Error("Wrong arguments format.")); fetch( `https://hw.hanime.tv/api/v8/browse/hentai-tags/${args.tag}?page=${args.page}&order_by=created_at_unix&ordering=${args.order}`, { "headers": { "x-signature-version": "web2" } } ) .then(resp => resp.json()) .then(json => { let episodes = []; for(let i = 0; i < json.hentai_videos.length; i++) episodes[i] = new HentaiEpisode(json.hentai_videos[i].name, json.hentai_videos[i].slug, json.hentai_videos[i].created_at, json.hentai_videos[i].created_at_unix, json.hentai_videos[i].released_at, json.hentai_videos[i].released_at_unix, json.hentai_videos[i].views, json.hentai_videos[i].interests, json.hentai_videos[i].poster_url, json.hentai_videos[i].cover_url, json.hentai_videos[i].brand, json.hentai_videos[i].is_censored, json.hentai_videos[i].likes, json.hentai_videos[i].dislikes, json.hentai_videos[i].downloads, json.hentai_videos[i].is_banned_in); res({ episodes: episodes, query: {page: args.page, order: args.order}, next: function() { args.page += 1; return tag(args) } }) }) .catch(err => rej(err)) }) }