您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sorts and filters primewire video hosts.
// ==UserScript== // @name NS_PrimeWire // @namespace mugPuke // @include https?://www.primewire.ag/watch* // @include https?://www.primewire.ag/tv-* // @version 1 // @description Sorts and filters primewire video hosts. // @grant none // @run-at document-idle // ==/UserScript== // author: mugPuke, license: GPL v3 (function () { // vid hosters that should be removed (edit to your liking): var block = new Set([ // advertisement // --------------------------------------------------------------------- 'Sponsor Host', 'Promo Host', // hosters that are not covered by the NS_primewire_hosters script // --------------------------------------------------------------------- // 'movdivx.com', // needs divx // 'movshare.net', // 500 err - 17.09.31 // 'noslocker.com', // NS_* script xml playlist // 'nosvideo.com', // NS_* script xml playlist // 'novamov.com', // 500 err - 17.09.31 // 'nowvideo.sx', // 500 err - 17.09.31 // 'speedvid.net', // cookie - 17.09.31 // 'streamin.to', // TODO // 'streamplay.to', // Wrong IP - 17.09.31 // 'thevideo.me', // NS_* TOS // 'videoweed.es', // 500 err - 17.09.31 // 'vidup.me', // NS_* TOS // 'vshare.eu', // TODO // not tested hosters: // --------------------------------------------------------------------- // 'briskfile.com', // 'cloudtime.to', // 'filenuke.com', // 'letwatch.us', // 'movshare.net', // 'novamov.com', // 'nowvideo.sx', // 'playedto.me', // 'promptfile.com', // 'sharerepo.com', // 'sharesix.com', // 'thefile.me', // 'vidbull.com', // 'videoweed.es', // 'vidlockers.ag', // 'vidto.me', // 'vodlocker.com', ]); // vid hoster sord order (edit to your liking): // ------------------------------------------------------------------------- var sort = new Map(); var idx = 0; sort.set( "vidlox.tv", idx++ ); sort.set( "vidzi.to", idx++ ); sort.set( "vidzi.tv", idx++ ); sort.set( "vidtodo.com", idx++ ); sort.set( "daclips.com", idx++ ); sort.set( "daclips.in", idx++ ); sort.set( "gorillavid.com", idx++ ); sort.set( "gorillavid.in", idx++ ); sort.set( "movpod.net", idx++ ); sort.set( "movpod.in", idx++ ); // trim strings var trim = function(str) { var str = str.replace(/^\s\s*/, ''); var ws = /\s/; var i = str.length; while (ws.test(str.charAt(--i))); return str.slice(0, i + 1); } // url table elements var getTargets = function() { return document.querySelectorAll('#first table.movie_version'); } // url table container var getTargetParent = function() { return document.querySelector('#first'); } var sort_fcn = function( a, b ) { if(b == null) { return false; } if(a == null) { return true; } var a_elem = a.querySelector("span.version_host"); var b_elem = b.querySelector("span.version_host"); if(b_elem == null) { return false; } if(a_elem == null) { return true; } var a_str = trim(a_elem.innerHTML); var b_str = trim(b_elem.innerHTML); var a_flag = sort.has(a_str); var b_flag = sort.has(b_str); if( a_flag && b_flag ) { var f = sort.get(a_str) > sort.get(b_str); return f; } else if( a_flag ) { return false; } else if( b_flag ) { return true; } return a_str > b_str; } var cleanTargets = function( targets ) { // write hoster info without enabled js var reg = /document.writeln\('(.[^']*)'\)/; var out_arr = []; for(var target of targets) { var sub_target = target.querySelector("span.version_host"); if(sub_target == null) { continue; } var trash_target = sub_target.querySelector("script"); if(trash_target != null) { var matches = reg.exec(trash_target.innerHTML) if (matches.length < 2) { continue } sub_target.innerHTML = matches[1]; } var str = trim(sub_target.innerHTML); if (block.has(str)) { continue; } sub_target.innerHTML = str; out_arr.push(target) } return out_arr; } var main = function() { var targets = getTargets(); var targetsLen = targets.length; if (targetsLen == 0) { console.log("Targets missing.") return; } targets_arr = cleanTargets( targets ) targets_arr.sort(sort_fcn); // clean container ... var parent = getTargetParent(); parent.innerHTML = " "; // ... and repopulate it for(var target of targets_arr) { if(target == null){continue;} parent.appendChild(target); } } main(); }());