- // ==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