AnimeTosho Eng Subtitle Downloader

Automatically downloads English subtitles on AnimeTosho

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @author       nht.ctn
// @name         AnimeTosho Eng Subtitle Downloader
// @namespace    https://github.com/nhtctn
// @version      1.0
// @description  Automatically downloads English subtitles on AnimeTosho
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuOWwzfk4AAADrSURBVDhPtVKxDcJADLSERMEqIEU0tEyARGo6qOjCGlRhEhIxACOgtIxARUVDccTmnbw/nyJCnPRS4rfPd/bT34B7hYRmoFHSnnGG0wNwKXHgXSGjJWhSoHza5IZ0c4uTaMLh3N9FG5icCi/4F4o8JWvBqcK1BK0KcJ0QSPYlFWkCRzY/tl3k3hWx0inlrcVvwV4GxCh2defAJ8eUkPO3hsCTFPPIpGxHY10FTr58M1mwLi5Y0LqJdWcQEgQrDGO+HYEhCFap//6AjX9G6EkIdXW11HCd5g0oYpMfBJ1+7AkPgpGv51fSfhB9ADUGVK7f/SFaAAAAAElFTkSuQmCC

// @match        *://animetosho.org/search?q=*
// @match        *://animetosho.org/view/*
// @match        *://animetosho.org/series/*

// @grant        GM_getValue
// @grant        GM_setValue

// @run-at       document-idle
// ==/UserScript==

(function() {
    'use strict';

	const tabCloseTime = 6000; // 6 seconds

    var pageUrl = window.location.href;
    var a;

    if (GM_getValue("autoDown") == null) {
        GM_setValue("autoDown", true);
    }

    var autoCheckButton = '<div id="autoSubDownload_container" style="font-size: smaller; margin-top: 1em; text-align: center;"><input id="autoSubDownload" type="checkbox" style="margin: 0; vertical-align: bottom;"> Auto Subtitle Download</div>';
    var checkArea = document.getElementById("topbar_time");
    if (checkArea != null) {
        checkArea.insertAdjacentHTML( "afterend", autoCheckButton );
        var checkBox = document.getElementById("autoSubDownload");
        checkBox.onclick = function() {autoDownloadCheck();};
        GM_getValue("autoDown") == true ? checkBox.checked = true : '';
    }

    function autoDownloadCheck() {
      if (checkBox.checked == true){
          GM_setValue("autoDown", true);
      } else {
          GM_setValue("autoDown", false);
      }
    }

    // OPEN TORRENT PAGES
    if (pageUrl.search( /animetosho\.org\/search\?q=/ ) >= 0 && GM_getValue("autoDown") == true)
    {
        var torrentLinks = [];
        var torrents = document.querySelectorAll( 'div[class="link"] > a' );
        for ( a = 0; a < torrents.length; a++ ) {torrentLinks[a] = torrents[a].href;}

        var button = '<button id="engSubDown" class="feeddd" style="margin-right: 10px;">Download All Eng Subtitles</button>';
        var butonArea = document.querySelector( '.feeddd' );
        butonArea.insertAdjacentHTML( "afterend", button );
        var myButton = document.getElementById("engSubDown");
        myButton.onclick = function() {openAll();};
    }

    function openAll( )
    {
        if(GM_getValue("autoDown") == true) {
            for ( var a = 0; a < torrentLinks.length; a++ ) {window.open(torrentLinks[a]);}
        }
    }

    // DOWNLOAD ENG SUBS
    if (pageUrl.search( /animetosho\.org\/view\// ) >= 0 ) {
        var errorCheck = document.querySelector('body > center > h1') != null;
        if (errorCheck) {
            setTimeout(function() {location.reload();}, 5000);
        }
        else {
            if(GM_getValue("autoDown") == true) {

            var subButtons = document.querySelectorAll( '[href*="animetosho.org/storage/attach/"]' );
            var engSubLinks = [];
            for ( a = 0; a < subButtons.length; a++ )
            {
                var subsLangs = subButtons[a].textContent;
                if (subsLangs.search(/eng/i) >= 0)
                {
                    engSubLinks[a] = subButtons[a].href;
                }
            }
            // If there is one eng sub, download. Else wait.
            if (engSubLinks.length == 1)
            {
                document.location = engSubLinks[0];
                setTimeout(function() {
                    if (GM_getValue("autoDown") == true) {
                        window.close();
                    }
                }, tabCloseTime);
            }
            // If there is no eng sub but one undefined sub, download.
            else if (subButtons.length == 1)
            {
                if (subButtons[0].textContent.search(/und/i) >= 0)
                {
                    var engSubLink = subButtons[0].href;
                }
                document.location = engSubLink;
                setTimeout(function() {
                    if (GM_getValue("autoDown") == true) {
                        window.close();
                    }
                }, tabCloseTime);
            }
            console.log(subButtons);
            }
        }
    }

})();