UNPKG

hanime-crave

Version:
59 lines (49 loc) 2.58 kB
const HentaiVideo = require('../structures/video.js'); const HentaiEpisodeInfo = require('../structures/episodeInfo.js'); module.exports = (link) => { return new Promise((res, rej) => { if(!link) return rej(new Error("Video link is not provided.")); fetch(link) .then(resp => resp.text()) .then(body => { try { let data = JSON.parse(body.match(/window\.__NUXT__=(.+);<\/script>/)[1]); let vidInfo = data.state.data.video.hentai_video; let vidServer = data.state.data.video.videos_manifest.servers[0]; if(!vidServer) return rej(new Error("No video servers found.")); vidServer.streams.map(m => m.url = !m.url ? `https://weeb.hanime.tv/weeb-api-cache/api/v8/m3u8s/${m.id}.m3u8` : m.url); let streams = []; for(let i = 0; i < vidServer.streams.length; i++) streams[i] = new HentaiVideo(vidServer.streams[i].url, vidServer.streams[i].width, eval(vidServer.streams[i].height), vidServer.streams[i].duration_in_ms); let video = new HentaiEpisodeInfo(vidInfo.name, vidInfo.slug, vidInfo.created_at, vidInfo.created_at_unix, vidInfo.released_at, vidInfo.released_at_unix, vidInfo.description, vidInfo.views, vidInfo.interests, vidInfo.poster_url, vidInfo.cover_url, vidInfo.brand, vidInfo.is_censored, vidInfo.likes, vidInfo.dislikes, vidInfo.downloads, vidInfo.is_banned_in, vidInfo.hentai_tags, streams); res(video) } catch(err) { rej(err) } }) .catch(err => rej(err)) }) }