您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically checks links from hundreds of file hosts.
当前为
// ==UserScript== // @name W.A.R. Links Checker Customized // @description Automatically checks links from hundreds of file hosts. // @details this script automatically checks links from filehosts. For Firefox, Chrome, Opera, Safari. // @version 1.2.4.7.1.9 // @license GPL version 3 or any later version (http://www.gnu.org/copyleft/gpl.html) // @icon http://sharenxs.com/photos/2014/02/14/52fd759db90ac/cooltext1428903746.png // @author mental // @include http://* // @include https://* // @include file:///* // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_registerMenuCommand // @grant GM_getResourceText // @require https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js // @homepage http://www.mentalps.5gbfree.com // @namespace http://www.mentalps.5gbfree.com // ==/UserScript== var War_version = "1.2.4.7.1.9 june 03 2014"; //separate alternative domains with "|" char (first name is considered being main) var allHostNames = ["1fichier.com|dl4free.com", "2shared.com", "4fastfile.com", "adrive.com", "bezvadata.cz", "bitshare.com", "filebeam.com", "burnupload.com|burnupload.ihiphop.com", "cramit.in|cramitin.net","dataport.cz", "datei.to", "daten-hoster.de|filehosting.org", "divxden.com|vidbux.com", "easy-share.com|crocko.com", "easybytez.com", "edisk.cz", "euroshare.eu", "fastshare.cz", "fiberupload.net", "filefactory.com", "eyesfile.net|eyesfile.com|eyesfile.co|eyesfile.org|eyesfiles.com", "fileflyer.com", "filerio.com|filekeen.com", "filemonster.net", "nosupload.com", "upsto.re", "files.mail.ru", "files.to", "filepost.com|fp.io", "filesend.net", "filesflash.com", "upafile.com", "turbobit.net", "secureupload.eu", "filesmonster.com", "filestore.to", "freakshare.net", "filedwon.com", "ukfilehost.com", "free.fr", "free-uploading.com", "gigapeta.com", "gigasize.com", "gigaup.fr", "videopremium.net", "goldfile.eu", "hipfile.com", "hostuje.net", "vidup.me", "dizzcloud.com", "filehost.ro", "gorillavid.in", "hulkshare.com|hu.lk", "ifolder.ru", "jumbofiles.com", "allmyvideos.net", "sharerepo.com","filesaur.com", "leteckaposta.cz|sharegadget.com", "load.to", "mediafire.com", "megafileupload.com", "megashares.com", "filemaze.ws", "movshare.net", "myupload.dk", "narod.ru|narod.yandex.ru", "netload.in", "speedvid.tv", "partage-facile.com", "putlocker.com|firedrive.com", "fileim.com", "ultramegabit.com", "limelinx.com", "sfshare.se", "filewe.com", "queenshare.com|10upload.com", "quickshare.cz", "rapidshare.com", "putcker.com", "rapidshare.ru", "daj.to", "depositfiles.com|dfiles.eu", "rapidgator.net|rg.to", "rarefile.net", "rayfile.com", "rghost.net", "sendmyway.com", "4savefile.com", "filebulk.com", "videozed.net", "sendspace.com", "share-online.biz|egoshare.com", "sharingmaster.com", "fileplaneta.com", "midupload.com", "slingfile.com", "solidfiles.com", "speedfile.cz", "filenuke.com", "fileparadox.in", "creafile.net", "rapidstation.com", "speedshare.org", "tufiles.ru", "zippyshare.com", "ryushare.com", "rodfile.com", "wikiupload.com", "uloz.to|ulozto.cz|bagruj.cz|zachowajto.pl", "ulozisko.sk", "uloziste.com", "basicupload.com", "fileneo.com", "uploadbin.net", "uploaded.to|ul.to", "uploading.com", "uploadjet.net", "swankshare.com", "uploadspace.pl", "upnito.sk", "uptobox.com", "usaupload.net", "veehd.com", "videobb.com", "filecloud.cc", "flexydrive.com", "videozer.com", "uploads.bizhat.com", "webshare.cz", "xdisk.cz", "yunfile.com|filemarkets.com|yfdisk.com", "nitrobits.com", "mega-myfile.com", "divshare.com", "flyfiles.net", "nowdownload.eu", "asfile.com", "prefiles.com", "axifile.com", "zalil.ru", "ortofiles.com", "uploadc.com", "sharefiles.co", "amonshare.com", "data.hu", "blitzfiles.com", "filesbowl.com", "freestorage.ro", "spaceforfiles.com|filespace.com", "zalaa.com", "netkups.com", "vreer.com", "upfile.biz", "file-speed.com", "hulkload.com", "speedshare.eu", "tusfiles.net", "uppit.com", "ddlstorage.com", "downloadani.me", "filesabc.com", "share.az", "sockshare.com", "nekaka.com", "file4safe.com", "sharebeast.com", "180upload.com", "verzend.be", "asixfiles.com", "zomgupload.com", "ravishare.com", "movreel.com", "4up.me|4upfiles.com", "extmatrix.com", "sendfiles.nl", "yourfilestore.com", "filebig.net", "sharesix.com", "hulkfile.eu|duckfile.net", "luckyshare.net", "uploadic.com", "fileswap.com", "potload.com", "thefilebox.com", "billionuploads.com", "rockdizfile.com", "exclusivefaile.com|exclusiveloader.com", "filesbb.com", "myvdrive.com", "filesin.com", "novafile.com", "longfiles.com", "albafile.com", "host4files.com", "lumfile.com|terafile.co", "uploadhero.com|uploadhero.co", "uploadbaz.com", "expressleech.com", "file-space.org", "stahovadlo.cz", "datafilehost.com", "bitupload.com", "bayfiles.net", "vshare.eu", "files.indowebster.com", "file4u.pl", "kie.nu", "superload.cz", "mafiastorage.com", "fileband.com", "filesmall.com", "flashx.tv", "minus.com|min.us", "filesmelt.com", "hellupload.com", "packupload.com", "uploadingit.com", "stiahni.si", "filefolks.com", "sendspace.pl", "fastshare.org", "divxstage.eu", "sinhro.net", "filestore.com.ua", "filesbomb.com", "cepzo.com", "project-free-upload.com", "imzupload.com", "hostingbulk.com", "speedy-share.com", "100shared.com", "igetfile.com", "xvidstage.com", "vidbull.com", "rapidfileshare.net", "filebox.ro|fbx.ro", "mixturecloud.com|mixturefile.com", "filefront.com|gamefront.com", "yourupload.com", "file-upload.net", "restfiles.net|restfile.com", "fliiby.com", "dodane.pl", "usersfiles.com", "upgolden.com|shallfile.com", "jumbofiles.org|jumbofilebox.com", "rapidapk.com", "upshared.com", "upload.ee", "putme.org", "hugefiles.net", "mega.co.nz", "thefile.me", "unlimitshare.com", "share4web.com", "epicshare.net", "novamov.com", "filedropper.com|filesavr.com", "yourfiles.to", "skydrive.live.com", "uploadboy.com", "city-upload.com", "mijnbestand.nl", "ultrashare.net", "dosya.tc", "exfile.ru", "fileshare.ro", "fshare.vn", "wikifortio.com", "wyslijto.pl", "kiwi6.com", "localhostr.com|lh.rs|hostr.co", "remixshare.com", "hidemyass.com", "tinyupload.com", "gigabase.com", "trainbit.com", "videobam.com", "hyperfileshare.com", "uploads.ws", "ge.tt", "donevideo.com", "mightyupload.com", "megafiles.se", "1st-files.com", "cloud-up.be", "fiberstorage.net", "uploadhunt.com", "junocloud.me", "karelia.pro", "boomupload.net", "bestreams.net", "1-clickshare.com", "flashdrive.it", "fastupload.ro", "fujifile.me", "howfile.com", "failai.lt", "vidspot.net", "file4go.com", "hostinoo.com", "movdivx.com", "pandamemo.com", "youwatch.org", "spicyfile.com", "m5zn.com", "upload-il.com", "sube.me", "files2upload.net", "vidto.me", "hyshare.com", "filezy.net", "arabloads.com", "davvas.com", "filesline.com", "megacache.net", "sanshare.com", "sendfile.su", "akafile.com", "todayfile.com", "lafiles.com", "medofire.com", "mystore.to", "anonfiles.com", "upitus.net", "medafire.net", "medoupload.com", "fastflv.com", "herosh.com", "girlshare.ro", "bin.ge", "nowvideo.eu", "video.tt", "shareplace.com", "terafiles.net", "uploadmb.com", "exfilehost.com", "cometfiles.com", "filetug.com", "datafile.com", "shareswift.com", "ex-load.com", "depfile.com", "uncapped-downloads.com", "isavelink.com", "filesear.com", "clicktoview.org", "promptfile.com", "zixshare.com", "maxisharing.com", "katzfiles.com", "filebar.kz", "yourfilelink.com", "fileom.com", "1file.cc", "backin.net", "uploadscenter.com", "vidhog.com", "qshare.com", "guizmodl.net", "1000shared.com", "gigfiles.net", "freakbit.net", "upload-novalayer.com", "filewist.com", "airupload.com", "dropbox.com", "uplds.com", "wikisend.com", "wrzuc.to", "safecloud.so", "webfilehost.com", "myuplbox.com", "roshare.info", "demo.ovh.eu", "treefile.org|treefiles.com|treesfile.com", "lemuploads.com", "filepup.net", "filedap.com", "divxpress.com", "dwn.so|dwnshare.pl", "sharephile.com", "upgiga.com", "koofile.com", "earnupload.eu", "netkozmos.com", "maherfire.com", "droidbin.com", "d-h.st", "loadpot.net", "kingfiles.net", "shareblue.eu", "redload.net", "upfile.vn", "tuxfile.com", "grifthost.com", "limevideo.net", "nirafile.com", "uploadinc.com", "batshare.com", "lunaticfiles.com", "wozupload.com", "kingsupload.com", "media1fire.com", "usefile.com", "vidplay.net", "cyberlocker.ch", "mydisc.net", "med1fire.com", "stahuj.to", "upbooth.com", "anysend.com", "vodlocker.com", "uploadrocket.net", "vidx.to", "filecloud.io", "foxishare.com", "redbunker.net", "uploadnetwork.eu", "cloudstor.es", "uploadable.ch", "streamratio.com", "worldbytez.com", "cloudvidz.net", "maskfile.com", "hexupload.com", "moevideo.net", "dogupload.com|filesfrog.net", "sendfile.pl", "shareprofi.com", "salefiles.com", "anafile.com", "bonanzashare.com", "shared.com", "filetrip.net", "fileshareup.com", "imgjungle.com", "unlimitzone.com", "rapidu.net", "wallobit.com", "filepi.com", "swatupload.com", "2downloadz.com", "qfpost.com", "rapidfiles.com", "rosharing.com", "storagely.com", "turtleshare.com", "uploadzeal.com", "wipfiles.net", "superupload.com", "tropicshare.com", "archive.org", "played.to", "streaming.to", "uploadcapital.com", "twojepliki.eu", "filemoney.com", "filehoot.com", "qkup.net", "mxua.com", "uploadsat.com", "cloudyvideos.com", "filekom.com|filemac.com", "interfile.net", "idup.in", "filedais.com", "fileforever.net", "rioupload.com", "migupload.com", "medofire.co", "filemonkey.in", "bluehaste.com", "up09.com", "nodaup.com", "fcore.eu", "4downfiles.com", "1clickfiles.com", "weshare.me", "filemup.com", "hottera.com", "lomafile.com", "hightail.com|yousendit.com", "4bigbox.com", "10shared.com", "megaupdown.com", "poslisoubor.cz", "radicalshare.com", "share-byte.net", "sharemods.com", "skyfilebox.com", "crisshare.com", "vipshare.me","datoid.cz","streamfile.com","cloudstor.es","google.com","files.fm","aisfile.com","hellfile.com","pan.baidu.com","yunpan.cn","dotsemper.com", "gulfup.com","vidbox.yt","box.net","box.com","sharerapid.cz","rusfolder.net","rusfolder.com","freefilehosting.net","fileshareup.com","keep2share.cc","keep2s.cc", "k2s.cc","goldbytez.com","keep2share.com","speedy.sh","fboom.me","megarapid.cz","yadi.sk",]; try { //iframes excluded if (window.top != window.self) { return; } //allHostNames sites excluded if (window.location.href.match("https?:\/\/(www\.)?[\w\.-]*(?:" + allHostNames.join("|").replace(/\./g, "\\.").replace(/-/g, "\\-") + ")")) { return; } } catch (e) { return; } //separate alternative domains with "|" char (first name is considered being main) var allContainerNames = ["safelinking.net"]; //separate alternative domains with "|" char (first name is considered being main) var allObsoleteNames = ["uloz.cz","storage.to","iskladka.cz","file-rack.com","fast-load.net","subory.sk","bigandfree.com","uplly.com", "fileop.com","mujsoubor.cz","sendfile.to","superfastfile.com","quickyshare.com","duckload.com","uploadstore.net","meinupload.com", "dualshare.com","2xupload.to|2xupload.de","oxedion.com","uploadline.com","dll.bz","movieshare.in","milledrive.com","quickupload.net", "safelink.in","metadivx.com","divxlink.com","uploadrack.com","teradepot.com","dataup.to","upit.to","driveway.com","eatlime.com", "a2zuploads.com","friendlyfiles.net","flyfile.us","speedyshare.com","uploadspace.eu","keepfile.com","piggyshare.com", "filecrown.com","6giga.com","uploadjockey.com","bluehost.to","filegu.ru","filebase.to","up-file.com","xvideos.com","esnips.com", "filebling.com","loaded.it","uploadcell.com","uploadshare.cz","mangoshare.com","filestab.com","crazyupload.com","gaiafile.com", "sharejunky.com","fileho.com","bigandfree.com","bigfile.in","bigshare.eu","dahosting.org","digisofts.net","file4save.com", "filechip.com","filescloud.com","saveqube.com","turboshare.de","z-upload.com","youshare.com","jiffyupload.com","gigeshare.com", "datenklo.net","upload.dj","loadfiles.in","upit.to","dsfileshare.com","sharesimple.net","4files.net","wooupload.com", "odsiebie.com","filenavi.com","3oof.com","meshwaar.com","maxupload.com","share.cx","atserver.eu","uploking.com", "file2upload.net","filebling.com","turboshare.com","rarhost.com","isharehd.com","i741.com","dataup.de","fofly.com","shareonall.com", "sexuploader.com","megaupload.com|megavideo.com|megaporn.com|megarotic.com","uploadhyper.com","filespawn.com","caizzii.com", "volnyweb.cz","usershare.net","filescash.net","metahyper.com","combozip.com","x7.to","uploadbox.com","enterupload.com|flyupload.com", "filepoint.de","mystream.to","x-fs.com","shareator.com","srapid.eu","sosame.cz","filesdump.com","2-klicks.de","ufox.com", "silofiles.com","upfile.in","filehook.com","uploadking.com","uploadhere.com","kewlshare.com","rapidable.com","hotfiles.ws", "filesonic.com|sharingmatrix.com","fileserve.com","wupload.com", "skipfile.com", "smartuploader.com", "dualshare.com", "storeandserve.com", "mountfile.com", "transitfiles.com", "uploadstation.com", "filejungle.com", "shareshared.com", "quickyshare.com", "save.am", "petandrive.com", "file2box.com", "flyshare.cz", "yabadaba.ru", "cloudcache.cc", "yourfilehost.com", "jakfile.com", "kickload.com", "pyramidfiles.com", "refile.net", "zshare.net", "ddlani.me|ddlanime.com", "ftp2share.com", "fooget.com", "rapidhide.com", "gotupload.com", "mooload.com", "zupload.com", "mytempdir.com", "onionshare.com", "stahnu.to", "oron.com", "badongo.com","filereactor.com","filegaze.com","4bytez.com", "1hostclick.com", "anonstream.com", "batshare.com", "bitroad.net", "brontofile.com", "cloudnxt.net", "cloudnator.com|shragle.com", "coolshare.cz", "dotavi.com", "ezyfile.net", "file-bit.net", "filecosy.com", "fileduct.com|fileduct.net", "filefat.com", "filelaser.com", "filemashine.com", "fileserver.cc", "filetechnology.com", "fireuploads.net", "gigfiles.net", "holderfile.com", "ihostia.com", "k2files.com", "mojofile.com", "ovfile.com", "qshare.com", "shafiles.me", "sharefilehost.com", "shareupload.com", "stahuj.to", "ugotfile.com", "uploadboost.com", "vidhog.com", "xfileshare.eu", "bzlink.us", "bulletupload.com", "wizzupload.com", "bloggerarticles.com", "mojedata.sk", "sharpfile.com", "filerobo.com","filevelocity.com","filezpro.com","file4sharing.com","cing.be","ufile.eu","pigsonic.com","fileupped.com","sharerun.com", "rapidslnare.com","bestsharing.com","savefiles.net","file2share.biz","filecache.de","monsteruploads.eu","b9bb.com","aiotool.net","jamber.info", "megaftp.com","desiupload.net","file27.com","yastorage.com","filehost.ws","copyload.com","venusfile.com","aieshare.com","uploadwaste.com", "fileza.net","filerose.com","squillion.com","fileprohost.com","bitbonus.com","warserver.cz","uload.to","sharedbit.net","megaload.it","filewinds.com","megabitshare.com", "uploadcore.com","syfiles.com","eyesfile.com","hotfile.com","superupl.com","oteupload.com","henchfile.com","filegag.com","HenchFile.com","filedefend.com", "ryushare.com","xtu.me","sharebase.de","upgrand.com","nasdilej.cz","mediatack.cz","share-it.to","primeupload.com","filebeer.info","baberepublic.com", "share-rapid.com|rapids.cz|share-credit.cz|share-central.cz|share-ms.cz|share-net.cz|srapid.cz|share-rapid.cz","czshare.com","przeklej.net","filecity.net", "megarelease.org","storagon.com","rocketfile.net","filecity.eu","berofile.com","ziddu.com","acefile.net","sdilej.cz","clz.to","cloudzer.com", "extabit.com","cloudzer.net", ]; String.prototype.contains = function(searchString) { if (searchString.constructor === RegExp) { if (searchString.test(this)) return true; else return false; } else if (searchString.constructor === String) { function replaceStr(string) { return string.replace(new RegExp(RAND_STRING, 'g'), '|'); } searchString = searchString.replace(/\\\|/g, RAND_STRING); var searchArray = searchString.split('|'); if (searchArray.length > 1) { var found = false; var i = searchArray.length; while (i--) { if (this.indexOf(replaceStr(searchArray[i])) > -1) { found = true; break; } } return found; } else { if (this.indexOf(replaceStr(searchString)) > -1) return true; else return false; } } else { throw new TypeError('String.contains: Input is not valid, string or regular expression required, ' + searchString.constructor.name + ' given.'); } } var firstRun = JSON.parse(localStorage.getItem("War_First_Run")); if (firstRun == null) firstRun = true; var chromeBrowser = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()); var preferences = JSON.parse(localStorage.getItem("War_Preferences")); allHostNames.sort(); allContainerNames.sort(); allObsoleteNames.sort(); var RAND_STRING = "8QyvpOSsRG3QWq"; var RAND_INT = Math.floor(Math.random()*10000); var RAND_INT2 = Math.floor(Math.random()*10000); var ANONYMIZE_SERVICE; var ANONYMIZERS = ['http://anonym.to/?', 'http://anonymz.com/?', 'http://www.blankrefer.com/?', 'http://hidemyass.com/?', 'http://hiderefer.com/?', 'http://nullrefer.com/?', 'http://refhide.com/?']; var TOOLTIP_MAXWIDTH = 600; //in pixels //global settings start var Do_not_linkify_DL_links, Display_tooltip_info, Last_Update_Check, Allow_spaces_in_DL_links, Display_full_links_in_link_containers; var Processbox_Pos_X, Processbox_Pos_Y, Progressbox_Scaling; var cLinksTotal = 0; var cLinksDead = 0; var cLinksAlive = 0; var cLinksUnava = 0; var cLinksUnknown = 0; var cLinksProcessed = 0; var filehostsAlive = ""; var filehostsDead = ""; var filehostsUnava = ""; var filehostsUnknown = ""; var intervalId; //for updateProgress() //icon resources var alive_link_png = 'data:image/png;base64,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'; var adead_link_png = 'data:image/png;base64,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'; var unava_link_png = 'data:image/png;base64,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'; var processing_link_gif = 'data:image/gif;base64,R0lGODlhCgAKAJEDAMzMzP9mZv8AAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAADACwAAAAACgAKAAACF5wncgaAGgJzJ647cWua4sOBFEd62VEAACH5BAUAAAMALAEAAAAIAAMAAAIKnBM2IoMDAFMQFAAh+QQFAAADACwAAAAABgAGAAACDJwHMBGofKIRItJYAAAh+QQFAAADACwAAAEAAwAIAAACChxgOBPBvpYQYxYAIfkEBQAAAwAsAAAEAAYABgAAAgoEhmPJHOGgEGwWACH5BAUAAAMALAEABwAIAAMAAAIKBIYjYhOhRHqpAAAh+QQFAAADACwEAAQABgAGAAACDJwncqi7EQYAA0p6CgAh+QQJAAADACwHAAEAAwAIAAACCpRmoxoxvQAYchQAOw%3D%3D'; //global settings end function linkify(filterId) { //code from http://userscripts.org/scripts/review/2254 Linkify ting if (!filterId) { var regexy = "", ikkeTilladteTags = []; if (Allow_spaces_in_DL_links) { regexy = "(?:http:\/\/.+?\\?)?(?:https?:\/\/)?(?:[\\w\\.\\-]*[\\w\\-]+\\.(?:com?\\.\\w{2}|in\\.ua|uk\\.com|\\w{2,4})(?::\\d{2,5})?\/|(?:www\\.)?\\w{6,}\\.1fichier\\.com)[\\w\\–\\-\\.+$!*\\/\\(\\)\\[\\]\',~%?:@#&=\\\\\\—;\\u0020…×Ã\\_\\u0080-\\u03FF’‘\\|]*"; } else { regexy = "(?:http:\/\/.+?\\?)?(?:https?:\/\/)?(?:[\\w\\.\\-]*[\\w\\-]+\\.(?:com?\\.\\w{2}|in\\.ua|uk\\.com|\\w{2,4})(?::\\d{2,5})?\/|(?:www\\.)?\\w{6,}\\.1fichier\\.com)[\\w\\–\\-\\.+$!*\\/()\\[\\]\',~%?:@#&=\\\\\\—;…×Ã\\_\\u0080-\\u03FF’‘\\|]*"; } if (Do_not_linkify_DL_links) { ikkeTilladteTags = ['a', 'head', 'script', 'style', 'title', 'option', 'iframe', 'textarea', 'span']; //tags, hvor det der stAΞ’Β¥r inden i ikke skal vAΞ’Β¦re links } else { ikkeTilladteTags = ['a', 'head', 'script', 'style', 'title', 'option', 'iframe', 'textarea']; //tags, hvor det der stAΞ’Β¥r inden i ikke skal vAΞ’Β¦re links } var regex = new RegExp(regexy, "g"); var censors = [ ]; var censorRegex = new RegExp("(?:http:\/\/.+?\\?)?(?:https?:\/\/)?[\\w\\.\\-]*~\\s?(?:" + censors.join("|") + ")\\.*\\s?~[\\w\\–\\-\\.+$!*\\/()\\[\\]\',~%?:@#&=\\\\\\—;…×Ã\\_\\u0080-\\u03FF’‘]*", "i"); var ignoreImage = /(?:\.png|\.jpg|\.gif|\.jpeg|\.bmp)$/i, textNode, muligtLink; var path = "//text()[not(parent::" + ikkeTilladteTags.join(" or parent::") + ") and contains(.,'/')]"; var textNodes = document.evaluate(path, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); var i = textNodes.snapshotLength; while (i--) { textNode = textNodes.snapshotItem(i); muligtLink = textNode.nodeValue; //all links on page var myArray = null; if (regex.test(muligtLink)) { var span = document.createElement('span'), lastLastIndex = 0, myArray = null; regex.lastIndex = 0; while (myArray = regex.exec(muligtLink)) { var link = $.trim(myArray[0]); //removes whitespace from beginning and end of link (can sometimes cause issues when spaces are still picked up by the regex even when Allow_spaces_in_DL_links is false) var hostName = gimmeHostName2(link); var hostNameSafe = hostName.replace(/\./g, "_dot_").replace(/\-/g, "_dash_").toLowerCase(); if (hostName == gimmeHostName(window.location.hostname) || !hostsIDs[hostNameSafe] || ignoreImage.test(link.replace(/\[\/img\]$/, ""))) { continue; } span.appendChild(document.createTextNode(muligtLink.substring(lastLastIndex, myArray.index))); var $a = $("<a>" + link + "</a>") if (!link.match(/https?:\/\//)) { link = 'http://' + link; } $a.attr("href", link.replace(/\[\/hide:\w+\]/,"")).appendTo(span); lastLastIndex = regex.lastIndex; } span.appendChild(document.createTextNode(muligtLink.substring(lastLastIndex))); textNode.parentNode.replaceChild(span, textNode); } else if (censorRegex.test(muligtLink)) { if (textNode.parentNode.className == "obsolete_link") continue; var censoredLink = muligtLink.match(censorRegex)[0]; if (ignoreImage.test(censoredLink)) continue; var span = document.createElement('span'); span.innerHTML = censoredLink; span.className = "obsolete_link"; $(span).attr('warlc_error', "Cause of error: <b>Censored link.</b>"); span.addEventListener("mouseover", displayTooltipError, false); if (filehostsDead.search("censored links") == -1) filehostsDead += "censored links,"; cLinksTotal++; cLinksProcessed++; cLinksDead++; textNode.parentNode.replaceChild(span, textNode); } } } var jQ; filterId ? jQ = "a." + filterId : jQ = "a"; var as = $(jQ); var i = as.length; var currA, hostNameSafe, hostID; while(i--) { currA = as[i]; if (currA.href && /^https?:\/\//.test(currA.href) && gimmeHostName2(currA.href) != -1 && gimmeHostName2(currA.href) != gimmeHostName(window.location.host) && (!currA.className || currA.className == "processing_link" || currA.className == filterId)) { hostNameSafe = gimmeHostName2(currA.href).replace(/\./g, "_dot_").replace(/\-/g, "_dash_").toLowerCase(); if (!hostsIDs[hostNameSafe]) { if (filterId) cLinksTotal--; currA.className = ''; continue; } else { var ix = hostsIDs[hostNameSafe].length; while(ix--) { if (new RegExp(hostsIDs[hostNameSafe][ix].linkRegex).test(currA.href)) { currA.className = "processing_link"; hostID = hostsIDs[hostNameSafe][ix].hostID; hostsCheck[hostID].links.push(currA); foundMirrors[hostID.substr(0,2)].push(hostID); } } } } } } function add_WARLC_style() { if (!(document.getElementsByTagName('WARLC')[0])) { var meta_not_to_add_more_style = document.createElement("WARLC"); meta_not_to_add_more_style.setAttribute('content', 'war_links_checker'); meta_not_to_add_more_style.setAttribute('name', 'description'); document.getElementsByTagName('head')[0].appendChild(meta_not_to_add_more_style); /* change link colors */ GM_addStyle( ".alive_link {background:transparent url(" + alive_link_png + ") no-repeat scroll 100% 50%;background-size:13px;padding-right:13px;color:green !important;}\ .adead_link {background:transparent url(" + adead_link_png + ") no-repeat scroll 100% 50%;background-size:13px;padding-right:13px;color:red !important;}\ .obsolete_link {background:transparent url(" + adead_link_png + ") no-repeat scroll 100% 50%;background-size:13px;padding-right:13px;color:red !important;}\ .unava_link {background:transparent url(" + unava_link_png + ") no-repeat scroll 100% 50%;background-size:14px;padding-right:13px;color:#FFD700 !important;}\ .processing_link {background:transparent url(" + processing_link_gif + ") no-repeat scroll 100% 50%;background-size:13px;padding-right:16px;color:grey !important;}\ .container_link {background:transparent url(" + processing_link_gif + ") no-repeat scroll 100% 50%;background-size:13px;padding-right:16px;color:Darkkhaki !important;}" ); } } var warlcTooltip = null, mouseoverLink = null; //link href with mouse cursor over it var lastX = 0, lastY = 0; $(document).ready(initTooltip); //inits tooltip function initTooltip() { warlcTooltip = document.createElement("div"); warlcTooltip.setAttribute("style", "background: #EAEAEA; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.5);padding: 6px 6px 6px 6px; border-radius:2px; border:2px solid #6699CC; color:#000000;font-family:Verdana,sans-serif;font-size:11px;position:absolute;z-index:1000; max-width: " + TOOLTIP_MAXWIDTH + "px;"); warlcTooltip.style.visibility = "hidden"; document.body.appendChild(warlcTooltip); } //"mousemove" event handler for all links function moveTooltip(event) { if ((Math.abs(lastX - event.clientX) + Math.abs(lastY - event.clientY)) < 6) { //no need to reflow if the cursor moved just a little return; } else { lastX = event.clientX; lastY = event.clientY; } posX = event.clientX + window.pageXOffset + 10; posY = event.clientY + window.pageYOffset; var ttHeight = warlcTooltip.offsetHeight; var ttFreeSpace = window.innerHeight - event.clientY; if (ttHeight > ttFreeSpace) { //prevents tooltip from getting out of the window posY -= (ttHeight - (ttFreeSpace)) + 10; } else { posY += 7; } warlcTooltip.style.top = posY + "px"; warlcTooltip.style.left = posX + "px"; } //"mouseout" event handler for all links function hideTooltip(){ warlcTooltip.style.visibility = "hidden"; mouseoverLink = null; } //"mouseover" event handler for dead links //displays tooltip error message on dead links function displayTooltipError() { mouseoverLink = this.href; this.addEventListener("mouseout", hideTooltip); this.addEventListener("mousemove", function(event) { moveTooltip(event); }); warlcTooltip.innerHTML = '<b>CHECKING...</b>'; warlcTooltip.style.minWidth = 0; warlcTooltip.style.visibility = "visible"; if ($(this).attr('warlc_error')) { //an error message is already known and stored in warlc_error attribute warlcTooltip.innerHTML = $(this).attr('warlc_error'); } else { loadErrorInfo(this); } function loadErrorInfo(link) { var href = link.href; if (link.href.contains('anysend.com') && link.name) href = link.name; href = href.replace(/quickshare\.cz\/.+/, "quickshare.cz/chyba"); GM_xmlhttpRequest({ method: 'GET', url: href.replace(ANONYMIZE_SERVICE, ""), headers: { 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey', 'Accept': 'text/xml,application/x-httpd-php', 'Referer': "" }, onload: function(result) { var res = result.responseText; //console.log(res); //TODO: errorRegexs - var errorRegexs = [ //generic error messages follow /(empty directory)/i, /(soubor nebyl nalezen)/i, /((?:file|page|link|folder)(?:is|not|does|has been|was|has| ){1,}(?:found|available|blocked|exists?|deleted|removed|expired))/i, //server specific error messages follow /msg error" style="cursor: default">(.+?)<\/div>/, //sendspace /color:red;font\-weight:bold;border\-style:dashed;font-size:12px;border\-width:2px;><tr><td align=center>(.+?)<\/td>/, //fastshare /errorIcon">\s*<p><strong>(.+?)<br \/>/, //filefactory /no_download_msg">\s*(.+?)<span/, //depositfiles /(Takový soubor neexistuje. Je možné, že byl již smazán.)/, //quickshare /file_info file_info_deleted">\s*<h1>(.+?)<\/h1>/, //filepost /<br \/>\s*<p style="color:#000">(.+?)<\/p>\s*<\/center>/, //letitbit /(?:error_div">|<\/h1><p>)<strong>(.+?)<\/strong>/, //share-rapid,quickshare /class="red">(.+?)<(?:span|br)>/, //czshare, megashares /class="wp640">\s*<h1 class="h1">(.+?)<\/h1>/, //uloz.to /download_file">\s*<tr>\s*<td>(.+?)<\/td>/, //hotfile /error\.gif" \/>\s*(.+?)\s*<\/div>/, //uploading.com /not-found">\s*<p>(.+?)<\/p>/, //bayfiles /(Your file could not be found. Please check the download link.)/, //stahnu.to /error_msg">\s*(<h3>.+?<\/h3><ul>(.+?)<\/ul>)/, //edisk /id="obsah">\s*<h2>(.+?)<\/h2>/, //euroshare /error">\s*(?:<[bp]>)?\s*(.+?)<\/[bp]>/, //filesmonster, shragle, gigapeta /center aC">\s*<h1>(.+?)<br \/>/, //uploaded.to /icon_err">\s*<h1>(.+?)<\/h1>/, //filejungle /Code: ER_NFF_\d+<\/h2>\s*(.+?)\s*<\/div>/, //netload /(File has been removed due to Copyright Claim)/, //filerio /<span style="color:red;" class="result-form">(.+?)<\/span>/, //safelinking /(The file link that you requested is not valid.)/, //2shared /#FF0000"><big>(.+?\s+.+?)<\/big>/, //jumbofiles /error_msg_title">(.+?)<\/h3>/, //mediafire /<span class="bold">(?:<br \/>)+(.+?)<\/span>/, //filebox /err">(.+?)</, //speedy-share, will work for others /message warning" style=".+?">\s+((?:.+?\s+)+?)<\/div>/, //cloudzer /<h2 class="error">(.+?)<\/h2>/, //gigasize.com /<h1 class="filename" id="status">(.+?)<\/h1>/, //anysend.com /<title>(Removed download) \| AnySend<\/title>/, //anysend.com /<div class='message t_0'>(.+?)<\/div>/, //sockshare.com ]; var errorIdx = errorRegexs.length; var error = "Cause of error: <b>unknown</b>"; var errorCandidate = ""; while(errorIdx--) { var errorCandidate = res.match(errorRegexs[errorIdx]); if (errorCandidate != null) { error = "Cause of error: <b>" + errorCandidate[1].replace(/ /g," ") + "</b>"; break; } } //link attributes $(link).attr('warlc_error', error); if (mouseoverLink == link.href) //mouse cursor is still over the link { warlcTooltip.innerHTML = error; } } }); } } //"mouseover" event handler for alive links //displays tooltip info (file size, file name,...) on alive links function displayTooltipInfo() { mouseoverLink = this.href; //exclude direct download filehostings if (this.href.contains(/(?:uloziste\.com|filemonster\.net|uploadbin\.net|adrive\.com|dropbox(?:usercontent)?\.com|karelia\.pro|archive\.org|demo\.ovh\.eu)/)) { return; } this.addEventListener("mouseout", hideTooltip); this.addEventListener("mousemove", function(event) { moveTooltip(event); }); warlcTooltip.innerHTML = '<b>CHECKING...</b>'; warlcTooltip.style.minWidth = 0; warlcTooltip.style.visibility = "visible"; if (this.warlc_tooltipcache) //file size is already known and stored in warlc_filename and warlc_filesize attributes { warlcTooltip.innerHTML = this.warlc_tooltipcache; } else { loadInfo(this); } function loadInfo(link) { var href = link.href; if (link.href.contains('anysend.com')) href = link.name; href = href.replace(/.*rapidshare\.com\/files\/(\d+)\/(.+)/, 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=checkfiles&cbf=rapidshare_com&cbid=1&files=$1&filenames=$2'); href = href.replace(/.*rapidshare\.com\/#!download\|\w+\|(\d+)\|([^|]+).*/, 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=checkfiles&cbf=rapidshare_com&cbid=1&files=$1&filenames=$2'); href = href.replace(/.*(?:share-online\.biz|egoshare\.com)\/(?:dl\/|download\.php\?id=|\?d=)(\w+)/, 'http://api.share-online.biz/linkcheck.php?links=$1'); href = href.replace(/.*(?:uploaded|ul)\.(?:to|net)\/(?:files?\/|\?(?:lang=\w{2}&)?id=|f(?:older)?\/)?(?!img|coupon)(\w+)/, 'http://uploaded.net/api/filemultiple?apikey=lhF2IeeprweDfu9ccWlxXVVypA5nA3EL&id_0=$1'); href = href.replace(/.*(?:depositfiles\.(?:com|lt|org)|dfiles\.(?:eu|ru))\/(?:en\/|ru\/|de\/|es\/|pt\/|)files\/(\w+)/, 'http://depositfiles.com/api/get_download_info.php?id=$1&format=json') //href = href.replace(/.*(?:cloudzer\.net|clz\.to)\/(?:file\/)?(\w+)/, 'http://cloudzer.net/api/filemultiple?apikey=mai1EN4Zieghey1QueGie7fei4eeh5ne&id_0=$1'); GM_xmlhttpRequest({ method: 'GET', url: href.replace(ANONYMIZE_SERVICE, ""), headers: { 'Accept': 'text/xml,application/x-httpd-php', 'Referer': "" }, onload: function(result) { var res = result.responseText; //console.log(res); var nameRegexs = [ /File Name: (.+?)<\/p>/, //filesmall /(?:finfo|(?:file[-_]?)?name)(?:"|')?>\s*?(.+?)<\/?(?:h1|a|b|div|span style|td)/, //hellshare, uploaded.to, netload, badongo, 4fastfile, luckyshare /fl" title="(.+?)">/, //edisk /Celý název: <a href="http:\/\/czshare.com\/\d+\/\w+\/">(.+?)<\/a>/, //czshare /<title>\s*(?:Download)?\s*(.+?)\s*(?::: DataPort|\| Ulož|- Share\-Rapid|- WEBSITENAME|download Extabit|- download now for free|\| refile)/, //dataport, uloz.to, share-rapid, shragle, extabit, filefactory, refile.net /<h3>Stahujete soubor: <\/h3>\s*<div class="textbox">(.+?)<\/div>/, //webshare /<h3><b><span style=color:black;>(.+?)<\/b><\/h3><br>/, //fastshare /title="download (.+?)">/, //sendspace /Stáhnout soubor: (.+?)<\/h1>/, //quickshare /fz24">Download:\s*<strong>(.+?)<\/strong>/, //crocko /\w+:<\/b> (.+?)<\/h2>/, //filevelocity /box_heading" style="text-align:center;">(.+?) - \d+/, //freakshare /'file\-icon\d+ \w+'>(?:<\/span><span>)?(.+?)<\/span>/, //hitfile, turbobit /d0FileName = "(.+?)";/, //letitbit /file(?:_name|-info)" title="">\w+: <span>(.+?)<\/span>/, //vip-file, shareflare /download_file_title" title="(.+?)">/, //mediafire /dl\-btn\-label"> (.+?) <\/div>/, //mediafire /rapidshare_com\(1,"\d+,([^,]+)/, //rapidshare /id="file_title">(.+?)<\/h1>/, //uploading.com /recent-comments"><h2>(.+) /, //xdisk /fname" value="(.+?)">/, //sharerun, syfiles, grupload, /download\-header">\s*<h2>File:<\/h2>\s*<p title="(.+?)">/, //bayfiles /description">\s*<p><b>Soubor: (.+?)<\/b>/, //bezvadata /Complete name : (.+?)<br \/>/, //bezvadata /itemprop="name">(.+?)<\/span>/, //bezvadata /Downloading:\s*<\/strong>\s*<a href="">\s*(.+?)\s*<\/a>/, //rapidgator /(?:Downloading |Lade herunter |<h1>)(.+?) \- \d+/, //bitshare, nitrobits /Downloading:<\/strong> (.+?) <span>/, //hotfile /<h1 class="black xxl" style="letter-spacing: -1px" title="(.+?)">/, //megashares /(?:Filename|Dateiname):<\/b>(?:<\/td><td nowrap>)?(.+?)(?:<br>|<\/td>)/, //billionuploads /<span > (.+?) \(\d+.?\d+? \w+\)<\/span>/, //clipshouse /File Download Area<\/center><\/h1><center><h3>(.+?)<\/h3>/, //filebeam /<h2 class="float\-left">(.+?)<\/h2>/, //easyfilesharing /<h1 id="file_name" class=".+?" title="(.+?)">/, //box.com /file_info">\s+<h2><strong>(.+?)<\/strong>/, //fliiby /dateiname'>(.+?)<\/h1>/, //file-upload.net /Filename:<\/p>\s+<\/div>\s+<div class=".+?">\s+<p>\s+(.+?)\s+<\/p>/, //sharesix /File Name:<\/dt>\s+<dd>(.+?)<\/dd>/, //gamefront /<h2>Download File (.+?) <span id="span1">/, //jumbofiles.org /dir="ltr">(.+?) <\/td>/, //unlimitshare.com /nom_de_fichier">(.+?)<\/div>/, //uploadhero /OK;(.+?);\d+/, //share-online /File:\s*<span>(.+?)<\/span>/, //keep2share /Name:<\/font>\s*<font style=".+?">(.+?)<\/font>/, //zippyshare /online,\w+,\d+,\w+,(.+)/, //uploaded.net, cloudzer.net /\{"file_info":\{"size":"\d+","name":"(.+?)"\},"/, //depositfiles.com /File:<\/div>\s*\n*<div class="name">(.+?)<\/div>/, //dizzcloud.com /site-content">\s*\n*<h1>(.+?)<strong>/, //putlocker.com /<div class="external_title_left">(.+)<\/div>/, //putlocker.com /(?:File name|Nom du fichier) :<\/th><td>(.+?)<\/td>/, //1fichier.com /<div id="file_name" class="span8">\n\s+<h2>(.+?)<\/h2>/, //filefactory.com /<span class="bgbtn sprite fileIcon ext\w+"><\/span>\s+<strong title="(.+?)">/, //gigasize.com /<span class="label label-important">Downloading<\/span>\s<br>\s(.+?)\s[\d\.]+\s\w+\s<\/h4>/, //nowdownload.eu /<!-- File header informations -->\n\s*<br\/>\n\s*<h1>(.+?)<\/h1>/, //mixturecloud.com /<span class="file-name">(.+?)<\/span>/, //anysend.com /<td class="dofir" title="(.+?)">/, //billionuploads.com /<title>ULTRAMEGABIT\.COM - (.+?)<\/title>/, //ultramegabit.com /<title>Download (.+?) \| myUpload\.dk<\/title>/, //myupload.dk /<td width="300px" align="left" valign="top">Downloaded \d{1,} times<br>\nFile: (.+?)<br>/, //datafilehost.com /<div id="download\-title">\n\s*<h2>(.+?)<\/h2>/, //solidfiles.com /<div class="content_m"><div class="download"><h1>(.+?)<\/h1>/, //mystore.to /<h4 class="dl_name w420" >\s*(.+?) <span/, //myvdrive.com /<div class='badge pull-right'>.+?<\/div>\s*<h1>Download (.+?)<\/h1>/, //filemonkey.in /<strong>File name:<\/strong> (.+?)<br \/>/, //netkups.com /<div id="file_name" title="(.+?)">/, //uploadable.ch ]; var nameIdx = nameRegexs.length; // [sizeRegexs] // / \ \? // prefix (size) postfix // / \ // val quant var quantRegex = '(?:M|G|K)?i?(?:B)(?:[y|i]te?s?)?'; var valRegex = '\\d+(?:[\\., ]\\d+){0,2}'; // 111([., ]222)?([., ]333)? var uniSizeRegex = valRegex + '(?:\\s*| )' + quantRegex; var preSizeRegex = '(?::|\\(|>|>, | - |\\[)'; var postSizeRegex = '(?:\\))?'; var sizeRegexs = [ preSizeRegex + "\\s*(" + uniSizeRegex + ")\\s*" + postSizeRegex, 'rapidshare_com\\(1,"\\d+,[^,]+,(\\d+)', //rapidshare 'FileSize_master">(.+?)<\/strong>', //hellshare 'Velikost: <strong>(.+?)<\/strong>', //warserver 'File Size:(?:<\/b>) (.+?)<\/(?:p|td)>', //filesmall, unlimitzone 'online,\\w+,(\\d+),', //uploaded.net '"file_info":{"size":"(\\d+)","name":', //depositfiles.com '(?:File size|Taille) :<\/th><td>(.+?)<\/td>', //1fichier.com ';(\\d+)\n$', //share-online.biz 'label-important">Downloading<\/span>.+?(' + uniSizeRegex + ') <\/h4>', //nowdownload.eu '<h5>Size : (' + uniSizeRegex + ')<\/h5>', //mixturecloud.com, '<td>\\n\\s*Total size:\\n\\s*</td>\\n\\s*<td>\\n\\s*(.+?)\\s*</td>', //anysend.com '<span class="size">(' + uniSizeRegex + ')</span>', //easybytez.com 'span class="filename_normal">\\((' + uniSizeRegex + ')\\)</span>', //uploadable.ch ]; var sizeIdx = sizeRegexs.length; // // var tooltip = "File Name: <b>"; var fileName = "unknown"; var nameCandidate = ""; while(nameIdx--) { var nameCandidate = res.match(nameRegexs[nameIdx]); if (nameCandidate != null) { fileName = nameCandidate[1].replace(/ /g," ").replace("<br>", ""); break; } } tooltip += fileName + "</b><br>File Size: <b>"; var fileSize = "unknown"; var sizeCandidate = ""; while(sizeIdx--) { sizeCandidate = res.match(new RegExp(sizeRegexs[sizeIdx], "i")); if (sizeCandidate != null) { fileSize = sizeCandidate[1].replace(/ /g," "); if (/^\d+$/.test(fileSize) && fileSize >= 1024) //assume bytes { if(fileSize > (1<<30)) fileSize = Math.round(10 * fileSize / (1<<30)) / 10 + ' GB'; else if(fileSize > (1<<20)) fileSize = Math.round(fileSize / (1<<20)) + ' MB'; else fileSize = Math.round(fileSize / 1024) + ' KB'; } break; } } tooltip += fileSize + "</b>"; // Safelinking package info if (href.contains('safelinking.net/p/')) { var linkStatus = res.match(/<span style="color:green;" class="result-form">(.+?)<\/span>/); var linkTitle = res.match(/link\-title">(.+?)<\/span>/); var linkDesc = res.match(/description" class="result-form">(.+?)<\/span>/); if (linkStatus) { tooltip = "<b>Link status:</b> " + linkStatus[1].replace(/<\/?strong>/,"").replace(/<br\/>/, " "); } if (linkTitle) { tooltip += "<br><b>Title:</b> " + linkTitle[1]; } if (linkDesc) { tooltip += "<br><b>Description:</b> " + linkDesc[1]; } } link.warlc_tooltipcache = tooltip; if (mouseoverLink == link.href) //mouse cursor is still over the link { warlcTooltip.innerHTML = tooltip; } } }); } } //function to return hostname + tld function gimmeHostName(link) { if (link.contains(/([\w-]+\.(?:com?\.\w{2}|in\.ua|uk\.com|\w{2,4}))(?::\d+)?$/)) return link.match(/([\w-]+\.(?:com?\.\w{2}|in\.ua|uk\.com|\w{2,4}))(?::\d+)?$/)[1]; else { console.warn("gimmeHostName error.", link); return -1; } } //Second gimmehostname function to match whole hostname function gimmeHostName2(link) { link = link.replace(/http:\/\/.*?\?http:\/\//, 'http://'); //anonymizers if (link.contains(/(?:https?:\/\/)?(?:www\.|[\w\.])*?[\w-]+\.(?:com?\.\w{2}|in\.ua|uk\.com|\w{2,4})(?::\d+)?\//)) return link.match(/(?:https?:\/\/)?(?:www\.|[\w\.])*?([\w-]+\.(?:com?\.\w{2}|in\.ua|uk\.com|\w{2,4}))(?::\d+)?\//)[1]; else if (link.contains(".1fichier.com")) { return "1fichier.com"; } else { console.warn("gimmeHostName error.", link); return -1; } } function uniqArray(array) { var uniqueArray = []; $.each(array, function(i, el){ if($.inArray(el, uniqueArray) === -1) uniqueArray.push(el); }); return uniqueArray; } function sendMessage(text) { var msgDiv = "<div class='WarInfoMsg'>" + text + "</div>"; $(".WarInfoBox").append(msgDiv).show(); setTimeout(function(){$(".WarInfoBox").hide()}, 5000); } function genset(pref, def) { var val = preferences.general[pref]; if (val == undefined) val = def; return val; } function lsSave() { localStorage.setItem("War_Preferences", JSON.stringify(preferences)); } function setVariables() { if (firstRun) { console.warn('First run, compiling preferences object...'); preferences = { hosts: {}, general: {} } lsSetVal("general", "Display_tooltip_info", false); lsSetVal("general", "Display_full_links_in_link_containers", true); lsSetVal("general", "Allow_spaces_in_DL_links", false); lsSetVal("general", "Do_not_linkify_DL_links", false); lsSetVal("general", "Extabit_API_Check", false); lsSetVal("general", "Filefactory_API_Check", false); lsSetVal("general", "Processbox_Pos_Y", 0); lsSetVal("general", "Processbox_Pos_X", 90); lsSetVal("general", "Progressbox_Scaling", 100); //lsSetVal("general", "Last_Update_Check", new Date().valueOf()); lsSetVal("general", "Ref_anonymize_service", ANONYMIZERS[0]); localStorage.setItem("War_First_Run", false); lsSave(); } Display_tooltip_info = genset("Display_tooltip_info", false); Display_full_links_in_link_containers = genset("Display_full_links_in_link_containers", true); Allow_spaces_in_DL_links = genset("Allow_spaces_in_DL_links", false); Do_not_linkify_DL_links = genset("Do_not_linkify_DL_links", false); Processbox_Pos_Y = genset("Processbox_Pos_Y", 0); Processbox_Pos_X = genset("Processbox_Pos_X", 90); Progressbox_Scaling = genset("Progressbox_Scaling", 100); Last_Update_Check = genset("Last_Update_Check", 0); ANONYMIZE_SERVICE = genset("Ref_anonymize_service", ANONYMIZERS[0]); ANONYMIZE_SERVICE = (ANONYMIZE_SERVICE != 'NoRed' ? ANONYMIZE_SERVICE : ''); } function hostSet(key, def) { //will get the value of the key in pref object, if key is undefined -> opposite value of default returned (to keep the compatibility with old GM_getValue and the inversed default values in War 2.0) var val = preferences.hosts[key]; if (val == undefined) val = !def; return val; } function lsSetVal(section, key, value) { //replacement of GM_setValue, valid for both sections of preferences object preferences[section][key] = value; lsSave(); } // Delinkifies the links // params: // links -> list of links or link components (note they should be sufficiently unique to identify the link on page, // e.g. 'uloz.to/xs68skxl8') function delinkifySnapshot(snapshot) { var n = snapshot.snapshotLength; while (n--) { thisLink = snapshot.snapshotItem(n); var spanElm = document.createElement("span"); spanElm.className = thisLink.className; spanElm.innerHTML = thisLink.innerHTML; if (Display_tooltip_info) { spanElm.href = thisLink.href; switch (thisLink.className){ case "alive_link": spanElm.addEventListener("mouseover", displayTooltipInfo, false); break case "adead_link": spanElm.addEventListener("mouseover", displayTooltipError, false); break; case "obsolete_link": spanElm.addEventListener("mouseover", displayTooltipError, false); break; case "unava_link": //reserved default: } } thisLink.parentNode.replaceChild(spanElm, thisLink); } } function checkLinks(filterId) { start(filterId); } /** * Initialises progress box including event binding and CSS */ function initProgressBox() { if ($("#warlc-progressbox").length > 0) return; //progressbox css var progressboxCss = "#warlc-progressbox {position:fixed; background:lightgrey; bottom:" + Processbox_Pos_Y + "%; left:" + Processbox_Pos_X + "%; padding:5px; font-size:10px; font-weight:bold; font-family:Helvetica; width:130px; cursor:default; border:1px solid #4DD9FF; z-index:200;}\ \ #warlc-hostdetails {position:fixed; background:lightgrey; bottom:" + (parseInt(Processbox_Pos_Y) + 9) + "%; left:" + Processbox_Pos_X + "%; padding:5px; font-size:10px; font-weight:bold; cursor:default; border:1px solid #4DD9FF; display:none; z-index:201;}\ \ .warlc-progressbox-contents {right: 5px;}\ \ .warlc-progressbar {text-align:left; background: blue; height:3px; margin-bottom:5px; width:0px; border-radius:1.5px; }\ \ .warlc-progressitem { display: block; padding:2.5px 0px 2.5px 20px }\ \ .alive {color: green; background:transparent url(" + alive_link_png + ") no-repeat scroll 0% 50%;background-size:15px;}\ \ .adead {color: red; background:transparent url(" + adead_link_png + ") no-repeat scroll 0% 50%;background-size:15px;}\ \ .unava {color: #FFFF00; background:transparent url(ToBeAddedLater) no-repeat scroll 0% 50%;background-size:15px;}\ \ .processing {color: black; background:transparent url(" + processing_link_gif + ") no-repeat scroll 0% 50%;}" if (Progressbox_Scaling != 100) { $.each(progressboxCss.match(/[\d\.]+px/g), function(i, el) { //dynamic rescaling of the progressbox according to user settings progressboxCss = progressboxCss.replace(new RegExp(el + "(?!" + RAND_STRING + ")"), parseFloat(el) * Progressbox_Scaling/100 + "px" + RAND_STRING); //RAND_STRING to prevent the same value replaced twice }); } progressboxCss = progressboxCss.replace(new RegExp(RAND_STRING, "g"), "").replace("ToBeAddedLater", unava_link_png); //inserting the unava_link_png at the end because the function messes up its base64 string GM_addStyle(progressboxCss); $('body').append(' <div id="warlc-progressbox">\ <div class="warlc-progressbox-contents">\ <div class="warlc-progressbar" aria-valuenow=0></div>\ <div class="warlc-progressitems">\ <span class="warlc-progressitem alive"></span>\ <span class="warlc-progressitem adead"></span>\ <span class="warlc-progressitem unava"></span>\ <span class="warlc-progressitem processing"></span>\ </div>\ </div>\ </div>\ <div id="warlc-hostdetails"></div>'); $('#warlc-progressbox').hide().click(function(){ clearInterval(intervalId); $(this).hide(); return false; }); $(".warlc-progressitem").hover(function() { showHostDetails(this); }, function() { showHostDetails("none"); }); } function showHostDetails(item) { var $div = $("#warlc-hostdetails"); if (item == "none") { $div.hide().removeClass(); if ($("#warlc-progressbox").css("display") != "none") intervalId = setInterval(function() { updateProgress(); }, 1000); } else { var statusArr; var divTxt = "These Links are "; switch(item.className) { case "warlc-progressitem alive": divTxt += "Alive: "; statusArr = filehostsAlive; break; case "warlc-progressitem adead": divTxt += "Dead: "; statusArr = filehostsDead; break; case "warlc-progressitem unava": divTxt += "Unavailable: "; statusArr = filehostsUnava; break; case "warlc-progressitem processing": divTxt += "Still processing: "; statu