您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Permette di godere in maniera ottimale della piattaforma Animeforce, skippando alcune pagine intermedie e avendo il download diretto delle puntate
// ==UserScript== // @name Animeforce premium // @description Permette di godere in maniera ottimale della piattaforma Animeforce, skippando alcune pagine intermedie e avendo il download diretto delle puntate // @author Maxeo | maxeo.net // @license https://creativecommons.org/licenses/by-sa/4.0/ // @include http://*.animeforce.org/* // @include https://*.animeforce.org/* // @homepageURL https://greasyfork.org/it/scripts/25912-animeforce-premium // @require https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js // @require https://greasyfork.org/scripts/372499-bootstrap-tooltip-js-v2-3-2/code/bootstrap-tooltipjs%20v232.js?version=631225 // @require https://greasyfork.org/scripts/26454-jquery-cookie/code/jQuery%20Cookie.user.js // @version 2.4.6 // @grant none // @namespace https://greasyfork.org/users/88678 // @icon https://www.maxeo.net/imgs/icon/greasyfork/animeforcePremium.png // ==/UserScript== function AFP_index() { var $ = jQuery; var AFPremium = { menu: { functions: { addPremiumMenu: { enable: true, title: "Aggiungi menu premium", description: "Aggiunge il menu premium nelle pagine non di streaming", warning: "Disabilitando questa voce sarà necessario andare su https://ww1.animeforce.org/premium per per modificare le impostazioni" }, animeDownloadIstant: { enable: true, title: "Download istantaneo", description: "Aggiunge il download istantaneo nella lista degli episodi dell'anime", dependances: ['removeAdflyInPageAnime'], }, decreaseAD: { enable: true, title: "DecreaseAD", description: "Riduce la pubblicità nel sito. Senza che sia necessario l'utilizzo di AdBlock o simili.", }, dontBlocADblock: { enable: true, title: "Non bloccare AdBlock", description: "Su alcune pagine AdBlock non verrà 'bloccato'", }, linkDirettoHomePage: { enable: true, title: "Link diretto in HomePage", description: "Nella homepage i link agli episodi saranno diretti <br> PS. Pagine secondarie non ancora supportate", dependances: ['loadAnimeList'], }, miglioraUtilizzoMenu: { enable: true, title: "Menu percettivo", description: 'Il menu principale apparirà ogni volta che si passa il mouse sulla barra dei menu', }, premiumSearchHomePage: { enable: true, title: "Ricerca Anime in homepage", description: 'Nella homepage sarà possibile utilizzare il form di ricerca per cercare direttamente dalla lista degli episodi', dependances: ['loadAnimeList'], }, searchInList: { enable: true, title: "Ricerca aggiuntiva nelle liste", description: "In 'lista episodi' e 'Anime in corso' aggiunge una ricerca testuale", }, }, }, cvar: {}, customElements: { afphechbox: '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;width: 30px;height: 30px;border: 2px solid #000;" xml:space="preserve"><path style="fill:none;stroke:#000000;stroke-dashoffset: 73px;stroke-width: 6px;transition: 1s cubic-bezier(.63,.41,.04,.61);" d="M14.8,58.5c0,0,13.9,23.7,21.8,28.9c7.9,5.2,48.6-75.1,48.6-75.1"></path></svg>' }, pagetype: undefined, logs: 1, loadPageType: function () { if ($('body').hasClass('home')) { this.setPageType('home') } else if ($('body').hasClass('error404')) { if (location.pathname == '/premium') { this.setPageType('premium-menu') } else { this.setPageType('error404') } } else if (($('body').attr('class') == undefined || $('body').attr('class') == '') && $('#menu-menu-2').length == 0) { this.setPageType('streaming-page') } else if ($('body').hasClass('single-post')) { if ($('table img[src="/DDL/download.png"], table img[src="/DDL/streaming.png').length) { this.setPageType('episode-list') } else { this.setPageType('episode-preview') } } else if (location.pathname == '/lista-anime/' || location.pathname == '/lista-anime-in-corso/') { this.setPageType('lista-anime'); } else if ($('body').hasClass('archive')) { this.setPageType('archive'); } else if (location.pathname == '/lista-anime-hentai/') { this.setPageType('hentai'); } return this.pagetype; }, setPageType: function (pagename) { this.pagetype = pagename; }, getPageType: function () { return this.pagetype; }, executeFunctionality: function (funct_name) { var dependenceLoaded = []; for (var index in arguments) { this.fComponents.loadAnimeList(); if (this.menu.functions[arguments[index]].dependances != undefined) { var requiredF = this.menu.functions[arguments[index]].dependances; for (var subindex in requiredF) { if (!(dependenceLoaded.indexOf(requiredF[subindex]) + 1)) { dependenceLoaded.push(requiredF[subindex]) this.fComponents[requiredF[subindex]](); } } } if (this.menu.functions[arguments[index]].enable) { this.functionalities[arguments[index]](); } } }, loadFunctionalities: function () { //Eseguo dipendenze for (var index in this.requiredFuntions) { this.requiredFuntions[index](); } //funzionalità globali this.executeFunctionality('decreaseAD', 'miglioraUtilizzoMenu'); //funzionalità specifiche switch (this.getPageType()) { case 'home': this.executeFunctionality('addPremiumMenu', 'premiumSearchHomePage', 'linkDirettoHomePage'); break; case 'premium-menu': this.functionalities.premiumMenu(); this.executeFunctionality('addPremiumMenu'); break; case 'episode-list': this.executeFunctionality('addPremiumMenu', 'animeDownloadIstant'); break; case 'episode-preview': this.executeFunctionality('addPremiumMenu'); break; case 'lista-anime': this.executeFunctionality('addPremiumMenu', 'searchInList'); break; case 'archive': this.executeFunctionality('addPremiumMenu', 'searchInList'); break; case 'hentai': this.executeFunctionality('addPremiumMenu'); break; case 'error404': this.executeFunctionality('addPremiumMenu'); break; case 'streaming-page': this.executeFunctionality('dontBlocADblock'); break; default: } }, functionalities: { /* * Aggiunge il menu premium alle pagine */ addPremiumMenu: function () { $('#menu-menu-2').append('<li class="menu-item"><a href="/premium">Menu Premium</a></li>') }, decreaseAD: function () { /*** PAGINA DI STREAMING ***/ if (AFPremium.getPageType() == 'streaming-page') { var disableFunction = setInterval(function () { if ($("body > center + *").length) { $('footer').remove(); while ($("body > center + *").length) { $("body > center + *").remove(); } } }, 300) } else { /*** PAGINE NON DI STREAMING ***/ $('[style^="position: fixed; top: 0px; bottom: 0px; left: 0px; right: 0px; z-index: 2147483647;"]') .attr('style', "position:fixed;right:200vw") .css('display', 'none') $('.tp-loader').remove() $('#menu-menu-2 a').each(function () { $(this).attr('href', $(this).attr('href').replace('//adf.ly/16031519', '')) }) $('.widget-unwrapped iframe').parent().addClass('fb-container').removeClass('widget-unwrapped') $('.widget-unwrapped').remove() if (AFPremium.getPageType() == 'episode-list') { $('.code-block.code-block-3').remove(); } } }, dontBlocADblock: function () { var disableFunction = setInterval(function () { if ($('[href="http://www.animeforce.org/block/guida.html"]').parents('[id]').length) { $('[href="http://www.animeforce.org/block/guida.html"]').parents('[id]').remove(); clearInterval(disableFunction); } }, 300); }, searchInList: function () { var src_input = '<input id="filtro" type="text" placeholder="Scrivi qui per cercare tra gli anime" style="width: 100%">' $('.the-content p').eq(0).append(src_input); $('#filtro').on('keyup', function () { if ($('#filtro').val().length >= 1) { $('.the-content h2').css('display', 'none'); $('.the-content').find('li').each(function () { if ($(this).is(':icontains(\'' + $('#filtro').val() + '\')')) $(this).css('display', ''); else $(this).css('display', 'none'); }); } else { $('.the-content li,.the-content h2').css('display', ''); } }); }, miglioraUtilizzoMenu: function () { if (AFPremium.getPageType() != 'streaming-page') { $('#menu-menu-2 .sub-menu').css('display', 'none') $('#menu-menu-2').on('mouseover', function () { $('#menu-menu-2 #menu-item-21035 .sub-menu').css('display', 'block').css('visibility', 'visible') }) $('#menu-menu-2').on('mouseout', function () { $('#menu-menu-2 .sub-menu').css('display', 'none') }) } }, animeDownloadIstant: function () { $('body').append('<div class="w8-afp-download" style="position: fixed;right: 0;top: 0;background: rgba(0, 120, 255, 0.63);padding: 18px;z-index: 3000;color: #FFF;font-size: 20px;text-align: right;font-family: Verdana;">Analizzo la pagina per il download diretto.<br>Attendere...</div>') if ($('img[src="/DDL/download.png"]').length) { var animeDownloadIstantInt = setInterval(function () { if (AFPremium.cvar.adflyRemoveUpdated != undefined && AFPremium.cvar.adflyRemoveUpdated == true) { var url = 'https:' + $('img[src="/DDL/download.png"]').eq(0).parent().attr('href'); $.get('//url-redirect.maxeo.net/?url=' + encodeURI(url), function (data) { if (data.length > 12) { var filecode = url.match(/\?file=(.*)/)[1]; var longData = data.match(/file=(.*)/)[1].substr(); var basedata = longData.substr(0, longData.indexOf(filecode)) $('img[src="/DDL/download.png"]').each(function () { url = $(this).parent().attr('href'); var filecode = url.match(/\?file=(.*)/); if (filecode != null && filecode.length >= 2) { filecode = filecode[1]; var downloadLink = 'http://' + basedata + filecode; $(this).parent().attr('href', downloadLink) } else { var piano_b = $(this).parents('tr').eq(0).find('td strong').eq(0).html().replace(/ <span.*$/, '').match(/[0-9]*$/); if (piano_b.length && piano_b[0].length) { //console.log('PIANO B'); piano_b = piano_b[0] + ''; if (piano_b.length == 1) { piano_b = '0' + piano_b; } var newLong = longData.match(/(.*\_)([0-9]{1,})\_(.*)$/); if (newLong != null) { var downloadLink = 'http://' + newLong[1] + piano_b + '_' + newLong[3]; $(this).parent().attr('href', downloadLink) } } } }) $('.w8-afp-download').remove(); } }); clearInterval(animeDownloadIstantInt); } } , 100) } else { $('.w8-afp-download').remove(); } }, premiumSearchHomePage: function () { var animeList = AFPremium.cvar.animeList; $('#searchform input[type="text"]').on('keyup', function () { var animeList = AFPremium.cvar.animeList; if ($(this).val().length > 2) { var positionBox = $('#searchform input').offset() var input_ricerca = $('#searchform input') var listaRisultati = []; if (!$('#box_di_ricerca').length) { $('body').append('<div class="box-di-ricerca" id="box_di_ricerca"></div>') $('#box_di_ricerca') .css('width', input_ricerca.width()) .css('top', (positionBox.top + 10 + input_ricerca.height()) + 'px') .css('left', (positionBox.left + 10) + 'px') .css('position', 'absolute') .css('background', '#FFF') .css('z-index', 10000); } $('#box_di_ricerca').html('<ul style="list-style: none;margin: 0;"></ul>'); for (var index in animeList) { if (animeList[index].name.toUpperCase().indexOf($(this).val().toUpperCase()) + 1 > 0) { listaRisultati.push(animeList[index]); } } for (var index in listaRisultati) { $('#box_di_ricerca ul').append('<li style="padding: 4px;background: #009cff;margin: 2px 0;font-family: Verdana;"><a href="' + listaRisultati[index].link + '">' + listaRisultati[index].name + '</a></li>'); } } }) $('body').on('click', 'div', function () { if (!$(this).hasClass('box_di_ricerca')) { $('#box_di_ricerca').remove(); } }) }, linkDirettoHomePage: function () { var linkDirettoInt = setInterval(function () { if (AFPremium.cvar.animeList != undefined) { $('.main-loop-inner .panel-wrapper a').each(function () { var search = $(this).attr('href').match(/(.*)(episodio(-[0-9]{1,}){1,}-)/) if (search != null && search.length >= 2) { search = search[1]; var res = AFPremium.functionalities.searchInAnimelist(search, 'link'); if (res != false) { $(this).attr('href', res).addClass('fixed-link-afp'); } } }) clearInterval(linkDirettoInt); } }, 100) }, searchInAnimelist: function (what, type_search) { type_search = type_search = undefined ? 'link' : type_search; var animeList = AFPremium.cvar.animeList; for (var index in animeList) { if (animeList[index][type_search].indexOf(what) + 1) { return (animeList[index])[type_search] } } return false }, premiumMenu: function () { var slug = $('.sortbar-title') var h1 = $('.main-content h1') var mainContent = $('.main-content') var searchBox = $('.form-search'); $('body').append('<style>input:checked + svg > path {stroke-dasharray: 200,200;}input + svg > path {stroke-dasharray: 70,200;}</style>') if (!$('.content-premium').length) { mainContent.append('<div class="content-premium"></div>') } var contentPremium = $('.content-premium'); slug.html('Menu Premium') h1.html('Impostazioni Premium') searchBox.find('input[type="text"]').attr('placeholder', 'Cerca tra le impostazioni') searchBox.on('submit keyup', function (e) { e.preventDefault() $('.content-premium > label').each(function () { if ($(this).is(':icontains(\'' + searchBox.find('input[type="text"]').val() + '\')')) $(this).css('display', 'flex'); else $(this).css('display', 'none'); }); }) var docFunction = AFPremium.menu.functions; var formAFP = ""; /** Funzionalità da abilitare/disabilitare **/ formAFP += "<h2>Funzionalità</h2>" formAFP += '<div class="afp-funct">' for (var funxtion_name in docFunction) { var labW = docFunction[funxtion_name].warning == undefined ? '' : 'ATTENZIONE: ' + docFunction[funxtion_name].warning; formAFP += '<label style="display: flex"><input name="' + funxtion_name + '" style="display:none" type="checkbox"' + (docFunction[funxtion_name].enable ? ' checked=""' : '') + ' name="' + funxtion_name + '">' + AFPremium.customElements.afphechbox + ' <p data-html="true" data-toggle="tooltip" ' + ' data-title="' + docFunction[funxtion_name].description + '" ' + ' data-warning="' + labW + '" ' + ' style="font-size: 18px;margin: 7px;padding: 0;">' + docFunction[funxtion_name].title + '</p></label>'; } formAFP += '</div>' contentPremium.html(formAFP); $('[data-toggle="tooltip"]').each(function () { var dataTooltip = $(this).data('title'); if ($(this).data('warning').length) { dataTooltip += '<br><br><span style="background:red">' + $(this).data('warning') + '</span>'; } $(this).tooltip({'title': dataTooltip, 'placement': 'top'}); }) $('.afp-funct input').on('change', function () { AFPremium.updateSettings($(this).attr('name'), $(this).is(':checked')) }) }, }, fComponents: { loadAnimeList: function () { var animeList = AFPremium.cvar.animeList; $.get('https://ww1.animeforce.org/lista-anime/').done(function (data) { var bxcontainer = data.match(/(\<div\ class\=\"the\-content\"\>.*(.*\n)*\<script\ type=\"text\/javascript\"\>)+/g) [0] bxcontainer = bxcontainer.match(/\<li\>\<strong\>\<a\ href=.*\<\/a\>/g) animeList = [ ]; for (var index in bxcontainer) { var link = bxcontainer[index].match(/.*">/)[0].match(/\".*\//)[0].replace(/\"/g, '') var nameAnime = bxcontainer[index].match(/\"\>.*Sub Ita/i)[0].replace(/\"|\/|\>|\</g, '').replace(/\ Sub\ Ita/i) animeList.push({'name': nameAnime, 'link': link}) } AFPremium.cvar.animeList = animeList; }) }, removeAdflyInPageAnime: function () { $.get('#').done(function (data) { $('table[style="width: 100%;"]').html(data.match(/\<table\ style\=\"width\:\ 100\%\;\"\>\n(.*\n)*\<\/tbody\>\n<\/table>/)[0]) AFPremium.cvar.adflyRemoveUpdated = true }) }, }, requiredFuntions: { /* * Funzione necessaria per ricercare in modo incase sensitive * */ icontainsJQuery: function () { jQuery.expr[':'].icontains = function (a, i, m) { return jQuery(a).text().toUpperCase() .indexOf(m[3].toUpperCase()) >= 0; }; }, /* * Risolve errori interni al sito * */ jQueryAFfix: function () { jQuery.easing[0] = function () {} jQuery.easing.def = 0; jQuery.timer = 0; (function ($) { $.fn.jflickrfeed = function () {}; $.fn.tabs = function () {}; })(jQuery); }, loadSettings: function () { var settings = {}; if ($.cookie('AFP') != undefined) { settings = JSON.parse($.cookie('AFP')) } for (var index in AFPremium.menu.functions) { if (settings[index] == undefined) { settings[index] = AFPremium.menu.functions[index].enable; } } $.cookie('AFP', JSON.stringify(settings), {expires: 3650, path: '/'}); AFPremium.cvar.settings = settings; for (var index in settings) { if (AFPremium.menu.functions[index] != undefined) { AFPremium.menu.functions[index].enable = settings[index]; } } }, }, updateSettings: function (functionality, is_active) { AFPremium.cvar.settings[functionality] = is_active; $.cookie('AFP', JSON.stringify(AFPremium.cvar.settings), {expires: 3650, path: '/'}); } }; AFPremium.loadPageType(); AFPremium.loadFunctionalities(); jQuery.test = AFPremium; } AFP_index(); //$('#featured-wrapper #featured img.wp-post-image') // https://url-redirect.maxeo.net/youtube-get-download/?id=xfynvZ8sZRY