anigo-anime-api
Version:
Anigo Anime API scrapes data from gogoanime and animixplay
91 lines (77 loc) • 3.08 kB
JavaScript
const axios = require('axios');
const { load } = require('cheerio');
const animixBase = "https://animixplay.to/"
const USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36";
const headerOption = { headers: { "User-Agent": USER_AGENT } };
// consting helper functions
const {
encodeString,
decodeStreamingLinkAnimix
} = require('../helper/utils.js');
/**
* @deprecated This function is deprecated, use getGogoanimeEpisodeSource insead
* @param {string} name
* @param {string} epNum
* @returns {Array<object>}
*/
async function getEpisodeSourceFromAnimix(name, epNum) {
var deprecated = true;
if(deprecated) return "This function is deprecated, use getGogoanimeEpisodeSource insead"
if(!name) throw new Error(`You must provide an anime name!`);
if(!epNum) throw new Error(`episode number is required!`)
let sources = [];
let sources_bk = [];
let type;
let episodeGogoLink;
try {
// if (!episodeId) return {
// error: "No episode ID provided"
// }
const episodeId = name.split(" ").join("-").toLocaleLowerCase() + '-episode-' + epNum.split(" ");
const animeId = episodeId.split("-").reverse().splice(2).reverse().join("-")
const episodeNum = episodeId.split("-").splice(-1).join("");
const res = await axios.get(animixBase + `v1/${animeId}`, headerOption);
const $ = load(res.data)
const epList = JSON.parse($("#epslistplace").text());
if (epList.extra) {
if (episodeNum in epList.extra) {
episodeGogoLink = new URL("https:" + epList.extra[episodeNum]);
} else {
episodeGogoLink = new URL("https:" + epList[episodeNum - 1]);
};
}
else {
episodeGogoLink = new URL("https:" + epList[episodeNum - 1]);
};
let liveApiLink;
//Checking if the episode source link is already a Plyr link or not
if (episodeGogoLink.href.includes("player.html")) {
liveApiLink = episodeGogoLink.href;
} else {
const content_id = episodeGogoLink.searchParams.get("id");
liveApiLink = "https://animixplay.to/api/cW9" + encodeString(`${content_id}LTXs3GrU8we9O${encodeString(content_id)}`);
};
const src = await decodeStreamingLinkAnimix(liveApiLink);
if (src.includes("player.html")) {
type = "plyr"
} else if (src.includes(".m3u8")) {
type = "hls"
} else if (src.includes(".mp4")) {
type = "mp4"
};
return {
animeId,
episodeNum,
sources: src
}
} catch (err) {
// console.log(err)
return {
error: true,
error_message: err
}
}
};
exports.func = function(name, epNum) {
return getEpisodeSourceFromAnimix(name, epNum)
}