🏠 Home 

GogoAnime++

Replaces the download link with a direct download link.


Install this script?
// ==UserScript==
// @name         GogoAnime++
// @namespace    http://tampermonkey.net/
// @version      3.2
// @description  Replaces the download link with a direct download link.
// @author       Arjix
// @match        *://*.gogoanime.vc/*
// @match        *://*.gogoanime.tv/*
// @match        *://*.gogoanime.io/*
// @match        *://*.gogoanime.in/*
// @match        *://*.gogoanime.se/*
// @match        *://*.gogoanime.sh/*
// @match        *://*.gogoanime.video/*
// @match        *://*.gogoanime.movie/*
// @match        *://*.gogoanime.so/*
// @match        *://*.gogoanimes.co/*
// @match        *://*.gogoanime.ai/*
// @match        *://*.animego.to/*
// @grant        GM_xmlhttpRequest
// @grant        GM_openInTab
// ==/UserScript==
// https://ourcodeworld.com/articles/read/682/what-does-the-not-allowed-to-navigate-top-frame-to-data-url-javascript-exception-means-in-google-chrome
function debugBase64(base64URL){
var win = window.open();
win.document.write('<iframe src="' + base64URL  + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');
}
(function() {
'use strict';
window.addEventListener("load", function () {
const title = document.title
const test = document.querySelector('div#load_recent_release')
if (title.includes("Watch") && test == undefined) {
const link = document.querySelector("li.dowloads").firstChild.href
var ret = GM_xmlhttpRequest({
method: "GET",
url: link,
onload: function(res) {
var videoLinks = Array.from(res.response.matchAll(/<a\n.*?[\"'](http.*?)['\"].*?\n.*?(\(.*?\))/gm))
var qualities = []
videoLinks.forEach(link => {
let quality;
if (link[2].includes("720")) {
quality = 720
} else if (link[2].includes("480")) {
quality = 480
} else if (link[2].includes("360")) {
quality = 360
} else if (link[2].includes("HD") || link[2].includes("1080")) {
quality = 1080
}
let obj = {}
obj["src"] = link[1]
obj["size"] = quality
obj["type"] = "video/mp4"
qualities.push(obj)
})
qualities.sort((a, b) => (a.size > b.size ? 1 : -1))
qualities = qualities.reverse();
console.log(qualities)
var videoLink = videoLinks[0][1]
const title = document.querySelector("div.anime_video_body > h1").innerText.replace(" at gogoanime", "") + ".mp4"
var downloadButton = document.querySelector("li.dowloads").firstChild
downloadButton.href = videoLink
downloadButton.target = "_self"
downloadButton.download = title
document.querySelector("li.dowloads > a > span").innerText = "Direct Download"
const css = `
video {
--plyr-color-main: #ffc119;
}
`
const headJs = `
function initialize() {
const playerPlr = new Plyr(document.querySelector("video"));
playerPlr.source = {
type: 'video',
title: '${title}',
sources: ${JSON.stringify(qualities)}
};
};
`
const js = `
<script>
const title = document.createElement("title");
title.innerHTML="${title}";
document.head.appendChild(title);
const link = document.createElement("link");
link.href = "https://cdn.plyr.io/3.6.3/plyr.css";
link.rel="stylesheet";
link.type="text/css";
document.head.appendChild(link);
const style = document.createElement("style");
style.innerHTML = \`${css}\`;
document.head.appendChild(style);
const script = document.createElement('script');
script.innerHTML = \`${headJs}\`;
document.head.appendChild(script);
const plyrJs = document.createElement("script");
plyrJs.src = "https://cdnjs.cloudflare.com/ajax/libs/plyr/3.6.3/plyr.polyfilled.js";
plyrJs.type="text/javascript";
plyrJs.onload = initialize;
document.head.appendChild(plyrJs);
</script>
`
const header = "data:text/html,"
const html = `<video width="1080" height="1920" controls data-plyr-config='{ "quality": {"default": 1080} }'></video>${js}`
const linkPopUp = header+encodeURIComponent(html)
const watchLink = `
<div class="anime_video_note_watch">
Please, <a href="#" class="watchWithPlyr">watch on another window with plyr.</a> if you can't watch the video
</div>
`
document.querySelector("div.anime_video_body > div.anime_video_body_cate > div.anime_video_note_watch").outerHTML = watchLink
document.querySelector(".watchWithPlyr").onclick = () => {GM_openInTab(linkPopUp, {active: true})}
}
})}
}, false)
})();