anstrmv2
Version:
an npm package to download anime episodes for free.
178 lines (176 loc) • 7.12 kB
JavaScript
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
async function getRealUrl(url) {
if (url.indexOf('https://animixplay.to/api/live') > -1) {
var browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
var page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle2' });
//wait for page load then wait for half a second then get the current url and return it
await page.waitForTimeout(500);
const rurl = await page.evaluate(() => {
return window.location.href;
});
await browser.close();
return rurl;
}
else {
return "Could not find anime";
}
}
async function StreamEpisode(name, episode) {
name = name.replace(/ /g, '-');
name = name.toLowerCase();
var url = "https://animixplay.to/v1/" + name + "/ep" + episode;
var browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
var page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle2' });
//when the page loads run a javascript function to get the src of the iframe
await page.evaluate(() => {
console.log = null;
});
//if page url is not an animekisa.tv name and episode then return saying could not find anime
if (page.url() == "https://animixplay.to/v1/" + name) {
//inside the play video class is the iframe we need to get the src
const rurl = await page.evaluate(() => {
var rurl = $('#iframeplayer').attr('src');
return "https://animixplay.to" + rurl;
});
await browser.close();
return getRealUrl(rurl);
}
else if (page.url() == url) {
const rurl = await page.evaluate(() => {
var rurl = $('#iframeplayer').attr('src');
return "https://animixplay.to" + rurl;
});
await browser.close();
return getRealUrl(rurl);
}
else {
await browser.close();
return "Could not find anime";
}
}
async function GetHtml(url) {
var browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
var page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle2' });
//when the page loads run a javascript function to get the src of the iframe
await page.evaluate(() => {
console.log = null;
});
const rurl = await page.evaluate(() => {
var s = document.body.innerHTML;
return s;
});
await browser.close();
return rurl;
}
async function StreamEpisodeDub(name, episode) {
name = name.replace(/ /g, '-');
name = name.toLowerCase();
var url = "https://animixplay.to/v1/" + name + "-dub" + "/ep" + episode;
var browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
var page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle2' });
//when the page loads run a javascript function to get the src of the iframe
await page.evaluate(() => {
console.log = null;
});
//if page url is not an animekisa.tv name and episode then return saying could not find anime
if (page.url() == "https://animixplay.to/v1/" + name) {
//inside the play video class is the iframe we need to get the src
const rurl = await page.evaluate(() => {
var rurl = $('#iframeplayer').attr('src');
return "https://animixplay.to" + rurl;
});
await browser.close();
return getRealUrl(rurl);
}
else if (page.url() == url) {
const rurl = await page.evaluate(() => {
var rurl = $('#iframeplayer').attr('src');
return "https://animixplay.to" + rurl;
});
await browser.close();
return getRealUrl(rurl);
}
else {
await browser.close();
return "Could not find anime";
}
}
async function StreamMovie(name) {
name = name.replace(/ /g, '-');
name = name.toLowerCase();
var url = "https://animixplay.to/v1/" + name;
var browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
var page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle2' });
//when the page loads run a javascript function to get the src of the iframe
await page.evaluate(() => {
console.log = null;
});
//if page url is not an animekisa.tv name and episode then return saying could not find anime
if (page.url() == "https://animixplay.to/v1/" + name) {
//inside the play video class is the iframe we need to get the src
const rurl = await page.evaluate(() => {
var rurl = $('#iframeplayer').attr('src');
return "https://animixplay.to" + rurl;
});
await browser.close();
return getRealUrl(rurl);
}
else if (page.url() == url) {
const rurl = await page.evaluate(() => {
var rurl = $('#iframeplayer').attr('src');
return "https://animixplay.to" + rurl;
});
await browser.close();
return getRealUrl(rurl);
}
else {
await browser.close();
return "Could not find anime";
}
}
async function StreamMovieDub(name) {
name = name.replace(/ /g, '-');
name = name.toLowerCase();
var url = "https://animixplay.to/v1/" + name + "-dub";
var browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
var page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle2' });
//when the page loads run a javascript function to get the src of the iframe
await page.evaluate(() => {
console.log = null;
});
//if page url is not an animekisa.tv name and episode then return saying could not find anime
if (page.url() == "https://animixplay.to/v1/" + name) {
//inside the play video class is the iframe we need to get the src
const rurl = await page.evaluate(() => {
var rurl = $('#iframeplayer').attr('src');
return "https://animixplay.to" + rurl;
});
await browser.close();
return getRealUrl(rurl);
}
else if (page.url() == url) {
const rurl = await page.evaluate(() => {
var rurl = $('#iframeplayer').attr('src');
return "https://animixplay.to" + rurl;
});
await browser.close();
return getRealUrl(rurl);
}
else {
await browser.close();
return "Could not find anime";
}
}
module.exports.StreamEpisode = StreamEpisode;
module.exports.StreamEpisodeDub = StreamEpisodeDub;
module.exports.StreamMovie = StreamMovie;
module.exports.StreamMovieDub = StreamMovieDub;
module.exports.GetHtml = GetHtml;