W.A.R. Links Checker Customized Premium Link Version

detects premium only links on some hosts.

当前为 2014-06-05 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name W.A.R. Links Checker Customized Premium Link Version
  3. // @description detects premium only links on some hosts.
  4. // @details this script automatically checks links from 650+ filehosts. For Firefox, Chrome, Opera, Safari.
  5. // @namespace premium version
  6. // @version 1.0.8.2
  7. // @icon http://sharenxs.com/photos/2014/02/14/52fd759db90ac/cooltext1428903746.png
  8. // @license GPL version 3 or any later version (http://www.gnu.org/copyleft/gpl.html)
  9. // @author <a href="http://userscripts.org/users/510590">mentalps</a>
  10. // @include http://*
  11. // @include https://*
  12. // @include file:///*
  13. // @grant GM_setValue
  14. // @grant GM_getValue
  15. // @grant GM_xmlhttpRequest
  16. // @grant GM_log
  17. // @grant GM_addStyle
  18. // @grant GM_registerMenuCommand
  19. // @grant GM_getResourceText
  20. // @grant GM_info
  21. // @require https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
  22. // @require https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js
  23. // @resource jQueryUICSS https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/smoothness/jquery-ui.css
  24. // @homepage http://www.mentalps.5gbfree.com
  25. // @namespace http://www.mentalps.5gbfree.com
  26. // ==/UserScript==
  27.  
  28. //separate alternative domains with "|" char (first name is considered being main)
  29. var allHostNames = ["1fichier.com|dl4free.com","2download.de","2shared.com","4fastfile.com","4shared.com","adrive.com","aisfile.com","hellfile.com",
  30. "bayfiles.com","bezvadata.cz","bitshare.com","burnupload.com|burnupload.ihiphop.com","cobrashare.sk","firedrive.com","usersfiles.com","pan.baidu.com",
  31. "cramit.in|cramitin.net","czshare.com","dataport.cz","datei.to","daten-hoster.de|filehosting.org|xtraupload.de","demo.ovh.com","depositfiles.com","divshare.com",
  32. "divxden.com","easy-share.com|crocko.com","easybytez.com","edisk.cz","enigmashare.com","erofly.cz","euroshare.eu","file-upload.net","yadi.sk",
  33. "fastshare.cz","fiberupload.net","filefactory.com","rocketfile.net","filecity.net","share.vnn.vn","berofile.com","yunpan.cn","gulfup.com","tropicshare.com",
  34. "fileflyer.com","filerio.com|filekeen.com","filemonster.net","up.4share.vn","upfile.vn","sharesuper.info","datafilehost.com","fileband.com","worldbytez.com",
  35. "files.mail.ru","files.to","filedino.com","filepost.com|fp.io","filesend.net","filesflash.com","box.com","box.net","vidbox.yt","goldbytez.com","sdilej.cz",
  36. "fileshare.in.ua","filesmonster.com","filestore.to","freakshare.net","hulkload.com","lumfile.com","lumfile.se","lumfile.eu","filedropper.com",
  37. "free.fr","free-uploading.com","gamefront.com|filefront.com","getthebit.com","gettyfile.ru","gigapeta.com","gigasize.com","gigaup.fr",/*"glumbo.com|glumbouploads.com",*/
  38. "goldfile.eu","good.com","grupload.com","hellshare.com","hellspy.com","hipfile.com","hitfile.net","hostuje.net","freefilehosting.net","fcore.eu",
  39. "hulkshare.com","hyperfileshare.com","filecloud.io|ifile.it","ifolder.ru","jumbofiles.com","uploadrocket.net","filesfrog.net","lafiles.com",
  40. "leteckaposta.cz|sharegadget.com","letitbit.net","load.to","loombo.com","mediafire.com","megafileupload.com","megashare.com","megashares.com",
  41. "movshare.net","muchshare.net","multishare.cz","myupload.dk","narod.ru|narod.yandex.ru","netload.in","ok2upload.com","fboom.me",
  42. "openfile.ru","partage-facile.com","plunder.com","putlocker.com","sharerapid.cz","exclusiveloader.com","acefile.net","dotsemper.com",
  43. "queenshare.com","quickshare.cz","rapidgator.net","rapidshare.com","rapidshare.ru", "daj.to","keep2share.com",
  44. "rapidupload.sk","rarefile.net","rayfile.com","rghost.net","sendmyway.com", "4savefile.com","filesaur.com",
  45. "sendspace.com","sharecash.org","share-links.biz","share-now.net","share-online.biz|egoshare.com","megarapid.cz",
  46. "shareflare.net","slingfile.com","sms4file.com","solidfiles.com","space4file.com","speedfile.cz",
  47. "speedshare.org","stahovanizasms.cz","storage.novoro.net","tufiles.ru","turbobit.net",
  48. "turboupload.com","uloz.to|ulozto.cz|bagruj.cz|zachowajto.pl","ulozisko.sk","uloziste.com","unibytes.com","up-file.com",
  49. "upload-il.net|przeslij.net","uploadbin.net","uploaded.to|ul.to","uploading.com","uploadmachine.com", "uploadjet.net",
  50. "uploadspace.pl","upnito.sk","uptobox.com","usaupload.net","veehd.com","videobb.com","videozer.com",
  51. "vip-file.com","webshare.cz","xdisk.cz","yunfile.com|filemarkets.com","ziddu.com",
  52. "zippyshare.com", "uploading4u.eu", "premiuns.org", "rodfile.com", "migahost.com", "wikiupload.com", "uploadstube.de",
  53. "flyfiles.net", "nowdownload.eu", "dark-uploads.com", "asfile.com", "prefiles.com", "axifile.com",
  54. "upthe.net", "hackerbox.org", "sharefiles.co", "amonshare.com", "uploadorb.com", "data.hu", "filestay.com",
  55. "hulkfile.eu", "uptorch.com", "netkups.com", "vreer.com", "edoc.com", "isavelink.com", "upfile.biz",
  56. "uppit.com|up.ht", "peejeshare.com", "ddlstorage.com", "downloadani.me", "filesabc.com",
  57. "sharebeast.com", "sharebees.com", "filemates.com", "180upload.com", "verzend.be", "asixfiles.com", "zomgupload.com", "mlfat4arab.com",
  58. "movreel.com", "4up.me", "extmatrix.com", "i-filez.com", "sendfiles.nl", "yourfilestore.com", "filebig.net", "fileupup.com",
  59. "sockshare.com", "share76.com", "filebox.com", "nekaka.com", "file4safe.com", "freeuploads.fr|uploa.dk", "tusfiles.net",
  60. "kupload.org", "filemac.com", "files2k.eu", "coraldrive.net", "idup.in",
  61. "luckyshare.net", "uploadic.com", "fileswap.com", "potload.com", "clouds.to", "billionuploads.com", "rockdizfile.com",
  62. "getzilla.net", "nosupload.com", "fileking.co",
  63. "filesbb.com", "maxshare.pl", "myvdrive.com|fileserving.com", "filesin.com", "novafile.com", "longfiles.com",
  64. "toucansharing.com", "filesega.com", "uploadhero.com", "uploadbaz.com",
  65. "unextfiles.com", "stahovadlo.cz", "zooupload.com", "247upload.com", "bitupload.com",
  66. "indowebster.com", "superload.cz", "mafiastorage.com",
  67. "ultramegabit.com", "limelinx.com","ubuntuone.com",
  68. "minus.com", "filesmelt.com", "hellupload.com", "packupload.com", "uploadingit.com", "stiahni.si", "filefolks.com",
  69. "filedefend.com", "sendspace.pl", "fastshare.org","cyberlocker.ch", "filesector.cc",
  70. "filestrum.com", "fileuplo.de", "upaj.pl", "sinhro.net", "filedownloads.org", "egofiles.com", "filestore.com.ua",
  71. "upafile.com", "secureupload.eu", "cepzo.com","ifile.ws", "rapidfileshare.net", "stiahnito.sk",
  72. "rusfolder.com", "fileover.net", "catshare.net", "anonfiles.com", "mixturecloud.com", "nitrobits.com",
  73. "fileparadox.in","filedais.com",
  74. "akafile.com","creafile.net","hugefiles.net",
  75. "upload.ee","epicshare.net","shareplace.org","uploadc.com","darkport.org","yourfiles.to","remixshare.com",
  76. "exoshare.com","borncash.org","bigupload.com","junocloud.me","keep2share.cc","k2s.cc","expressleech.com","2downloadz.com","megafiles.se",
  77. "davvas.com","fileom.com","mightyupload.com","uncapped-downloads.com","anysend.com","datafile.com","upstore.net","upsto.re","usefile.com","speedy.sh",
  78. "sanshare.com","dizzcloud.com","filedap.com","swankshare.com","forunesia.com","filevice.com","kingfiles.net","uploadhero.co","ge.tt","filesflash.net",
  79. "redload.net","salefiles.com","keep2s.cc","megairon.net","terafile.co","swatupload.com","fastsonic.net","bayfiles.net","nirafile.com","mydisc.net","shareprofi.com",
  80. "datoid.cz","cloudstor.es","streamfile.com","eyesfile.ca","filemoney.com","uploadboy.com","fileshareup.com","filemonkey.in","speedshare.eu","google.com",
  81. "unlimitzone.com","migupload.com","rioupload.com","dodane.pl","rg.to","jumbofiles.org","fshare.vn","spaceforfiles.com","up.media1fire.com","depfile.com","uploadinc.com",
  82. "upshared.com","go4up.com","dropbox.com","przeklej.net","redbunker.net","divxpress.com","mega.co.nz","lemuploads.com","megarelease.org","anafile.com","uploadable.ch",
  83. "wallobit.com","arabloads.com","sharerepo.com","sfshare.se","files.fm","koofile.com","shared.com","uploadsat.com","vidplay.net","storagon.com","qkup.net","inafile.com",
  84.  
  85. ];
  86.  
  87. try
  88. {
  89. //iframes excluded
  90. if (window.top != window.self)
  91. {
  92. return;
  93. }
  94. //allHostNames sites excluded
  95. if (window.location.href.match("https?:\/\/(www\.)?[\w\.-]*(?:" +
  96. allHostNames.join("|").replace(/\./g, "\\.").replace(/-/g, "\\-") +
  97. ")"))
  98. {
  99. return;
  100. }
  101. }
  102. catch (e)
  103. {
  104. return;
  105. }
  106.  
  107. //separate alternative domains with "|" char (first name is considered being main)
  108. var allContainerNames = ["adf.ly","linkcrypt.ws","linksafe.me","linksave.in","linkto.net","madlink.sk","multiload.cz",
  109. "mirrorcreator.com","ncrypt.in","redi.re","relink.us","safelinking.net","theloo.katt.it","bit.ly"];
  110.  
  111. //separate alternative domains with "|" char (first name is considered being main)
  112. var allObsoleteNames = ["uloz.cz","storage.to","iskladka.cz","file-rack.com","fast-load.net","subory.sk","bigandfree.com",
  113. "fileop.com","mujsoubor.cz","sendfile.to","superfastfile.com","quickyshare.com","duckload.com","uploadstore.net","meinupload.com",
  114. "dualshare.com","2xupload.to|2xupload.de","oxedion.com","uploadline.com","dll.bz","movieshare.in","milledrive.com","quickupload.net",
  115. "safelink.in","metadivx.com","divxlink.com","uploadrack.com","teradepot.com","dataup.to","upit.to","driveway.com","eatlime.com",
  116. "a2zuploads.com","friendlyfiles.net","flyfile.us","speedyshare.com","uploadspace.eu","keepfile.com","piggyshare.com","uplly.com",
  117. "filecrown.com","6giga.com","uploadjockey.com","bluehost.to","filegu.ru","filebase.to","up-file.com","xvideos.com","ufox.com",
  118. "filebling.com","loaded.it","uploadcell.com","uploadshare.cz","mangoshare.com","filestab.com","crazyupload.com","gaiafile.com",
  119. "sharejunky.com","fileho.com","bigandfree.com","bigfile.in","bigshare.eu","dahosting.org","digisofts.net","file4save.com",
  120. "filechip.com","filescloud.com","saveqube.com","turboshare.de","z-upload.com","youshare.com","jiffyupload.com","gigeshare.com",
  121. "datenklo.net","upload.dj","loadfiles.in","upit.to","dsfileshare.com","sharesimple.net","4files.net","wooupload.com",
  122. "odsiebie.com","filenavi.com","3oof.com","meshwaar.com","maxupload.com","share.cx","atserver.eu","hotfiles.ws","esnips.com",
  123. "file2upload.net","filebling.com","turboshare.com","rarhost.com","isharehd.com","i741.com","dataup.de","fofly.com","shareonall.com",
  124. "sexuploader.com","megaupload.com|megavideo.com|megaporn.com|megarotic.com","uploadhyper.com","filespawn.com","caizzii.com",
  125. "volnyweb.cz","usershare.net","filescash.net","metahyper.com","combozip.com","x7.to","uploadbox.com","enterupload.com|flyupload.com",
  126. "filepoint.de","mystream.to","x-fs.com","shareator.com","srapid.eu","sosame.cz","filesdump.com","2-klicks.de","uploking.com",
  127. "silofiles.com","upfile.in","filehook.com","uploadking.com","uploadhere.com","kewlshare.com","rapidable.com","uploadwaste.com",
  128. "filesonic.com|sharingmatrix.com","fileserve.com","wupload.com", "skipfile.com", "smartuploader.com", "dualshare.com", "storeandserve.com",
  129. "mountfile.com", "transitfiles.com", "uploadstation.com", "filejungle.com", "shareshared.com", "quickyshare.com", "save.am", "petandrive.com",
  130. "file2box.com", "flyshare.cz", "yabadaba.ru", "cloudcache.cc", "yourfilehost.com", "jakfile.com", "kickload.com", "pyramidfiles.com",
  131. "refile.net", "zshare.net", "ddlani.me|ddlanime.com", "ftp2share.com", "fooget.com", "rapidhide.com", "gotupload.com", "mooload.com",
  132. "zupload.com", "mytempdir.com", "onionshare.com", "stahnu.to", "oron.com", "badongo.com","filereactor.com","filegaze.com","4bytez.com",
  133. "1hostclick.com", "anonstream.com", "batshare.com", "bitroad.net", "brontofile.com", "cloudnxt.net", "cloudnator.com|shragle.com",
  134. "coolshare.cz", "dotavi.com", "ezyfile.net", "file-bit.net", "filecosy.com", "fileduct.com|fileduct.net", "filefat.com", "filelaser.com", "filemashine.com",
  135. "fileserver.cc", "filetechnology.com", "fireuploads.net", "gigfiles.net", "holderfile.com", "ihostia.com", "k2files.com", "mojofile.com",
  136. "ovfile.com", "qshare.com", "shafiles.me", "sharefilehost.com", "shareupload.com", "stahuj.to", "ugotfile.com", "uploadboost.com",
  137. "vidhog.com", "xfileshare.eu", "bzlink.us", "bulletupload.com", "wizzupload.com", "bloggerarticles.com", "mojedata.sk", "sharpfile.com",
  138. "upgrand.com", "nasdilej.cz", "mediatack.cz", "share-it.to","primeupload.com","filebeer.info","baberepublic","xtu.me","sharebase.de",
  139. "filerobo.com","filevelocity.com","filezpro.com","file4sharing.com","cing.be","ufile.eu","pigsonic.com","fileupped.com","sharerun.com",
  140. "rapidslnare.com","bestsharing.com","savefiles.net","file2share.biz","filecache.de","monsteruploads.eu","b9bb.com","aiotool.net","jamber.info",
  141. "megaftp.com","desiupload.net","file27.com","yastorage.com","filehost.ws","copyload.com","venusfile.com","aieshare.com",
  142. "fileza.net","filerose.com","squillion.com","fileprohost.com","bitbonus.com","warserver.cz","uload.to","sharedbit.net","megaload.it","filewinds.com",
  143. "uploadcore.com","syfiles.com","eyesfile.com","hotfile.com","superupl.com","oteupload.com","henchfile.com","filegag.com","HenchFile.com","filedefend.com",
  144. "share-rapid.com|rapids.cz|share-credit.cz|share-central.cz|share-ms.cz|share-net.cz|srapid.cz|share-rapid.cz","megabitshare.com","ryushare.com","cloudzer.com",
  145. "cloudzer.net", "clz.to", "extabit.com",
  146. ];
  147.  
  148. // GM_log(allHostNames.length);
  149. // GM_log(allContainerNames.length);
  150. // GM_log(allObsoleteNames.length);
  151.  
  152. var firstRun = GM_getValue("First_run", true);
  153.  
  154.  
  155. try
  156. {
  157. var thisVersion = GM_info.script.version; //not supported in Scriptish and others
  158. var last_known_version = GM_getValue("last_known_version", "");
  159. if (!last_known_version)
  160. {
  161. last_known_version = thisVersion;
  162. GM_setValue("last_known_version", last_known_version);
  163. }
  164. //var newVersion = !(thisVersion == last_known_version);
  165. var newVersion = !(a.replace(/^(\d+\.\d+\.\d+).*/,'$1') == b.replace(/^(\d+\.\d+\.\d+).*/,'$1')); //true only if one of the first three numbers differs
  166. GM_setValue("last_known_version", thisVersion);
  167. }
  168. catch (err)
  169. {
  170. var newVersion = false;
  171. }
  172.  
  173. var now = (new Date()).getTime();
  174. var last_custom_rules_nag = GM_getValue('last_custom_rules_nag', 0);
  175. if (!last_custom_rules_nag)
  176. {
  177. last_custom_rules_nag = now;
  178. GM_setValue('last_custom_rules_nag', ''+now);
  179. }
  180.  
  181.  
  182. allHostNames.sort();
  183. allContainerNames.sort();
  184. allObsoleteNames.sort();
  185.  
  186. var RAND_STRING = "8QyvpOSsRG3QWq";
  187. var DEBUG_MODE = false;
  188.  
  189. var TOOLTIP_MAXWIDTH = 600; //in pixels
  190. var TOOLTIP_THUMBWIDTH = 200;
  191. var containers_processed = false;
  192.  
  193. //settings for keyboard functions start
  194. var CHECK_ALL_LINKS_KEY = "A";
  195. var CONFIGURATION_KEY = "C";
  196. var copy_to_dead_key = "D";
  197. var toggle_autocheck_key = "W";
  198. var toggle_Enable_Anonymizer_key = "Z";
  199. var first_key_keycode = '17'; // 18=ALT 16=Shift 17=Ctrl 32=SPACE_BAR 9=TAB
  200. var first_key_keycodename = 'CTRL';
  201. var second_key_keycode = '18';
  202. var second_key_keycodename = 'ALT';
  203. var CHECK_ALL_LINKS_KEYCODE = CHECK_ALL_LINKS_KEY.charCodeAt(0);
  204. var CONFIGURATION_KEYCODE = CONFIGURATION_KEY.charCodeAt(0);
  205. var copy_to_dead_keycode = copy_to_dead_key.charCodeAt(0);
  206. var toggle_autocheck_keycode = toggle_autocheck_key.charCodeAt(0);
  207. var toggle_Enable_Anonymizer_keycode = toggle_Enable_Anonymizer_key.charCodeAt(0);
  208. //settings for keyboard functions end
  209.  
  210. //global settings start
  211. var Show_black_background_in_DL_links, Show_line_through_in_dead_links, Color_DL_links;
  212. var Live_links_color, Dead_links_color, Temp_unavailable_links_color, Premium_links_color, Ref_anonymize_service;
  213. var Do_not_linkify_DL_links, Keyboard_functions, Autocheck, Enable_Anonymizer;
  214. var Show_progress_stats, Display_tooltip_info, Icon_set;
  215. var Progress_box_pos_bottom, Progress_box_pos_right, Progress_box_opacity, Progress_box_background_color, Progress_box_item_color;
  216. var Progress_box_refresh_rate;
  217. var Obsolete_file_hosts;
  218. var Custom_rules, Custom_rules_text;
  219.  
  220. var messageBox = document.createElement('b'); // top-left message box
  221.  
  222. var cLinksTotal = 0;
  223. var cLinksDead = 0;
  224. var cLinksAlive = 0;
  225. var cLinksUnava = 0;
  226. var cLinksPrem = 0;
  227. var cLinksProcessed = 0;
  228.  
  229. var intervalId; //for updateProgress()
  230.  
  231. //icon resources
  232. var PAW_ICON_GREEN = 'data:image/png;base64,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';
  233. var PAW_ICON_RED = 'data:image/png;base64,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';
  234. var PAW_ICON_YELLOW = 'data:image/png;base64,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';
  235. var PAW_ICON_PINK = 'data:image/png;base64,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';
  236.  
  237. var RSLC_ICON_GREEN = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AMJCQY36Sc4vgAAAlRJREFUeNpV0r9PE3EABfD3veu1lJYr15ZCoBHBqJBAMEbjL0hYFAkyOAmJMUYd/Q+cXF1wYPQPILppYkKIRARiMDGoaAKimBaKHMWDXnu93venE0Tf9Ib3tg/BP7m3NGgwxtKcM4vyIKSk4BBqnwux9/LGKjvckcNy9/1Akgk2ZJHMWNyw+qWUMSGZ51R2FzbdX1NSyOnZWznn6HRn8UqSCv6gLdz58GSsL2voURJIirAWhh+U1fLO4tbKztdJIvHsw/1NR7/97pJBOR9tDXc+6rMGsg4vkd3AhkMdVJgLounkdKLHdL1S13ZpdyMzbK5pnNF0I0mNn4r3Ze3AJrZvo0zL8KkPyil6rTOgipFzrRezLXVt4zWKtBbwWjIeTgyEQlHiUhepcBpNkSaYehxX20Yw2HYd3VYP6iNRYhrpAeojGfJqvs7rRIyKGpSUGOm4iYgWwX7wB72ps/hWXMZCbgaNkUYQrseUr3SNB0JQRj0DBnSlYWN/DcfNEzifuYzVvS94vf4cVeoiBB2ScY8IiBBnytk7KM5XG8qj9SRClrbnUKNVZKLNWMjPwKkWkYk146BSUbZrz0PC0ZuHzaBYLokq9S90p3pMJRnJl35gtfgZQnAko0lY4WY1+2lu63s+N0EE+agXXrkydc3czjtF7noHXccSx82mWIY0hBpgRVMIalK9WX67tfJzfZJo5EVuouAdieh4kk3KQA21J1rGmuoy/UToMSG5t+vaC5u/7Smikenc04LzHyMAaH+cNcBVGgyWClSIgHAA+2DYy00Wjuz9Bce5MucW9xnuAAAAAElFTkSuQmCC';
  238. var RSLC_ICON_RED = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AMJCQkjdGXwDAAAAcpJREFUeNptkj9PFHEQhp/ZBcIhxyKHYgNCYUxogE0OpdDGxsQCY6e5ggS1Mn4Ce621u7MCYqOdX4DkSLTBqwyNiQmJBiJiDjmWP/ub1+IAMXGqmTx5M5nJY5wpwRiQHPfoL2rG8PVksDOBlKRYZWgwxcwkIQlc0o+fDe3sPu6E1dOQIGWg/yUT4zOUBiLtHYAHFBy6YvRrW+Hzl4/e/P2kAJ8iwRhJscrE+AzDwxG3Z2E/oO9bKMvhzj104aLZ1dFr9PZUWzDWASQMDaYqDZjdvAWzd2HkMlpcJKpUsMlJdHiI3i1Ffr4v9d29pEMnt7UyfOkNNjKKTU8Tl8tghq+sEGqvUZwjZA5EAiShPIetLXxhASSIY3An1Gr4xkabq70iar9OkOeoWCSqVMAM8hzMiObnIUnQ0RFyR0DkgNylzhh7cB+bmsLrdQ7n5gj1OlG5TPxoHro7kUsC4mdQUB5u0NdziW/r5q2M/PkLfG2NsLwMkRHevyVkWQib26t+FJYMIIOUvt5XdmXkunXEke/sQchRCNDdRfAQ8vXND97af1qCxqkRLUj9XKFq/cUUMMmRQHKFZquh7OBhCRr/aATQ/I97foxKZ9z7A9QA5voyr3dtAAAAAElFTkSuQmCC';
  239. var RSLC_ICON_YELLOW = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQJDBgxYO68rwAAAZNJREFUeNptkr9LW1EcxT/3GhOTKIG8QTpm8B8IIoJTFkFwsXVyUaxFJHYoFzJYUVFHn4sKtoidCoKtIigWOtQOhRKowaFzJwcF0VeJ+fFe7nUwP57R7/S9nO+595z7PQJfGUgAsWqPaUBOC/yrHQI+QjKTXc7GQq4EhP+uKzdUcbtnelvhDzXQQHL2bCkbxhOA5GmZ24LUC73zPWE4lQYSmexynaCmjh5Nq9FdANER1uL9j7nfeUhIIFaVJNXEPrguKvPzgfD2G0iBGt8DkPG4CGiIyapZAWBvDUEoBOfnqPQxaANxC3v7Ze1hoQFpmsTbGwMQicLNNeTz2HaKYuO/4DnTauwLeC6i8wW4ZdSbA9rw/GtB6kaPmjyESATKZVZWUxAMQqnI9MTXOqdGcvRFoSw8o+0Pg1DxsD+PcFcJYH8aphSNsr71CkAH/17danAEQAGSa98zv7x4W9AIpGkRzap18cKU3vUv9lmQq6N5SH7cSZ8Uuqx205SI1rPL/6/HN1MW5GiKC84z2at6dixf9u4B/PqUtJuX27QAAAAASUVORK5CYII=';
  240. var RSLC_ICON_PINK = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQJDBgxYO68rwAAAZNJREFUeNptkr9LW1EcxT/3GhOTKIG8QTpm8B8IIoJTFkFwsXVyUaxFJHYoFzJYUVFHn4sKtoidCoKtIigWOtQOhRKowaFzJwcF0VeJ+fFe7nUwP57R7/S9nO+595z7PQJfGUgAsWqPaUBOC/yrHQI+QjKTXc7GQq4EhP+uKzdUcbtnelvhDzXQQHL2bCkbxhOA5GmZ24LUC73zPWE4lQYSmexynaCmjh5Nq9FdANER1uL9j7nfeUhIIFaVJNXEPrguKvPzgfD2G0iBGt8DkPG4CGiIyapZAWBvDUEoBOfnqPQxaANxC3v7Ze1hoQFpmsTbGwMQicLNNeTz2HaKYuO/4DnTauwLeC6i8wW4ZdSbA9rw/GtB6kaPmjyESATKZVZWUxAMQqnI9MTXOqdGcvRFoSw8o+0Pg1DxsD+PcFcJYH8aphSNsr71CkAH/17danAEQAGSa98zv7x4W9AIpGkRzap18cKU3vUv9lmQq6N5SH7cSZ8Uuqx205SI1rPL/6/HN1MW5GiKC84z2at6dixf9u4B/PqUtJuX27QAAAAASUVORK5CYII=';
  241.  
  242. //global settings end
  243. if (window.opera && !window.console)
  244. {
  245. window.console = {};
  246.  
  247. function fn()
  248. {
  249. opera.postError(arguments);
  250. };
  251. ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'].forEach(function (name)
  252. {
  253. window.console[name] = fn;
  254. });
  255. }
  256.  
  257. //displays colored text in message box
  258. function sendMessage(text, color)
  259. {
  260. var msgDiv = document.createElement('div');
  261. msgDiv.style.color = color;
  262. msgDiv.innerHTML = text;
  263. messageBox.appendChild(msgDiv);
  264. setTimeout(function(){messageBox.removeChild(msgDiv)}, 3000);
  265. }
  266.  
  267. //Optimized in v. 1.2.4.4 - the original version was terribly slow in Firefox because all text was matched against the huge regex.
  268. //Now a much simpler regex is used to find all links and those are individually matched against the huge regex.
  269. //A small change in behavior - given "somethinghotfile.com/", "hotfile.com/" won't get linkified.
  270. function linkify(totalourls)
  271. { // code from http://userscripts.org/scripts/review/2254 Linkify ting
  272. var ikkeTilladteTags;
  273. var allLinksRegex = "(?:http:\/\/.+?\\?)?(?:https?:\/\/)?"
  274. + "[0-9A-Za-z]+(?:[\\.-][0-9A-Za-z]+)*\\.[A-Za-z]+/" //instead of totalourls
  275. + "[\\w\\–\\-\\.+$!*\\/()\\[\\]\',~%?:@#&=\\\\\\—;…×Ã\\_\\u0080-\\u03FF’‘" + (Allow_spaces_in_DL_links ? "\\u0020" : "") + "]*";
  276. allLinksRegex = new RegExp(allLinksRegex, "g");
  277. var regexy = "^(?:http:\/\/.+?\\?)?(?:https?:\/\/)?(?:www\\.)?(?:" + totalourls + ")";
  278.  
  279. if (Do_not_linkify_DL_links)
  280. ikkeTilladteTags = ['a', 'head', 'script', 'style', 'title', 'option', 'iframe', 'textarea', 'span']; //tags, hvor det der stAΞ’Β¥r inden i ikke skal vAΞ’Β¦re links
  281. else
  282. ikkeTilladteTags = ['a', 'head', 'script', 'style', 'title', 'option', 'iframe', 'textarea']; //tags, hvor det der stAΞ’Β¥r inden i ikke skal vAΞ’Β¦re links
  283.  
  284. var regex = new RegExp(regexy);
  285. var textNode, muligtLink;
  286.  
  287. var path = "//text()[not(parent::" + ikkeTilladteTags.join(" or parent::") + ") and contains(.,'/')]";
  288. var textNodes = document.evaluate(path, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  289.  
  290. var i = textNodes.snapshotLength;
  291. while (i--)
  292. {
  293. textNode = textNodes.snapshotItem(i);
  294.  
  295. muligtLink = textNode.nodeValue; //all links on page
  296.  
  297. var myArray = null;
  298. var span = null;
  299. var lastLastIndex = 0;
  300. allLinksRegex.lastIndex = 0;
  301. while (myArray = allLinksRegex.exec(muligtLink)) //find all links
  302. {
  303. if (!regex.test(myArray[0])) //this link is not recognized
  304. {
  305. //uncomment to reproduce original behavior ("somethinghotfile.com/" => "hotfile.com/" will get linkified).
  306. //it's probably undesired and it also has a huge overhead - given "xyz.com/", all possibilities will be matched against the huge regex: "xyz.com/", "yz.com/", "z.com/"
  307. //allLinksRegex.lastIndex -= (myArray[0].length - 1); //start next match at the next character, not after the link
  308. continue;
  309. }
  310. if (!span)
  311. span = document.createElement('span');
  312.  
  313. var link = myArray[0];
  314. span.appendChild(document.createTextNode(muligtLink.substring(lastLastIndex, myArray.index))); //inds?t det der kommer for dette hit
  315.  
  316. var $a = $("<a>" + link + "</a>")
  317. if (!link.match(/https?:\/\//))
  318. {
  319. link = 'http://' + link;
  320. }
  321.  
  322. $a.attr("href", link.replace(/\[\/hide:\w+\]/,""))
  323. .addClass("processing_link")
  324. .appendTo(span);
  325. lastLastIndex = allLinksRegex.lastIndex;
  326. }
  327. if (span)
  328. {
  329. span.appendChild(document.createTextNode(muligtLink.substring(lastLastIndex))); //ins?t det der kommer efter sidste hit
  330. textNode.parentNode.replaceChild(span, textNode);
  331. }
  332. }
  333. }
  334.  
  335. function add_WARLC_style()
  336. {
  337. if (!(document.getElementsByTagName('WARLC')[0]))
  338. {
  339. var meta_not_to_add_more_style = document.createElement("WARLC");
  340. meta_not_to_add_more_style.setAttribute('content', 'war_links_checker');
  341. meta_not_to_add_more_style.setAttribute('name', 'description');
  342. document.getElementsByTagName('head')[0].appendChild(meta_not_to_add_more_style);
  343. alive_link_png = "";
  344. adead_link_png = "";
  345. unava_link_png = "";
  346. prem_link_png = "";
  347. switch(Icon_set)
  348. {
  349. //no icons
  350. case 0: break;
  351. // cat paws
  352. case 1: alive_link_png = PAW_ICON_GREEN;
  353. adead_link_png = PAW_ICON_RED;
  354. unava_link_png = PAW_ICON_YELLOW;
  355. prem_link_png = PAW_ICON_PINK;
  356. break;
  357. // classic RSLC look
  358. case 2: alive_link_png = RSLC_ICON_GREEN;
  359. adead_link_png = RSLC_ICON_RED;
  360. unava_link_png = RSLC_ICON_YELLOW;
  361. prem_link_png = RSLC_ICON_PINK;
  362. break;
  363. // cat paws
  364. default:alive_link_png = PAW_ICON_GREEN;
  365. adead_link_png = PAW_ICON_RED;
  366. unava_link_png = PAW_ICON_YELLOW;
  367. prem_link_png = PAW_ICON_PINK;
  368. break;
  369. }
  370. processing_link_gif = 'data:image/gif;base64,' + // or temporary anavailable
  371. 'R0lGODlhCgAKAJEDAMzMzP9mZv8AAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAADACwAAAAACgAKAAACF5wncgaAGgJzJ647cWua4sOBFEd62VEAACH5BAUAAAMALAEAAAAIAAMAAAIKnBM2IoMDAFMQFAAh+QQFAAADACwAAAAABgAGAAACDJwHMBGofKIRItJYAAAh+QQFAAADACwAAAEAAwAIAAACChxgOBPBvpYQYxYAIfkEBQAAAwAsAAAEAAYABgAAAgoEhmPJHOGgEGwWACH5BAUAAAMALAEABwAIAAMAAAIKBIYjYhOhRHqpAAAh+QQFAAADACwEAAQABgAGAAACDJwncqi7EQYAA0p6CgAh+QQJAAADACwHAAEAAwAIAAACCpRmoxoxvQAYchQAOw%3D%3D';
  372.  
  373. var dead_color_css, live_color_css, unava_color_css, prem_color_css, black_background_css;
  374.  
  375. if (Color_DL_links)
  376. {
  377. dead_color_css = 'color:' + Dead_links_color + ' !important;';
  378. live_color_css = 'color:' + Live_links_color + ' !important;';
  379. unava_color_css = 'color:' + Temp_unavailable_links_color + ' !important;';
  380. container_color_css = 'color:' + Container_links_color + ' !important;';
  381. prem_color_css = 'color:' + Premium_links_color + ' !important;';
  382. }
  383. else
  384. {
  385. dead_color_css = live_color_css = unava_color_css = container_color_css = prem_color_css = '';
  386. }
  387.  
  388. if (Show_black_background_in_DL_links)
  389. {
  390. black_background_css = 'background-color: black !important;';
  391. }
  392. else
  393. {
  394. black_background_css = '';
  395. }
  396.  
  397. if (Show_line_through_in_dead_links)
  398. {
  399. line_through_css = 'text-decoration: line-through !important;';
  400. }
  401. else
  402. {
  403. line_through_css = '';
  404. }
  405.  
  406. GM_addStyle(".alive_link {background:transparent url(" + alive_link_png + ") no-repeat scroll 100% 50%;padding-right:15px;" + live_color_css + black_background_css + "}");
  407. GM_addStyle(".adead_link {background:transparent url(" + adead_link_png + ") no-repeat scroll 100% 50%;padding-right:15px;" + dead_color_css + black_background_css + line_through_css + "}");
  408. GM_addStyle(".unava_link {background:transparent url(" + unava_link_png + ") no-repeat scroll 100% 50%;padding-right:15px;" + unava_color_css + black_background_css + "}");
  409. GM_addStyle(".processing_link {background:transparent url(" + processing_link_gif + ") no-repeat scroll 100% 50%;padding-right:15px;" + container_color_css + black_background_css + "}");
  410. GM_addStyle(".container_link {background:transparent url(" + processing_link_gif + ") no-repeat scroll 100% 50%;padding-right:15px;" + container_color_css + black_background_css + "}");
  411. GM_addStyle(".container_list {font-size:90%; list-style-type:square; padding: 0px 5% 0px; margin: 0px}");
  412. GM_addStyle(".prem_link {background:transparent url(" + prem_link_png + ") no-repeat scroll 100% 50%;padding-right:15px;" + prem_color_css + black_background_css + "}");
  413. }
  414. }
  415.  
  416. var warlcTooltip = null;
  417. var mouseoverLink = null; //link href with mouse cursor over it
  418.  
  419. var lastX = 0;
  420. var lastY = 0;
  421.  
  422. $(document).ready(initTooltip);
  423. //inits tooltip
  424. function initTooltip()
  425. { warlcTooltip = document.createElement("div");
  426. 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;");
  427. warlcTooltip.style.visibility = "hidden";
  428. document.body.appendChild(warlcTooltip);
  429. }
  430.  
  431. //"mousemove" event handler for all links
  432. function moveTooltip(event)
  433. {
  434. if ((Math.abs(lastX - event.clientX) + Math.abs(lastY - event.clientY)) < 6)
  435. { //no need to reflow if the cursor moved just a little
  436. return;
  437. }
  438. else
  439. {
  440. lastX = event.clientX;
  441. lastY = event.clientY;
  442. }
  443.  
  444. posX = event.clientX + window.pageXOffset + 10;
  445. posY = event.clientY + window.pageYOffset;
  446. var ttHeight = warlcTooltip.offsetHeight;
  447. var ttFreeSpace = window.innerHeight - event.clientY;
  448. if (ttHeight > ttFreeSpace)
  449. { //prevents tooltip from getting out of the window
  450. posY -= (ttHeight - (ttFreeSpace)) + 10;
  451. }
  452. else
  453. {
  454. posY += 7;
  455. }
  456. warlcTooltip.style.top = posY + "px";
  457. warlcTooltip.style.left = posX + "px";
  458. }
  459.  
  460. //"mouseout" event handler for all links
  461. function hideTooltip(){
  462. warlcTooltip.style.visibility = "hidden";
  463. mouseoverLink = null;
  464. }
  465.  
  466.  
  467. //"mouseover" event handler for dead links
  468. //displays tooltip error message on dead links
  469. function displayTooltipError()
  470. {
  471. mouseoverLink = this.href;
  472. this.addEventListener("mouseout", hideTooltip);
  473. this.addEventListener("mousemove", function(event) { moveTooltip(event); });
  474. warlcTooltip.innerHTML = '<b>LOADING...</b>';
  475. warlcTooltip.style.minWidth = 0;
  476. warlcTooltip.style.visibility = "visible";
  477. if (this.warlc_error) //an error message is already known and stored in warlc_error attribute
  478. {
  479. warlcTooltip.innerHTML = this.warlc_error;
  480. }
  481. else
  482. {
  483. loadErrorInfo(this);
  484. }
  485. function loadErrorInfo(link)
  486. {
  487. var href = link.href;
  488. href = href.replace(/quickshare\.cz\/.+/, "quickshare.cz/chyba");
  489. GM_xmlhttpRequest({
  490. method: 'GET',
  491. url: href.replace(Ref_anonymize_service, ""),
  492. headers: {
  493. 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
  494. 'Accept': 'text/xml',
  495. 'Referer': ""
  496. },
  497. onload: function(result) {
  498. var res = result.responseText;
  499. //TODO: errorRegexs -
  500. var errorRegexs = [ //generic error messages follow
  501. /(empty directory)/i,
  502. /(soubor nebyl nalezen)/i,
  503. /((?:file|page|link|folder)(?:is|not|does|has been|was| ){1,}(?:found|available|blocked|exists?|deleted|removed))/i,
  504. //server specific error messages follow
  505. /msg error" style="cursor: default">(.+?)<\/div>/, //sendspace
  506. /color:red;font\-weight:bold;border\-style:dashed;font-size:12px;border\-width:2px;><tr><td align=center>(.+?)<\/td>/, //fastshare
  507. /no_download_msg">\s*(.+?)<span/, //depositfiles
  508. /(Takový soubor neexistuje. Je možné, že byl již smazán.)/, //quickshare
  509. /file_info file_info_deleted">\s*<h1>(.+?)<\/h1>/, //filepost
  510. /<br \/>\s*<p style="color:#000">(.+?)<\/p>\s*<\/center>/, //letitbit
  511. /(?:error_div">|<\/h1><p>)<strong>(.+?)<\/strong>/, //share-rapid,quickshare
  512. /class="red">(.+?)<(?:span|br)>/, //czshare, megashares
  513. /class="wp640">\s*<h1 class="h1">(.+?)<\/h1>/, //uloz.to
  514. /not-found">\s*<p>(.+?)<\/p>/, //bayfiles
  515. /(Your file could not be found. Please check the download link.)/, //stahnu.to
  516. /error_msg">\s*(<h3>.+?<\/h3><ul>(.+?)<\/ul>)/, //edisk
  517. /id="obsah">\s*<h2>(.+?)<\/h2>/, //euroshare
  518. /error">\s*(?:<[bp]>)?\s*(.+?)<\/[bp]>/, //filesmonster, shragle, gigapeta
  519. ///center aC">\s*<h1>(.+?)<br \/>/, //uploaded.to
  520. /icon_err">\s*<h1>(.+?)<\/h1>/, //filejungle
  521. /Code: ER_NFF_\d+<\/h2>\s*(.+?)\s*<\/div>/, //netload
  522. /(File has been removed due to Copyright Claim)/, //filerio
  523. ];
  524. var errorIdx = errorRegexs.length;
  525. var error = "Cause of error: <b>unknown</b>";
  526. var errorCandidate = "";
  527. while(errorIdx--)
  528. {
  529. var errorCandidate = res.match(errorRegexs[errorIdx]);
  530. if (errorCandidate != null)
  531. {
  532. error = "Cause of error: <b>" + errorCandidate[1].replace(/&nbsp;/g," ") + "</b>";
  533. break;
  534. }
  535. }
  536. //link attributes
  537. link.warlc_error = error;
  538. if (mouseoverLink == link.href) //mouse cursor is still over the link
  539. {
  540. warlcTooltip.innerHTML = error;
  541. }
  542. }
  543. });
  544. }
  545. }
  546.  
  547. //"mouseover" event handler for alive links
  548. //displays tooltip info (file size, file name,...) on alive links
  549. function displayTooltipInfo()
  550. {
  551. mouseoverLink = this.href;
  552. //exclude direct download filehostings
  553. if (this.href.match(/(?:uloziste\.com|filemonster\.net|uploadbin\.net|loombo\.com|adrive\.com|myupload\.dk|storage\.novoro\.net|ubuntuone\.com|multi-debrid\.com\/directdl|mms\.multishare\.cz\/html\/mms_process\.php|zevera\.com\/getFiles|filesmelt\.com)/))
  554. {
  555. return;
  556. }
  557. this.addEventListener("mouseout", hideTooltip);
  558. this.addEventListener("mousemove", function(event) { moveTooltip(event); });
  559. warlcTooltip.innerHTML = '<b>LOADING...</b>';
  560. warlcTooltip.style.minWidth = 0;
  561. warlcTooltip.style.visibility = "visible";
  562. if (this.warlc_tooltipcache) //file size is already known and stored in warlc_filename and warlc_filesize attributes
  563. {
  564. warlcTooltip.innerHTML = this.warlc_tooltipcache;
  565. }
  566. else
  567. {
  568. loadInfo(this);
  569. }
  570. function loadInfo(link)
  571. {
  572. var href = link.href;
  573. 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');
  574. 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');
  575. GM_xmlhttpRequest({
  576. method: 'GET',
  577. url: href.replace(Ref_anonymize_service, ""),
  578. headers: {
  579. 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
  580. 'Accept': 'text/xml',
  581. 'Referer': ""
  582. },
  583. onload: function(result) {
  584. var res = result.responseText;
  585. var nameRegexs = [ /Filename: <b class="f_arial f_14px">(.+?)<\/b>/, //oron
  586. /(?:finfo|file[-_]?name)">\s*(.+?)<\/?(?:h1|a|div|span style|td)/, //hellshare, netload, badongo, 4fastfile
  587. /fl" title="(.+?)">/, //edisk
  588. /Celý název: <a href="http:\/\/czshare.com\/\d+\/\w+\/">(.+?)<\/a>/, //czshare
  589. /<title>\s*(?:Download)?\s*(.+?)\s*(?::: DataPort|\| Ulož|- Share\-Rapid|- WEBSITENAME|download Extabit|- download now for free|\| refile)/, //dataport, uloz.to, share-rapid, shragle, extabit, refile.net
  590. /<h3>Stahujete soubor: <\/h3>\s*<div class="textbox">(.+?)<\/div>/, //webshare
  591. /<h3><b><span style=color:black;>(.+?)<\/b><\/h3><br>/, //fastshare
  592. /title="download (.+?)">/, //sendspace
  593. /Stáhnout soubor: (.+?)<\/h1>/, //quickshare
  594. /fz24">Download:\s*<strong>(.+?)<\/strong>/, //crocko
  595. /\w+: <b>File Download<"(.+?)">/, //depositfiles
  596. /'file\-icon\d+ \w+'>(?:<\/span><span>)?(.+?)<\/span>/, //hitfile, turbobit
  597. /d0FileName = "(.+?)";/, //letitbit
  598. /file(?:_name|-info)" title="">\w+: <span>(.+?)<\/span>/, //vip-file, shareflare
  599. /rapidshare_com\(1,"\d+,([^,]+)/, //rapidshare
  600. /recent-comments"><h2>(.+) &nbsp;/, //xdisk
  601. /fname" value="(.+?)">/, //syfiles, grupload,
  602. /download\-header">\s*<h2>File:<\/h2>\s*<p title="(.+?)">/, //bayfiles
  603. /description">\s*<p><b>Soubor: (.+?)<\/b>/, //bezvadata
  604. /Complete name : (.+?)<br \/>/, //bezvadata
  605. /itemprop="name">(.+?)<\/span>/, //bezvadata
  606. ];
  607. var nameIdx = nameRegexs.length;
  608. // [sizeRegexs]
  609. // / \ \?
  610. // prefix (size) postfix
  611. // / \
  612. // val quant
  613. var quantRegex = '(?:M|G|K)?i?(?:B)(?:[y|i]te?s?)?';
  614. var valRegex = '\\d+(?:[\\., ]\\d+){0,2}'; // 111([., ]222)?([., ]333)?
  615. var uniSizeRegex = valRegex + '(?:\\s*|&nbsp;)' + quantRegex;
  616. var preSizeRegex = '(?::|\\(|>|>, | - )';
  617. var postSizeRegex = '(?:\\))?';
  618. var sizeRegexs = [ preSizeRegex + "\\s*(" + uniSizeRegex + ")\\s*" + postSizeRegex,
  619. 'rapidshare_com\\(1,"\\d+,[^,]+,(\\d+)', //rapidshare
  620. 'FileSize_master">(.+?)<\/strong>', //hellshare
  621. ];
  622. var sizeIdx = sizeRegexs.length;
  623. //
  624. //
  625. var tooltip = "File Name: <b>";
  626. var fileName = "unknown";
  627. var nameCandidate = "";
  628. while(nameIdx--)
  629. {
  630. var nameCandidate = res.match(nameRegexs[nameIdx]);
  631. if (nameCandidate != null)
  632. {
  633. fileName = nameCandidate[1].replace(/&nbsp;/g," ");
  634. break;
  635. }
  636. }
  637. tooltip += fileName + "</b><br>File Size: <b>";
  638. var fileSize = "unknown";
  639. var sizeCandidate = "";
  640. while(sizeIdx--)
  641. {
  642. sizeCandidate = res.match(new RegExp(sizeRegexs[sizeIdx], "i"));
  643. if (sizeCandidate != null)
  644. {
  645. fileSize = sizeCandidate[1].replace(/&nbsp;/g," ");
  646. if (/^\d+$/.test(fileSize) && fileSize >= 1024) //assume bytes
  647. {
  648. if(fileSize > (1<<30)) fileSize = Math.round(10 * fileSize / (1<<30)) / 10 + ' GB';
  649. else if(fileSize > (1<<20)) fileSize = Math.round(fileSize / (1<<20)) + ' MB';
  650. else fileSize = Math.round(fileSize / 1024) + ' KB';
  651. }
  652. break;
  653. }
  654. }
  655. tooltip += fileSize + "</b>";
  656. // PROTOTYPE
  657. // video thumbnails
  658. if (href.match('hellshare'))
  659. {
  660. var thumbs;
  661. thumbs = res.match(/http:\/\/static\d+\.helldata\.com\/thumbs(?:\/\d+){1,2}\/\d{1,2}"/g);
  662. if (thumbs)
  663. {
  664. tooltip += '<br>';
  665. var j = Math.min(thumbs.length, 9);
  666. for (var i = 0; i < j; i++)
  667. {
  668. tooltip += '<img src="' + thumbs[i].replace('"',"") + '" width="' + TOOLTIP_THUMBWIDTH + 'px">';
  669. }
  670. warlcTooltip.style.minWidth = TOOLTIP_MAXWIDTH;
  671. }
  672. }
  673. if (href.match('czshare'))
  674. {
  675. var thumbs;
  676. thumbs = res.match(/src="http:\/\/www(\d+)\.czshare\.com\/images_velke\/\d+\.(\d+)\.jpeg/);
  677. if (thumbs)
  678. {
  679. var thumbsServer = thumbs[1];
  680. var thumbsId = thumbs[2];
  681. tooltip += '<br>';
  682. for (var i = 1; i < 9; i++)
  683. {
  684. tooltip += '<img src="http://www' + thumbsServer + '.czshare.com/images_velke/' + i + '.' + thumbsId + '.jpeg" width="' + TOOLTIP_THUMBWIDTH + 'px">';
  685. }
  686. warlcTooltip.style.minWidth = TOOLTIP_MAXWIDTH;
  687. }
  688. }
  689. if (href.match('bezvadata'))
  690. {
  691. var thumbs;
  692. thumbs = res.match(/http:\/\/nahledy\.bezvadata\.cz\/nahledy\/\d+\/\d+\/\d+_\d+_\d+x\d+_\w.jpg/g);
  693. if (thumbs)
  694. {
  695. tooltip += '<br>';
  696. var j = Math.min(thumbs.length, 9);
  697. for (var i = 0; i < j; i++)
  698. {
  699. tooltip += '<img src="' + thumbs[i] + '" width="' + TOOLTIP_THUMBWIDTH + 'px">';
  700. }
  701. warlcTooltip.style.minWidth = TOOLTIP_MAXWIDTH;
  702. }
  703. }
  704. link.warlc_tooltipcache = tooltip;
  705. if (mouseoverLink == link.href) //mouse cursor is still over the link
  706. {
  707. warlcTooltip.innerHTML = tooltip;
  708. }
  709. }
  710. });
  711. }
  712. }
  713.  
  714. function setVariables()
  715. {
  716. if (firstRun)
  717. {
  718. GM_log('First run, applying default settings...');
  719. GM_setValue("Icon_set",1);
  720. GM_setValue("Display_tooltip_info",false);
  721. GM_setValue("Show_black_background_in_DL_links",false);
  722. GM_setValue("Show_line_through_in_dead_links",false);
  723. GM_setValue("Display_full_links_in_link_containers",false);
  724. GM_setValue("Allow_spaces_in_DL_links",false);
  725. GM_setValue("Autocheck",true);
  726. GM_setValue("Enable_Anonymizer",true);
  727. GM_setValue("Do_not_linkify_DL_links",false);
  728. GM_setValue("Show_progress_stats",true);
  729. GM_setValue("Keyboard_functions",true);
  730. GM_setValue("Obsolete_file_hosts",false);
  731. GM_setValue("Color_DL_links",true);
  732. GM_setValue("Live_links_color","Green");
  733. GM_setValue("Dead_links_color","#FF3300");
  734. GM_setValue("Temp_unavailable_links_color","#F7EF09");
  735. GM_setValue("Container_links_color","DarkKhaki");
  736. GM_setValue("Premium_links_color","DeepPink");
  737. GM_setValue("Ref_anonymize_service","http://hiderefer.com/?");
  738. GM_setValue("Custom_rules",false);
  739. GM_setValue("Custom_rules_text","");
  740. GM_setValue("First_run", false);
  741. }
  742. //hidden settings
  743. GM_setValue("Progress_box_pos_bottom", Progress_box_pos_bottom = GM_getValue("Progress_box_pos_bottom", 20));
  744. GM_setValue("Progress_box_pos_right", Progress_box_pos_right = GM_getValue("Progress_box_pos_right", 10));
  745. GM_setValue("Progress_box_opacity", Progress_box_opacity = GM_getValue("Progress_box_opacity", 85));
  746. GM_setValue("Progress_box_background_color", Progress_box_background_color = GM_getValue("Progress_box_background_color", 'DimGray'));
  747. GM_setValue("Progress_box_item_color", Progress_box_item_color = GM_getValue("Progress_box_item_color", '#FFFFCC'));
  748. GM_setValue("Progress_box_refresh_rate", Progress_box_refresh_rate = GM_getValue("Progress_box_refresh_rate", 2000));
  749. GM_setValue("Debug_mode", DEBUG_MODE = GM_getValue("Debug_mode", false));
  750. //hidden settings end
  751.  
  752. Icon_set = GM_getValue("Icon_set", 1); //0 - no icons, 1 - cat paws, 2 - old RSLC style
  753. Display_tooltip_info = GM_getValue("Display_tooltip_info", false);
  754. Show_black_background_in_DL_links = GM_getValue("Show_black_background_in_DL_links", false);
  755. Show_line_through_in_dead_links = GM_getValue("Show_line_through_in_dead_links", false);
  756. Display_full_links_in_link_containers = GM_getValue("Display_full_links_in_link_containers", false);
  757. Allow_spaces_in_DL_links = GM_getValue("Allow_spaces_in_DL_links", false);
  758. Autocheck = GM_getValue("Autocheck", true);
  759. Enable_Anonymizer = GM_getValue("Enable_Anonymizer", true);
  760. Do_not_linkify_DL_links = GM_getValue("Do_not_linkify_DL_links", false);
  761. Show_progress_stats = GM_getValue("Show_progress_stats", true);
  762. Keyboard_functions = GM_getValue("Keyboard_functions", true);
  763. Obsolete_file_hosts = GM_getValue("Obsolete_file_hosts", false);
  764. Color_DL_links = GM_getValue("Color_DL_links", true);
  765. Live_links_color = GM_getValue("Live_links_color", "Green");
  766. Dead_links_color = GM_getValue("Dead_links_color", "#FF3300");
  767. Temp_unavailable_links_color = GM_getValue("Temp_unavailable_links_color", "#F7EF09");
  768. Container_links_color = GM_getValue("Container_links_color", "DarkKhaki");
  769. Premium_links_color = GM_getValue("Premium_links_color", "DeepPink");
  770. Ref_anonymize_service = GM_getValue("Ref_anonymize_service", "http://hiderefer.com/?");
  771. Custom_rules = GM_getValue("Custom_rules", false);
  772. Custom_rules_text = GM_getValue("Custom_rules_text", false);
  773. }
  774.  
  775.  
  776. // Delinkifies the links
  777. // params:
  778. // links -> list of links or link components (note they should be sufficiently unique to identify the link on page,
  779. // e.g. 'uloz.to/xs68skxl8')
  780. function delinkifySnapshot(snapshot)
  781. {
  782. var n = snapshot.snapshotLength;
  783.  
  784. while (n--)
  785. {
  786. thisLink = snapshot.snapshotItem(n);
  787.  
  788. var spanElm = document.createElement("span");
  789. spanElm.className = thisLink.className;
  790. spanElm.innerHTML = thisLink.innerHTML;
  791.  
  792. if (Display_tooltip_info)
  793. {
  794. spanElm.href = thisLink.href;
  795. switch (thisLink.className){
  796. case "alive_link": spanElm.addEventListener("mouseover", displayTooltipInfo, false); break
  797. case "adead_link": spanElm.addEventListener("mouseover", displayTooltipError, false); break;
  798. case "unava_link": //reserved
  799. default:
  800. }
  801. }
  802. thisLink.parentNode.replaceChild(spanElm, thisLink);
  803. }
  804. }
  805.  
  806. function processContainers()
  807. {
  808. var redirectorTypes = { "HTTP_302": 0,
  809. "INNER_LINK": 1,
  810. "THELOO_KATT_IT": 2,
  811. "CING_BE": 3,
  812. "ADF_LY": 4};
  813. var cMultiloadTotal = 0;
  814. var cMultiloadProcessed = 0;
  815.  
  816. var cMirrorcreatorComTotal = 0;
  817. var cMirrorcreatorComProcessed = 0;
  818.  
  819. var hostRestrictionRegex = "";
  820. var multiloadComRestriction = "";
  821. var multiloadComRestrictionRegex;
  822.  
  823. //
  824. //HANDLING REDIRECTORS START
  825. //
  826.  
  827. var redirectors = new Array();
  828. initRedirectors();
  829.  
  830. var redirectorsCount = redirectors.length;
  831.  
  832. if (redirectorsCount > 0)
  833. {
  834. var allRedirectorsRegex = "";
  835.  
  836. //linkify redirector links
  837. for(var redirIdx = 0; redirIdx < redirectorsCount; redirIdx++)
  838. {
  839. allRedirectorsRegex += redirectors[redirIdx].linkRegex + "|";
  840. }
  841. allRedirectorsRegex = allRedirectorsRegex.replace(/\|$/, "");
  842. linkify(allRedirectorsRegex);
  843. //
  844. //process redirector links
  845. for(var redirIdx = 0; redirIdx < redirectorsCount; redirIdx++)
  846. {
  847. var redirectorsSnapshot = document.evaluate(redirectors[redirIdx].xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  848. redirectors[redirIdx].cTotal = redirectorsSnapshot.snapshotLength;
  849.  
  850. cLinksTotal += redirectors[redirIdx].cTotal;
  851. var linkIdx = redirectors[redirIdx].cTotal;
  852.  
  853. while(linkIdx--)
  854. {
  855. switch(redirectors[redirIdx].type)
  856. {
  857. case redirectorTypes.HTTP_302: processRedirectorLink(redirectorsSnapshot.snapshotItem(linkIdx), redirIdx); break;
  858. case redirectorTypes.INNER_LINK: processRedirectorLinkEx(redirectorsSnapshot.snapshotItem(linkIdx), redirIdx); break;
  859. case redirectorTypes.THELOO_KATT_IT: processThelooKattItLink(redirectorsSnapshot.snapshotItem(linkIdx), redirIdx); break;
  860. case redirectorTypes.CING_BE: processCingBeLink(redirectorsSnapshot.snapshotItem(linkI