daily pastebin goal
51%
SHARE
TWEET

Untitled

a guest Mar 22nd, 2017 16 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?xml version="1.0" encoding="windows-1252"?>
  2. <root>
  3. <host id=".">
  4. <urlpattern>http:\/\/hot-honeys\.com\/hostf.php</urlpattern>
  5. <searchpattern>"Tue, 07 Mar 2017 14:50:00 GMT"</searchpattern>
  6. </host>
  7.  
  8. <host id="10pix">
  9. <urlpattern>^http:\/\/www\.10pix\.com\/show\.php\/</urlpattern>
  10. <searchpattern>"REPLACE: 'show\\.php\\/(.+)\\.html' , 'out.php/i$1'"</searchpattern>
  11. </host>
  12.  
  13. <host id="123-amateur">
  14. <urlpattern>^http:\/\/(?:.+\.)?123-amateur\.com\/fotos\/.+\/\d+(?:$|#.+$)</urlpattern>
  15. <searchpattern>"src="\/images\/fotos\/.+""</searchpattern>
  16. </host>
  17.  
  18. <host id="1amateurs">
  19. <urlpattern>^http:\/\/no1amateurs\.com/\d+/.+?/\d+</urlpattern>
  20. <searchpattern><![CDATA[function(pageData, pageUrl) {
  21.     var iUrl = pageData.match(/img src="(.+?serve3x.+?)"/);
  22.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[1].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  23. }]]></searchpattern>
  24. </host>
  25.  
  26. <host id="2drive">
  27. <urlpattern>^http:\/\/i\.2drive\.net\/.+$</urlpattern>
  28. <searchpattern><![CDATA[function(pageData, pageUrl) {
  29.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  30.     var req = new XMLHttpRequest();
  31.     req.open("POST", pageUrl, false);
  32.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  33.     req.send("op=view&id="+id[1]+"&pre=1&next=Download Now");
  34.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  35.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  36. }]]></searchpattern>
  37. </host>
  38.  
  39. <host id="4chan">
  40. <urlpattern>^http:\/\/.+\.4chan\.org\/.+\/src\/.+</urlpattern>
  41. <searchpattern><![CDATA[function(pageData, pageUrl) {
  42.     var retVal = new Object();
  43.    
  44.     retVal.imgUrl = pageUrl;
  45.     retVal.status = "OK";
  46.    
  47.     return retVal;
  48.     }]]></searchpattern>
  49. </host>
  50.  
  51. <host id="4chanarchive">
  52. <urlpattern>^http:\/\/4chanarchive\.org\/images\/.+\/.+\..{3,4}$</urlpattern>
  53. <searchpattern><![CDATA[function(pageData, pageUrl) {
  54.     var retVal = new Object();
  55.    
  56.     retVal.imgUrl = pageUrl;
  57.     retVal.status = "OK";
  58.    
  59.     return retVal;
  60.     }]]></searchpattern>
  61. </host>
  62.  
  63. <host id="4hot.eu">
  64. <urlpattern>^http:\/\/piceye\.4hot\.eu\/share-.+\.html$</urlpattern>
  65. <searchpattern><![CDATA[function(pageData, pageUrl) {
  66.     var retVal = new Object();
  67.    
  68.     var iUrl = pageData.match(/src='(http:\/\/piceye\.4hot\.eu\/image-.+?\..{3,4})'/);
  69.  
  70.     if (!iUrl) {
  71.         retVal.imgUrl = null;
  72.         retVal.status = "ABORT";
  73.         }
  74.     else {
  75.         retVal.imgUrl = iUrl[1];
  76.         retVal.status = "OK";
  77.         }
  78.  
  79.     return retVal;
  80.     }]]></searchpattern>
  81. </host>
  82.  
  83. <host id="4put">
  84. <urlpattern>http:\/\/4put\.ru\/pics\/all_\d+\/(?:\w+\/(?:\w+\/)?)?small_\d+\/</urlpattern>
  85. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  86.     var hUrl = pageUrl.substr(0,pageUrl.indexOf('/',pageUrl.indexOf('.')));
  87.     var iUrl = pageData.match(/SRC="(\/pictures\/)(?:\w+\/)?small\/(.+?)"/);
  88.     return iUrl ? {imgUrl: hUrl + iUrl[1] + 'max/' + iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  89. }]]></searchpattern>
  90. </host>
  91.  
  92. <host id="500px">
  93. <urlpattern>^https?:\/\/500px\.com\/photo\/.+?$</urlpattern>
  94. <searchpattern><![CDATA[function(pageData, pageUrl) {
  95.     var jsonar = pageData.match(/"images":\[(\{.+?\},?)+?\]/);
  96.     var obj = JSON.parse(jsonar[1]);
  97.     return obj? {imgUrl: obj.url, status: "OK"} : {imgUrl: null, status: "ABORT"}
  98. }]]></searchpattern>
  99. </host>
  100.  
  101. <host id="66pics">
  102. <urlpattern>http:\/\/www\.66pics\.com\/view\/\d+</urlpattern>
  103. <searchpattern>"\.\.\/image\/.+"</searchpattern>
  104. </host>
  105.  
  106. <host id="6on9">
  107. <urlpattern>^http:\/\/(?:www\.)?6on9\.com\/image\.php\?url=.+</urlpattern>
  108. <searchpattern><![CDATA[function(pageData, pageUrl) {
  109.     return {imgUrl: pageUrl.replace(/^http:\/\/(?:www\.)?6on9\.com\/image\.php\?url=(.+)/, '$1'), status: "OK"};
  110. }]]></searchpattern>
  111. </host>
  112.  
  113. <host id="6on9-2">
  114. <urlpattern>^http:\/\/(?:www\.)?6on9\.com\/img\/imgchiligo\.php\?</urlpattern>
  115. <searchpattern>"ID: thepic"</searchpattern>
  116. </host>
  117.  
  118. <host id="7chan">
  119. <urlpattern>^https?:\/\/7chan\.org\/.+\/src\/</urlpattern>
  120. <searchpattern><![CDATA[function(pageData, pageUrl) {
  121.     return {imgUrl: pageUrl, status: "OK"};
  122.     }]]></searchpattern>
  123. </host>
  124.  
  125. <host id="7koreangirls">
  126. <urlpattern>^http:\/\/www\.7koreangirls\.cn\/gallery\?.*pid=\d+</urlpattern>
  127. <searchpattern><![CDATA[function(pageData, pageUrl) {
  128.     var retVal = new Object();
  129.    
  130.     var iUrl = pageData.match(/href="(http:\/\/www\.7koreangirls\.cn\/wp-content\/gallery\/.+?)"/);
  131.  
  132.     if (!iUrl) {
  133.         retVal.imgUrl = null;
  134.         retVal.status = "ABORT";
  135.         }
  136.     else {
  137.         retVal.imgUrl = iUrl[1];
  138.         retVal.status = "OK";
  139.         }
  140.  
  141.     return retVal;
  142.     }]]></searchpattern>
  143. </host>
  144.  
  145. <host id="8muses">
  146. <urlpattern>^https?:\/\/www\.8muses\.com\/comix\/picture\/.+?$</urlpattern>
  147. <searchpattern><![CDATA[function(pageData, pageUrl) {
  148.     var hUrl = pageUrl.substr(0,pageUrl.indexOf('/',pageUrl.indexOf('.')));
  149.     var imD = pageData.match(/id="imageDir" value="(.+)"/);
  150.     var imN = pageData.match(/id="imageName" value="(.+)"/);
  151.     var iUrl = hUrl + imD[1] + "small/" + imN[1];
  152.     return iUrl ? { imgUrl: iUrl, status: "OK" } : { imgUrl: null, status: "ABORT" }
  153. }]]></searchpattern>
  154. </host>
  155.  
  156. <host id="abload">
  157. <urlpattern>^http:\/\/www\.abload\.de\/image\.php\?img=</urlpattern>
  158. <searchpattern>"ID: image"</searchpattern>
  159. </host>
  160.  
  161. <host id="addimage">
  162. <urlpattern>^http:\/\/addimage\.info\/img-.+?\.html$</urlpattern>
  163. <searchpattern><![CDATA[function(pageData, pageUrl) {
  164.     var req = new XMLHttpRequest();
  165.     req.open("POST", pageUrl, false);
  166.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  167.     req.send("");
  168.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  169.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  170. }]]></searchpattern>
  171. </host>
  172.  
  173. <host id="adf.ly">
  174. <urlpattern>^http:\/\/adf\.ly\/\d+\/.+</urlpattern>
  175. <searchpattern><![CDATA[function(pageData, pageUrl) {
  176.     var retVal = {imgUrl: "http://" + pageUrl.match(/^http:\/\/adf\.ly\/\d+\/(.+)/)[1], status: "REQUEUE"};
  177.     return retVal;
  178. }]]></searchpattern>
  179. </host>
  180.  
  181. <host id="adulta2z">
  182. <urlpattern>^http:\/\/(?:www\.)?adulta2z\.com\/.+\/\d+\/\d+</urlpattern>
  183. <searchpattern>"ID: media_photo"</searchpattern>
  184. </host>
  185.  
  186. <host id="adultimagehoster">
  187. <urlpattern>^http:\/\/adultimagehoster\.com\/viewer\.php\?</urlpattern>
  188. <searchpattern>"REPLACE: 'viewer\\.php\\?id=' , 'images/'"</searchpattern>
  189. </host>
  190.  
  191. <host id="adultism">
  192. <urlpattern>http:\/\/static\.adultism\.com\/dbfile\/\d+\/.+</urlpattern>
  193. <searchpattern><![CDATA[function(pageData, pageUrl) {
  194.     var retVal = new Object();
  195.    
  196.     retVal.imgUrl = pageUrl;
  197.     retVal.status = "OK";
  198.     return retVal;
  199.     }]]></searchpattern>
  200. </host>
  201.  
  202. <host id="adultism2">
  203. <urlpattern>^http:\/\/www\.adultism\.com\/pi\d+\/#!.+</urlpattern>
  204. <searchpattern><![CDATA[function(pageData, pageUrl) {
  205.     var retVal = new Object();
  206.    
  207.     var params = pageUrl.match(/^http:\/\/www\.adultism\.com\/pi(\d+)\/#!(.+)/);
  208.    
  209.     var newUrl = "http://www.adultism.com/dn_postimage.php?p=" + params[1] + "&m=" + params[2];
  210.     var req = new XMLHttpRequest();
  211.     req.open("GET", newUrl, false);
  212.     req.setRequestHeader("Referer", pageUrl);
  213.     req.send(null);
  214.    
  215.     if (req.status != 200) {
  216.         retVal.imgUrl = null;
  217.         retVal.status = "ABORT";
  218.         return retVal;
  219.         }
  220.    
  221.     var newPage = req.responseText;
  222.     var iUrl = newPage.match(/<img src="(.+?)"/);
  223.    
  224.     if (!iUrl) {
  225.         retVal.imgUrl = null;
  226.         retVal.status = "ABORT";
  227.         }
  228.     else {
  229.         retVal.imgUrl = iUrl[1];
  230.         retVal.status = "OK";
  231.         }
  232.  
  233.     return retVal;
  234.     }]]></searchpattern>
  235. </host>
  236.  
  237. <host id="adultur">
  238. <urlpattern>^http:\/\/adultur\.com\/\/img-[\da-f]+\.html$</urlpattern>
  239. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  240. </host>
  241.  
  242. <host id="aerisdies">
  243. <urlpattern>^http:\/\/www\.aerisdies\.com\/html\/.+\/img_.+\.html</urlpattern>
  244. <searchpattern>"src="\.\.\/\.\.\/images\/[^\/]+\/.+?" style="border: 1px solid"</searchpattern>
  245. </host>
  246.  
  247. <host id="afisha">
  248. <urlpattern>^http:\/\/www\.afisha\.ru\/.+\/photo\/\d+\/\d+\/$</urlpattern>
  249. <searchpattern>"ID: ctl00_CenterPlaceHolder_ucPhotoPageContent_imgBigPhoto.+"</searchpattern>
  250. </host>
  251.  
  252. <host id="afspot">
  253. <urlpattern>^http:\/\/(?:www\.)?afspot\.net\/gallery\/index\.php\?act=image&amp;pid=\d+</urlpattern>
  254. <searchpattern><![CDATA[function(pageData, pageUrl) {
  255.     var retVal = new Object();
  256.    
  257.     var iUrl = pageData.match(/src="(http:\/\/images\.asianfanatics\.net\/gallery\/albums\/.+?)"/);
  258.    
  259.     if (!iUrl) {
  260.         retVal.imgUrl = null;
  261.         retVal.status = "ABORT";
  262.         }
  263.     else {
  264.         retVal.imgUrl = iUrl[1].replace(/\/normal_/, "/");
  265.         retVal.status = "OK";
  266.         }
  267.  
  268.     return retVal;
  269.     }]]></searchpattern>
  270. </host>
  271.  
  272. <host id="ahcabron">
  273. <urlpattern>^http:\/\/ahcabron\.info\/img-[\da-f]+\.html$</urlpattern>
  274. <searchpattern><![CDATA[function(pageData, pageUrl) {
  275. var req = new XMLHttpRequest();
  276. req.open("POST", pageUrl, false);
  277. req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  278. req.send("imgContinue=Continue+to+image+...+");
  279. var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  280. return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  281. } ]]></searchpattern>
  282. </host>
  283.  
  284. <host id="akiba-online">
  285. <urlpattern>^http:\/\/(?:www\.)?akiba-online\.com\/forum\/attachment\.php\?attachmentid=\d+</urlpattern>
  286. <searchpattern><![CDATA[function(pageData, pageUrl) {
  287.     var retVal = new Object();
  288.  
  289.     retVal.imgUrl = pageUrl;
  290.     retVal.status = "OK";
  291.    
  292.     return retVal;
  293.     }]]></searchpattern>
  294. </host>
  295.  
  296. <host id="all-pictures">
  297. <urlpattern>^http:\/\/www\.all-pictures\.org\/.+\.jpg\.html</urlpattern>
  298. <searchpattern>"ID: IFid2"</searchpattern>
  299. </host>
  300.  
  301. <host id="allanalpass.com">
  302. <urlpattern>^http:\/\/\w+\.allanalpass\.com\/?</urlpattern>
  303. <searchpattern><![CDATA[function(pageData, pageUrl) {
  304.     var retVal = {status: "REDIRECT"};
  305.  
  306.     var newPageUrl = pageData.match(/Lbjs\.TargetUrl = '(.+?)'/);
  307.    
  308.     if (newPageUrl) {
  309.         retVal.status = "REQUEUE";
  310.         retVal.imgUrl = newPageUrl[1].replace(/&amp;/g, "&");
  311.     }
  312.        
  313.     return retVal;
  314. }]]></searchpattern>
  315. </host>
  316.  
  317. <host id="allyoucanupload">
  318. <urlpattern>^http:\/\/allyoucanupload\.webshots\.com\/v\/</urlpattern>
  319. <searchpattern>"Image hosted by allyoucanupload\\.com"</searchpattern>
  320. </host>
  321.  
  322. <host id="alscash">
  323. <urlpattern>^http:\/\/(?:www\.)?alscash\.com\/\w+\/\w+\/.+</urlpattern>
  324. <searchpattern><![CDATA[function(pageData, pageUrl) {
  325.     var retVal = new Object();
  326.    
  327.     retVal.imgUrl = pageUrl;
  328.     retVal.status = "OK";
  329.  
  330.     return retVal;
  331.     }]]></searchpattern>
  332. </host>
  333.  
  334. <host id="amabitch">
  335. <urlpattern>^http:\/\/amabitch\.com\/image\.php\?url=</urlpattern>
  336. <searchpattern><![CDATA[function(pageData, pageUrl) {
  337.     var retVal = new Object();
  338.  
  339.     retVal.imgUrl = pageUrl.replace(/http.+url=(.+)/, "$1");
  340.     retVal.status = "REQUEUE";
  341.  
  342.     return retVal;
  343.     }]]></searchpattern>
  344. </host>
  345.  
  346. <host id="amadmp">
  347. <urlpattern>^http:\/\/www\.amadmp\.com\/view\/.+</urlpattern>
  348. <searchpattern><![CDATA[function(pageData, pageUrl) {
  349.     var retVal = new Object();
  350.    
  351.     var iUrl = pageData.match(/<a href="(.+?)">\s+<img[^>]+id="image"/);
  352.     if (!iUrl) iUrl = pageData.match(/<img src="(.+?)"[^>]+id="image"/);
  353.  
  354.     if (!iUrl) {
  355.         retVal.imgUrl = null;
  356.         retVal.status = "ABORT";
  357.         }
  358.     else {
  359.         retVal.imgUrl = iUrl[1];
  360.         retVal.status = "OK";
  361.         }
  362.  
  363.     return retVal;
  364.     }]]></searchpattern>
  365. </host>
  366.  
  367. <host id="amateur-blogx">
  368. <urlpattern>^http:\/\/www\.amateur-blogx\.com\/out\.php\?.+url=</urlpattern>
  369. <searchpattern><![CDATA[function(pageData, pageUrl) {
  370.     var retVal = new Object();
  371.  
  372.     retVal.imgUrl = pageUrl.replace(/http.+url=(.+)/, "$1");
  373.     retVal.status = "REQUEUE";
  374.  
  375.     return retVal;
  376.     }]]></searchpattern>
  377. </host>
  378.  
  379. <host id="amateurvoyeurforum">
  380. <urlpattern>^http:\/\/(?:www\.)?amateurvoyeurforum\.com\/attachment\.php\?attachmentid=\d+</urlpattern>
  381. <searchpattern><![CDATA[function(pageData, pageUrl) {
  382.     var retVal = new Object();
  383.  
  384.     retVal.imgUrl = pageUrl;
  385.     retVal.status = "OK";
  386.    
  387.     return retVal;
  388.     }]]></searchpattern>
  389. </host>
  390.  
  391. <host id="amourgirlz">
  392. <urlpattern>^http:\/\/amourgirlz\.com\/gallery\/.+\/.+\/\d+\.html</urlpattern>
  393. <searchpattern>"src='http://static\d+\.amourgirlz\.com/[^/]+/thumbs/galleries/.+?\."</searchpattern>
  394. </host>
  395.  
  396. <host id="amy.gs">
  397. <urlpattern>^http:\/\/[\da-f]+\.amy\.gs\/$</urlpattern>
  398. <searchpattern><![CDATA[function(pageData, pageUrl) {
  399.     var retVal = {};
  400.  
  401.     var req = new XMLHttpRequest();
  402.     req.open("GET", pageUrl, false);
  403.     req.send(null);
  404.  
  405.     if (req.status != 200) {
  406.         retVal.imgUrl = null;
  407.         retVal.status = "ABORT";
  408.         return retVal;
  409.         }
  410.  
  411.     retVal.imgUrl = req.channel.URI.spec;
  412.     retVal.status = "REQUEUE";
  413.  
  414.     return retVal;
  415.     }]]></searchpattern>
  416. </host>
  417.  
  418. <host id="animegalleries">
  419. <urlpattern>^http:\/\/www\.animegalleries\.net\/img\/\d+</urlpattern>
  420. <searchpattern>"ID: thephoto_"</searchpattern>
  421. </host>
  422.  
  423. <host id="animexx">
  424. <urlpattern>^http:\/\/animexx(?:-en)?\.onlinewelten\.com\/cosplay\/(?:mitglied\/\d+\/)?\d+\/\d+\/$</urlpattern>
  425. <searchpattern><![CDATA[function(pageData, pageUrl) {
  426.     var rUrl = "http://animexx.onlinewelten.com"
  427.     var reg = new RegExp("(foto|img)_holder(.|\r|\n)+?\/div(.|\r|\n)+?\/div"); 
  428.     if (reg.test(pageData)) {
  429.         var pagePart = pageData.match("(foto|img)_holder(?:.|\r|\n)+?\/div(?:.|\r|\n)+?\/div")[0];
  430.         var id = pagePart.match(/data-foto_id="(.+?)"/)[1];
  431.         var tpl = pagePart.match(/data-foto_link_tpl="(.+?)#foto#\/"/)[1];
  432.         var urlPart2 = "?grossansicht_2226478b=1"
  433.         var urlto = rUrl+tpl+id+"/"+urlPart2;          
  434.         var req = new XMLHttpRequest();        
  435.         req.open("POST", urlto, false);
  436.         req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");      
  437.         req.send("");      
  438.         iUrl = (req.responseText).match(/img.+src="(.+?)"/)[1];
  439.         return {imgUrl: iUrl, status: "OK"}
  440.     }              
  441.     return {imgUrl: null, status: "ABORT"} 
  442. }]]></searchpattern>
  443. </host>
  444.  
  445. <host id="anonib">
  446. <urlpattern>^http:\/\/(?:www|archive)\.anonib\.com\/passnimage\.php</urlpattern>
  447. <searchpattern>"\\/images\\/"</searchpattern>
  448. </host>
  449.  
  450. <host id="anonib2">
  451. <urlpattern>^http:\/\/(?:www\.)?anonib\.com\/.*\/?src\/.+</urlpattern>
  452. <searchpattern><![CDATA[function(pageData, pageUrl) {
  453.     return {imgUrl: pageUrl, status: "OK"};
  454.     }]]></searchpattern>
  455. </host>
  456.  
  457. <host id="artemisweb">
  458. <urlpattern>^http:\/\/ch1\.artemisweb\.jp\/.+\/.+\/.+\/.+\/.+\.html</urlpattern>
  459. <searchpattern>"src=\.\/img\/.+\..{3,4}"</searchpattern>
  460. </host>
  461.  
  462. <host id="asianceleb.info">
  463. <urlpattern>^http:\/\/asianceleb\.info\/\?attachment_id=\d+</urlpattern>
  464. <searchpattern><![CDATA[function(pageData, pageUrl) {
  465.     var retVal = new Object();
  466.    
  467.     var iUrl = pageData.match(/Full size is <a[.\s]+?href="(.+?)"/);
  468.  
  469.     if (!iUrl) {
  470.         retVal.imgUrl = null;
  471.         retVal.status = "ABORT";
  472.         }
  473.     else {
  474.         retVal.imgUrl = iUrl[1];
  475.         retVal.status = "OK";
  476.         }
  477.  
  478.     return retVal;
  479.     }]]></searchpattern>
  480. </host>
  481.  
  482. <host id="asredas">
  483. <urlpattern>^http:\/\/www\.asredas\.com\/image\.php\?img=.+</urlpattern>
  484. <searchpattern>"media\/gals\/"</searchpattern>
  485. </host>
  486.  
  487. <host id="astaga">
  488. <urlpattern>^http:\/\/www\.astaga\.com\/photos\/image\/\d+#image-load</urlpattern>
  489. <searchpattern>"files\/photos\/image"</searchpattern>
  490. </host>
  491.  
  492. <host id="av-girl">
  493. <urlpattern>^http:\/\/(?:www\.)?av-girl\.info\/.+\?url=.+\..{3,4}</urlpattern>
  494. <searchpattern>"ID: img"</searchpattern>
  495. </host>
  496.  
  497. <host id="awsmpic">
  498. <urlpattern>^http:\/\/awsmpic\.com\/img-</urlpattern>
  499. <searchpattern>"http:\/\/.+?\.com\/upload\/big\/\d+/\d+/\d+/[^\.]+\.jpg"</searchpattern>
  500. </host>
  501.  
  502. <host id="aww-kittah">
  503. <urlpattern>http:\/\/www\.aww-kittah-aww\.com\/.+\/.+\/.+\/.+\..{3,4}</urlpattern>
  504. <searchpattern>".+\\/up\\/.+\\..{3,4}"</searchpattern>
  505. </host>
  506.  
  507. <host id="babe-envy">
  508. <urlpattern>^http:\/\/(?:www\.)?babe-envy\.com\/images\/.+\.html</urlpattern>
  509. <searchpattern><![CDATA[function(pageData, pageUrl) {
  510.     var retVal = new Object();
  511.    
  512.     var iUrl = pageData.match(/<img src="(.+?)"><br \/>\s*<br \/>/);
  513.    
  514.     if (!iUrl) {
  515.         retVal.imgUrl = null;
  516.         retVal.status = "ABORT";
  517.         }
  518.     else {
  519.         retVal.imgUrl = iUrl[1];
  520.         retVal.status = "OK";
  521.         }
  522.  
  523.     return retVal;
  524.     }]]></searchpattern>
  525. </host>
  526.  
  527. <host id="babene.moskva">
  528. <urlpattern>http:\/\/babene\.moskva\.com\/popup\.php\?.+Size=1280x960</urlpattern>
  529. <searchpattern><![CDATA[function(pageData, pageUrl) {
  530.     var retVal = new Object();
  531.  
  532.     var urlx = pageData.match(/urlx = '(.+)'/);
  533.  
  534.     if(!urlx) {
  535.         retVal.imgUrl = null;
  536.         retVal.status = "ABORT";
  537.         }
  538.     else {
  539.         retVal.imgUrl = urlx[1].replace(/[a-zA-Z]/g, function(c){ return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);});
  540.         retVal.status = "OK";
  541.         }
  542.    
  543.     return retVal;
  544.     }]]></searchpattern>
  545. </host>
  546.  
  547. <host id="babepicture">
  548. <urlpattern>^http:\/\/(?:www\.)?babepicture\.co\.uk\/play\/.+</urlpattern>
  549. <searchpattern><![CDATA[function(pageData, pageUrl) {
  550.     var retVal = new Object();
  551.    
  552.     var iUrl = pageData.match(/Click For Full View.+?href="([^"]+)"/);
  553.  
  554.     if (!iUrl) {
  555.         retVal.imgUrl = null;
  556.         retVal.status = "ABORT";
  557.         }
  558.     else {
  559.         retVal.imgUrl = iUrl[1];
  560.         retVal.status = "OK";
  561.         }
  562.  
  563.     return retVal;
  564.     }]]></searchpattern>
  565. </host>
  566.  
  567. <host id="babes 2night">
  568. <urlpattern>^http:\/\/www\.babes2night\.com\/galleries\/\d+\/\d+\/.+\/.+\.php</urlpattern>
  569. <searchpattern>"REPLACE: 'php', 'jpg'"</searchpattern>
  570. </host>
  571.  
  572. <host id="babes-board">
  573. <urlpattern>^http:\/\/babeshack\.babes-board\.ch\/(?:f\/|shack\.php\?)</urlpattern>
  574. <searchpattern><![CDATA[function(pageData, pageUrl) {
  575.     var retVal = new Object();
  576.    
  577.     if (pageUrl.match(/^http:\/\/babeshack\.babes-board\.ch\/f\//)) var iUrl = pageUrl;
  578.     else var iUrl = pageUrl.replace(/\.php\?image=/, "/");
  579.    
  580.     retVal.imgUrl = iUrl;
  581.     retVal.status = "OK";
  582.  
  583.     return retVal;
  584.     }]]></searchpattern>
  585. </host>
  586.  
  587. <host id="babes2babes">
  588. <urlpattern>http:\/\/www\.babes2babes\.net\/babes\/.+\/\d+\.php</urlpattern>
  589. <searchpattern>"http:\\/\\/www\\.pimpdump\\.com\\/b2b\\/.+\\/.+"</searchpattern>
  590. </host>
  591.  
  592. <host id="babesaround">
  593. <urlpattern>^http:\/\/(?:www\.)?babesaround\.com\/.+\/.+\.html$</urlpattern>
  594. <searchpattern>"http:\/\/[^\/]+\/.+\/\d+\/\d{2}\..{3,4}"</searchpattern>
  595. </host>
  596.  
  597. <host id="babesrater">
  598. <urlpattern>https?:\/\/(?:www\.)?babesrater\.com\/picture\/.+</urlpattern>
  599. <searchpattern><![CDATA[function(pageData, pageUrl) {
  600.     var iUrl = pageData.match(/style=' height:auto'.+src="(https?:\/\/img\d+\..+?)"/);
  601.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  602. }]]></searchpattern>
  603. </host>
  604.  
  605. <host id="babeupload">
  606. <urlpattern>^http:\/\/www\.babeupload\.com\/view\.php</urlpattern>
  607. <searchpattern>"gallery\\/.+\\...."</searchpattern>
  608. </host>
  609.  
  610. <host id="badgirlsblog">
  611. <urlpattern>^http:\/\/www\.galleries\.badgirlsblog\.com\/albums\/.+\/.+\/.+\.html</urlpattern>
  612. <searchpattern>"REPLACE: 'html', 'jpg'"</searchpattern>
  613. </host>
  614.  
  615. <host id="badsuzy">
  616. <urlpattern>^http:\/\/(?:www\.)?badsuzy\.com\/pictures\/.+\.html</urlpattern>
  617. <searchpattern>"http:\/\/files\.badsuzy\.com\/files\/"</searchpattern>
  618. </host>
  619.  
  620. <host id="bangtidy">
  621. <urlpattern>^http:\/\/(?:www|images)?\.bangtidy\.net\/.+\/attachment\/\d+\/$</urlpattern>
  622. <searchpattern>"ID: theimage"</searchpattern>
  623. </host>
  624.  
  625. <host id="bayimg">
  626. <urlpattern>^http:\/\/bayimg\.com\/(?!(cloud|settings|faq)?$|(album|image|tag)\/)</urlpattern>
  627. <searchpattern><![CDATA[function(pageData, pageUrl) {
  628.    var theId = "mainImage";
  629.  
  630.    var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  631.    var tmpMatch = pageData.match(searchPat);
  632.    if (tmpMatch) {
  633.         var the_url = tmpMatch[0].match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  634.         if (the_url) the_url = the_url[2];
  635.         }
  636.    
  637.    var retVal = new Object();
  638.    
  639.    if(!the_url) {
  640.         retVal.imgUrl = null;
  641.         retVal.status = "ABORT";
  642.         }
  643.    else {
  644.         retVal.imgUrl = the_url;
  645.         retVal.status = "OK";
  646.         }
  647.    
  648.    try {
  649.         var album = pageData.match(/<title>bayimg - image: (.*?) - free uncensored image hosting<\/title>/)[1];
  650.         var image = pageData.match(/Image: (\d+) of (\d+)/);
  651.         if (image) {album = album + "-" + image[1] + "_" + image[2]};
  652.         var fileName = the_url.substring(the_url.lastIndexOf("/")+1);
  653.         retVal.fileName = album + "-" + fileName;
  654.         }
  655.    catch(e) {
  656.         retVal.fileName = Math.random().toString().substring(2) + ".jpg";
  657.         }
  658.    
  659.    return retVal;
  660.    }]]></searchpattern>
  661. </host>
  662.  
  663. <host id="baysideauctions">
  664. <urlpattern>^http:\/\/baysideauctions\.com\/imagehost\/.+php\?.+[giu](sername)*=.+[giu](sername)*=.+</urlpattern>
  665. <searchpattern><![CDATA[function(pageData, pageUrl) {
  666.     var retVal = new Object();
  667.  
  668.     var iUrl = pageData.match(/si\('(http:\/\/baysideauctions\.com\/imagehost\/images\/.+?\.jpg)'/);
  669.        
  670.     if (!iUrl) {
  671.         retVal.imgUrl = null;
  672.         retVal.status = "ABORT";
  673.         }
  674.     else {
  675.         retVal.imgUrl =  iUrl[1];
  676.         retVal.status = "OK";
  677.         }
  678.  
  679.     return retVal;
  680.     }]]></searchpattern>
  681. </host>
  682.  
  683. <host id="bcfakes">
  684. <urlpattern>^http:\/\/www\.bcfakes\.com\/celebritylist\/.+(?:\/)?$</urlpattern>
  685. <searchpattern><![CDATA[function(pageData, pageUrl) {
  686.     var iUrl = pageData.match(/<img.+src="(http:\/\/(?:(cdn.|www.))?bcfakes(?:\.netdna-cdn)?\.com\/gallery.(.(?!thumbs))+?\.jpg)".+?"/);
  687.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"};   
  688. }]]></searchpattern>
  689. </host>
  690.  
  691. <host id="beautychicks">
  692. <urlpattern>^http:\/\/(?:www\.)?beautychicks\.com\/details\.php\?image_id=\d+</urlpattern>
  693. <searchpattern>"\.\/data\/media\/.+\/.+\..{3,4}"</searchpattern>
  694. </host>
  695.  
  696. <host id="beautychicks2">
  697. <urlpattern>^http:\/\/leahdizon\.beautychicks\.com\/index\.php\?id=\d+</urlpattern>
  698. <searchpattern>"pictures\/.+\..{3,4}"</searchpattern>
  699. </host>
  700.  
  701. <host id="bellazon">
  702. <urlpattern>^http:\/\/www\.bellazon\.com\/main\/index\.php\?.+attach</urlpattern>
  703. <searchpattern>"ID: thepic"</searchpattern>
  704. </host>
  705.  
  706. <host id="bestworldporn">
  707. <urlpattern>^http:\/\/(?:www\.)?bestworldporn\.com\/watch\.php\?.+</urlpattern>
  708. <searchpattern><![CDATA[function(pageData, pageUrl) {
  709.     var retVal = new Object();
  710.  
  711.     retVal.imgUrl = pageUrl.replace(/http.+watch\.php\?(.+)/, "$1");
  712.     retVal.status = "REQUEUE";
  713.  
  714.     return retVal;
  715.     }]]></searchpattern>
  716. </host>
  717.  
  718. <host id="bigboobs.hu">
  719. <urlpattern>http:\/\/(www\.)?bigboobs\.hu\/index\.php\?page=pic&amp;pic=.+&amp;dir=.+</urlpattern>
  720. <searchpattern>"REPLACE: '(www\\.)?bigboobs\\.hu\\/index\\.php\\?page=pic&amp;pic=(.+)&amp;dir=(.+)', 'pic.bigboobs.hu/bb/$3/$2'"</searchpattern>
  721. </host>
  722.  
  723. <host id="bitemehost">
  724. <urlpattern>^http:\/\/(?:www\.)?bitemehost\.com\/show\.php\/.+\.html</urlpattern>
  725. <searchpattern>"ID: img_obj"</searchpattern>
  726. </host>
  727.  
  728. <host id="bitstrips">
  729. <urlpattern>^http:\/\/(?:www\.)?bitstrips\.com\/series\/.+\/read\.php\?comic_id=</urlpattern>
  730. <searchpattern>"usemap="#map1""</searchpattern>
  731. </host>
  732.  
  733. <host id="blacksheepcandids">
  734. <urlpattern>^http:\/\/(?:www\.)?blacksheepcandids\.com\/forums\/attachment\.php\?attachmentid=\d+</urlpattern>
  735. <searchpattern><![CDATA[function(pageData, pageUrl) {
  736.     return {imgUrl: pageUrl, status: "OK"};
  737.     }]]></searchpattern>
  738. </host>
  739.  
  740. <host id="bledicola">
  741. <urlpattern>http:\/\/www\.bledicola\.com\/.+foto\.php\?.+</urlpattern>
  742. <searchpattern><![CDATA[function(pageData, pageUrl) {
  743.     var retVal = new Object();
  744.  
  745.     var horse_dick_sucker = pageData.match(/<img id=thepic.+SRC=(.+)\s/);
  746.  
  747.     if(!horse_dick_sucker) {
  748.         retVal.imgUrl = null;
  749.         retVal.status = "ABORT";
  750.         }
  751.     else {
  752.         retVal.imgUrl = horse_dick_sucker[1];
  753.         retVal.status = "OK";
  754.         }
  755.  
  756.     return retVal;
  757.     }]]></searchpattern>
  758. </host>
  759.  
  760. <host id="blogspot">
  761. <urlpattern>^http:\/\/\d+\.\w+\.blogspot\.com\/.+\.jpg</urlpattern>
  762. <searchpattern>"http:\\/\\/\\d+\\.\\w+\\.blogspot\\.com\\/.+\\.jpg"</searchpattern>
  763. </host>
  764.  
  765. <host id="bluefame">
  766. <urlpattern>^http:\/\/.+\.bluefame\.me\/view\.php\?img=</urlpattern>
  767. <searchpattern>"ID: image"</searchpattern>
  768. </host>
  769.  
  770. <host id="bobx">
  771. <urlpattern>^http:\/\/www\.bobx\.com\/.+\/large-.+-\d+\/$</urlpattern>
  772. <searchpattern>"picture serial number"</searchpattern>
  773. </host>
  774.  
  775. <host id="bondageable">
  776. <urlpattern>^http:\/\/www\.bondageable\.com\/image\.php/</urlpattern>
  777. <searchpattern><![CDATA[function(pageData, pageUrl) {
  778.    var imgId = pageUrl.match(/http:\/\/.+\/(.+)\./);
  779.    var iUrl = pageData.match("img src='(.+?" + imgId[1] + ".+?)'");
  780.    return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[1].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  781. }]]></searchpattern>
  782. </host>
  783.  
  784. <host id="boxtheclown">
  785. <urlpattern>^http:\/\/www\.boxtheclown\.com\/letmesee\.aspx</urlpattern>
  786. <searchpattern>"ID: IMG2"</searchpattern>
  787. </host>
  788.  
  789. <host id="bplinx">
  790. <urlpattern>^http:\/\/bplinx\.com\/[^\/]+$</urlpattern>
  791. <searchpattern><![CDATA[function(pageData, pageUrl) {
  792.    var retVal = new Object();
  793.  
  794.     retVal.imgUrl = pageUrl.replace(/(.+)\/(.+)/, "$1/gc/$2");
  795.     retVal.status = "OK";
  796.  
  797.     return retVal;
  798.     }]]></searchpattern>
  799. </host>
  800.  
  801. <host id="bravoerotica">
  802. <urlpattern>^http:\/\/(?:www\.)?bravoerotica\.com\/.+\/\d+\.html$</urlpattern>
  803. <searchpattern><![CDATA[function(pageData, pageUrl) {
  804.     var retVal = {};
  805.    
  806.     var iUrl = pageData.match(/<div class="modelbox-thumbs"(?:.|\s)+?<img src="(.+?)"/);
  807.  
  808.     if (!iUrl) {
  809.         retVal.imgUrl = null;
  810.         retVal.status = "ABORT";
  811.         }
  812.     else {
  813.         retVal.imgUrl = iUrl[1];
  814.         retVal.status = "OK";
  815.         }
  816.  
  817.     return retVal;
  818.     }]]></searchpattern>
  819. </host>
  820.  
  821. <host id="brchan">
  822. <urlpattern>^http:\/\/.+\.brchan\.org\/.+\/src\/.+</urlpattern>
  823. <searchpattern><![CDATA[function(pageData, pageUrl) {
  824.     return {imgUrl: pageUrl, status: "OK"};
  825.     }]]></searchpattern>
  826. </host>
  827.  
  828. <host id="britishsoapbabes">
  829. <urlpattern>^http:\/\/(?:www\.)?britishsoapbabes\.com\/image\.php\?imgid=\d+$</urlpattern>
  830. <searchpattern><![CDATA[function(pageData, pageUrl) {
  831.     return {status: "REDIRECT"};
  832. }]]></searchpattern>
  833. </host>
  834.  
  835. <host id="bruce-juice" maxThreads="1">
  836. <urlpattern>^http:\/\/www\.bruce-juice\.com\/(?:celebrity_archive\/\d+\/.+\/|.+\/\d+\/\d+\/\d+\/.+\/$)</urlpattern>
  837. <searchpattern>"'http:\/\/[^\.]*\.?bruce-juice\.com\/.+\/wp-content\/uploads\/\d+\/\d+\/(?:\d+\/)?.+?'"</searchpattern>
  838. </host>
  839.  
  840. <host id="bufeo">
  841. <urlpattern>^http:\/\/www\.bufeo\.com\/bufeo\/modules\.php\?full=1.+include=view_photo\.php</urlpattern>
  842. <searchpattern><![CDATA[function(pageData, pageUrl) {
  843.     var retVal = new Object();
  844.    
  845.     var iUrl = pageData.match(/id="photo_url" href="(.+?)"/);
  846.  
  847.     if (!iUrl) {
  848.         retVal.imgUrl = null;
  849.         retVal.status = "ABORT";
  850.         }
  851.     else {
  852.         retVal.imgUrl = iUrl[1];
  853.         retVal.status = "OK";
  854.         }
  855.  
  856.     return retVal;
  857.     }]]></searchpattern>
  858. </host>
  859.  
  860. <host id="burek">
  861. <urlpattern>^http:\/\/cache\.burek\.com\/\d{4}\/\d{2}\/.+</urlpattern>
  862. <searchpattern><![CDATA[function(pageData, pageUrl) {
  863.     return {imgUrl: pageUrl, status: "OK"};
  864.     }]]></searchpattern>
  865. </host>
  866.  
  867. <host id="burningcamel">
  868. <urlpattern>http:\/\/www\.burningcamel\.com\/gallery\/.+\/.+</urlpattern>
  869. <searchpattern>"http:\\/\\/media\\.camelmedia\\.net\\/items\\/\\d+\\/\\d+\\/\\d+\\/\\d+\\/.+_\\d+\\..{3,4}"</searchpattern>
  870. </host>
  871.  
  872. <host id="bustynudebabes">
  873. <urlpattern>^http:\/\/bustynudebabes\.com\/galleries\/\w+\/\d{4}-\d{2}\/[\w-]+\/[\w-]+?-\d{2}.html</urlpattern>
  874. <searchpattern>"REPLACE: '\.html' , '.jpg'"</searchpattern>
  875. </host>
  876.  
  877. <host id="butterflysearcher">
  878. <urlpattern>^http:\/\/www\.butterflysearcher\.com\/\?page_id=.+pid=.+picture_nav</urlpattern>
  879. <searchpattern><![CDATA[function(pageData, pageUrl) {
  880.     var retVal = new Object();
  881.  
  882.     var iUrl = pageData.match(/name="SLIDESIMG" src="(.+?)"/);
  883.     iUrl = iUrl[1].replace(/normal_/gi, "");
  884.  
  885.     if (!iUrl) {
  886.         retVal.imgUrl = null;
  887.         retVal.status = "ABORT";
  888.         }
  889.     else {
  890.         retVal.imgUrl = iUrl;
  891.         retVal.status = "OK";
  892.         }
  893.        
  894.     return retVal;
  895.     }]]></searchpattern>
  896. </host>
  897.  
  898. <host id="campusbug">
  899. <urlpattern>^http:\/\/campusbug\.com\/pics\/viewpicture\.php\?</urlpattern>
  900. <searchpattern>"http:\\/\\/campusbug\\.com\\/file\\.php\\?.+?s=0"</searchpattern>
  901. </host>
  902.  
  903. <host id="candidvoyeurism">
  904. <urlpattern>^http:\/\/www\.candidvoyeurism\.com\/.+\/.+\/.+\/\d+\/$</urlpattern>
  905. <searchpattern><![CDATA[function(pageData, pageUrl) {
  906.     var retVal = new Object();
  907.    
  908.     var iUrl = pageData.match(/<div id="video_container">\s+<img src="(.+?)"/);
  909.  
  910.     if (!iUrl) {
  911.         retVal.imgUrl = null;
  912.         retVal.status = "ABORT";
  913.         }
  914.     else {
  915.         retVal.imgUrl = iUrl[1];
  916.         retVal.status = "OK";
  917.         }
  918.  
  919.     return retVal;
  920.     }]]></searchpattern>
  921. </host>
  922.  
  923. <host id="carneargenta">
  924. <urlpattern>^http:\/\/carneargenta\.com\/wp-content\/uploads\/.+\..{3,4}</urlpattern>
  925. <searchpattern><![CDATA[function(pageData, pageUrl) {
  926.     var retVal = new Object();
  927.  
  928.     retVal.imgUrl = pageUrl;
  929.     retVal.status = "OK";
  930.    
  931.     return retVal;
  932.     }]]></searchpattern>
  933. </host>
  934.  
  935. <host id="casimages">
  936. <urlpattern>^https?:\/\/www\.casimages\.com\/.+\.html</urlpattern>
  937. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  938.     var iUrl = pageData.match(/src="(https?.+?casimages\.com\/.+?\.\w{3,4})".+?title="(.+?)"/);
  939.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  940. }]]></searchpattern>
  941. </host>
  942.  
  943. <host id="catsuitmodel.de">
  944. <urlpattern>^http:\/\/catsuitmodel\.de\/scripts\/4images\/details\.php\?image_id=.+</urlpattern>
  945. <searchpattern>"data\/media\/"</searchpattern>
  946. </host>
  947.  
  948. <host id="cavemancircus">
  949. <urlpattern>^http:\/\/www\.cavemancircus\.com\/.+</urlpattern>
  950. <searchpattern>"REPLACE: 'php' , 'jpg'"</searchpattern>
  951. </host>
  952.  
  953. <host id="celeb-walls">
  954. <urlpattern>http:\/\/www\.celeb-walls\.com\/image\.php\?id=.+</urlpattern>
  955. <searchpattern>"ID: thepic"</searchpattern>
  956. </host>
  957.  
  958. <host id="celeb.gate">
  959. <urlpattern>^http:\/\/www\.celeb\.gate\.cc\/de\/.+\/gallery\/p\d+\.html</urlpattern>
  960. <searchpattern>"ID: thepic"</searchpattern>
  961. </host>
  962.  
  963. <host id="celebclk">
  964. <urlpattern>^http:\/\/.+\.celebclk\.com\/</urlpattern>
  965. <searchpattern><![CDATA[function(pageData, pageUrl) {
  966.     var retVal = new Object();
  967.  
  968.     var newPageUrl = pageData.match(/linkDestUrl = '(.+?)'/);
  969.    
  970.     if (!newPageUrl) {
  971.         retVal.imgUrl = null;
  972.         retVal.status = "ABORT";
  973.         }
  974.     else {
  975.         retVal.imgUrl = newPageUrl[1];
  976.         retVal.status = "REQUEUE";
  977.         }
  978.     return retVal;
  979.     }]]></searchpattern>
  980. </host>
  981.  
  982. <host id="celebfreak">
  983. <urlpattern>^http:\/\/(?:www\.)?celebfreak\.com\/(?:show|view)\.php\/.+\.html$</urlpattern>
  984. <searchpattern>"id=img_obj"</searchpattern>
  985. </host>
  986.  
  987. <host id="celebies">
  988. <urlpattern>^http:\/\/(?:www\.)?celebies\.com\/picture\/\d+\/.+</urlpattern>
  989. <searchpattern><![CDATA[function(pageData, pageUrl) {
  990.     var retVal = new Object();
  991.    
  992.     if (!pageUrl.match(/\/large$/)) {
  993.             retVal.imgUrl = pageUrl + "/large";
  994.             retVal.status = "REQUEUE";
  995.             return retVal;
  996.         }
  997.  
  998.     var iUrl = pageData.match(/id="picture-big"><img src="(.+?)"/);
  999.  
  1000.     if (!iUrl) {
  1001.         retVal.imgUrl = null;
  1002.         retVal.status = "ABORT";
  1003.         }
  1004.     else {
  1005.         retVal.imgUrl = iUrl[1];
  1006.         retVal.status = "OK";
  1007.         }
  1008.  
  1009.     return retVal;
  1010.     }]]></searchpattern>
  1011. </host>
  1012.  
  1013. <host id="celebrities-pictures">
  1014. <urlpattern>^http:\/\/www\.celebrities-pictures\.com\/photo\/.+\.jpg\.html</urlpattern>
  1015. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1016.     var retVal = new Object();
  1017.    
  1018.     var iUrl = pageData.match(/http:\/\/all-pictures\.pixcatcher\.com\/download\/\?url=(.+\.jpg)/);
  1019.  
  1020.     if (!iUrl) {
  1021.         retVal.imgUrl = null;
  1022.         retVal.status = "ABORT";
  1023.         }
  1024.     else {
  1025.         retVal.imgUrl = iUrl[1];
  1026.         retVal.status = "OK";
  1027.         }
  1028.  
  1029.     return retVal;
  1030.     }]]></searchpattern>
  1031. </host>
  1032.  
  1033. <host id="celebrity-blog">
  1034. <urlpattern>^http:\/\/(?:www\.)?celebrity-blog\.org\/.*\?v=</urlpattern>
  1035. <searchpattern>"ID: full_image"</searchpattern>
  1036. </host>
  1037.  
  1038. <host id="celebrity-pictures.ca">
  1039. <urlpattern>^http:\/\/(?:www\.)?celebrity-pictures\.ca\/viewpicture\/\?id=\d+</urlpattern>
  1040. <searchpattern>"img border=0 src="</searchpattern>
  1041. </host>
  1042.  
  1043. <host id="celebritypicsblog">
  1044. <urlpattern>http:\/\/celebritypicsblog\.com\/viewer\.php\?id=+.</urlpattern>
  1045. <searchpattern>"REPLACE: 'viewer\\.php\\?id=(.+)','images/$1'"</searchpattern>
  1046. </host>
  1047.  
  1048. <host id="celebritypictures">
  1049. <urlpattern>^http:\/\/www\.celebritypictures\.com\/celebs\/.+\.jpg</urlpattern>
  1050. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1051.     var retVal = new Object();
  1052.  
  1053.     retVal.imgUrl = pageUrl;
  1054.     retVal.status = "OK";
  1055.    
  1056.     return retVal;
  1057.     }]]></searchpattern>
  1058. </host>
  1059.  
  1060. <host id="celebs101">
  1061. <urlpattern>http:\/\/www\.celebs101\.com\/image-\d+--\d+--.+\.html</urlpattern>
  1062. <searchpattern>"ID: imgspace"</searchpattern>
  1063. </host>
  1064.  
  1065. <host id="celebscentral">
  1066. <urlpattern>^http:\/\/\w+\.celebscentral\.net\/photo\/</urlpattern>
  1067. <searchpattern>"ID: thepic"</searchpattern>
  1068. </host>
  1069.  
  1070. <host id="celebsmart">
  1071. <urlpattern>http:\/\/celebsmart\.com\/share-.+</urlpattern>
  1072. <searchpattern>"ID: iimg"</searchpattern>
  1073. </host>
  1074.  
  1075. <host id="celebspix">
  1076. <urlpattern>^http:\/\/celebspix\.ru\/\d{4}\/\d{2}\/\d{2}\/(?:[^/]+\/){2}$</urlpattern>
  1077. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1078.     var retVal = {imgUrl: null, status: "ABORT"};
  1079.  
  1080.     var iUrl = pageData.match(/href=("|')(.+?)\1[^>]+?rel="attachment">/);
  1081.    
  1082.     if (iUrl) {
  1083.         retVal.imgUrl = iUrl[2];
  1084.         retVal.status = "OK";
  1085.         }
  1086.  
  1087.     return retVal;
  1088.     }]]></searchpattern>
  1089. </host>
  1090.  
  1091. <host id="celebsxtreme">
  1092. <urlpattern>^http:\/\/(?:www\.)?celebsxtreme\.com\/wp-content\/uploads\/\d+\/\d+\/.+</urlpattern>
  1093. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1094.     var retVal = new Object();
  1095.  
  1096.     retVal.imgUrl = pageUrl;
  1097.     retVal.status = "OK";
  1098.    
  1099.     return retVal;
  1100.     }]]></searchpattern>
  1101. </host>
  1102.  
  1103. <host id="celebuzz">
  1104. <urlpattern>http:\/\/celebslam\.celebuzz\.com\/\d+\/\d+\/.+\.php\?bfm_index=</urlpattern>
  1105. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1106.     var retVal = new Object();
  1107.  
  1108.     var tmp = pageUrl.match(/bfm_index=(\d+)/)
  1109.     if (tmp) bfm_index = tmp[1];
  1110.  
  1111.     var iUrl = pageData.match(/http:\/\/celebslam\.celebuzz\.com\/\/.+\/\d+\/\d+\/.+\/gallery_main\/gallery_main.+\.jpg/g);
  1112.    
  1113.     if (!iUrl) {
  1114.         retVal.imgUrl = null;
  1115.         retVal.status = "ABORT";
  1116.         }
  1117.     else {
  1118.         retVal.imgUrl = iUrl[bfm_index].toString().replace(/gallery_main/gi, "gallery_enlarged");
  1119.         retVal.status = "OK";
  1120.         }
  1121.     return retVal;
  1122.     }]]></searchpattern>
  1123. </host>
  1124.  
  1125. <host id="celebz.to">
  1126. <urlpattern>http:\/\/celebz\.to\/.+\/.+-www-celebz-to-\d+</urlpattern>
  1127. <searchpattern>"http:\\/\\/celebz\\.to\\/wp-content\\/uploads\\/\\d+\\/\\d+\\/.+"</searchpattern>
  1128. </host>
  1129.  
  1130. <host id="cfake">
  1131. <urlpattern>^http:\/\/cfake\.com\/photos\/.+</urlpattern>
  1132. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1133.     var retVal = new Object();
  1134.  
  1135.     retVal.imgUrl = pageUrl;
  1136.     retVal.status = "OK";
  1137.  
  1138.     return retVal;
  1139.     }]]></searchpattern>
  1140. </host>
  1141.  
  1142. <host id="chaosimg">
  1143. <urlpattern>^https?:\/\/www\.chaosimg\.site\/site\/v\/</urlpattern>
  1144. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1145.     var rUrl = pageData.match(/redirect_url="(.+?)"/);
  1146.     return {imgUrl: rUrl[1], status: "REQUEUE"};
  1147. }]]></searchpattern>
  1148. </host>
  1149.  
  1150. <host id="chickupload" maxThreads="1">
  1151. <urlpattern>^http:\/\/chickupload\.com\/showpicture\/.+\/.+\/.+</urlpattern>
  1152. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1153.     // chickupload keeps track of the number of connections you are making to it.  If
  1154.     // it senses that you are making an unreasonable amount of simultaneous connections,
  1155.     // it will block your connections from the actual image.
  1156.     //
  1157.     // For "ImageHost Grabber", the implementation is to change the number of simultaneous
  1158.     // downloads to 1 by modifying the global variable "maxThreads"
  1159.     if (ihg_Globals.appName == "ImageHost Grabber") ihg_Globals.maxThreads = 1;
  1160.  
  1161.     var theId = "full";
  1162.  
  1163.     var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  1164.     var tmpMatch = pageData.match(searchPat);
  1165.     if (tmpMatch) {
  1166.         tmpMatch = tmpMatch[0];
  1167.         var the_url = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  1168.         if (the_url) the_url = the_url[2];
  1169.         }
  1170.    
  1171.  
  1172.     // retVal.imgUrl is the string representation to the url of the target image
  1173.     // retVal.status is a string representation of the status.  Acceptable values
  1174.     // for status are: OK, ABORT, RETRY, REQUEUE
  1175.     //
  1176.     // You may add other members to retVal for use with your program if need be.
  1177.     // However, imgUrl and status should always be present for the sake of compatibility.
  1178.     var retVal = new Object();
  1179.  
  1180.     if(!the_url) {
  1181.         retVal.imgUrl = null;
  1182.         retVal.status = "ABORT";
  1183.         }
  1184.     else {
  1185.         retVal.imgUrl = the_url;
  1186.         retVal.status = "OK";
  1187.         }
  1188.  
  1189.     // If it can find the original file name, it will use that instead.
  1190.     // otherwise, it picks a random file name
  1191.     //try {
  1192.     //  retVal.fileName = pageData.match(/&raquo; <a href="\/gallery\/.+?\/.+?\/.+?">\w*<\/a> &raquo; (.+\.\w+)\s\(views: \w*\)/)[1];
  1193.     //  }
  1194.     //catch(e) {
  1195.     //  retVal.fileName = Math.random().toString().substring(2) + ".jpg";
  1196.     //  }
  1197.  
  1198.     return retVal;
  1199.     }]]></searchpattern>
  1200. </host>
  1201.  
  1202. <host id="china-girl.info">
  1203. <urlpattern>^http:\/\/(?:www\.)?china-girl\.info\/view_china_girls\.aspx\?url=.+</urlpattern>
  1204. <searchpattern>"id="img""</searchpattern>
  1205. </host>
  1206.  
  1207. <host id="chronos">
  1208. <urlpattern>^http:\/\/chronos\.to\/.+$</urlpattern>
  1209. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1210.     var PostData = pageData.match(/(?=<Form\b)((.|\r|\n)+?)<\/Form>/)[1].match(/<input.+?\/?>/g);
  1211.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');   
  1212.    
  1213.     var req = new XMLHttpRequest();
  1214.     req.open("POST", pageUrl, false);
  1215.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  1216.     req.send(PostData);
  1217.  
  1218.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  1219.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  1220. }]]></searchpattern>
  1221. </host>
  1222.  
  1223. <host id="chubbyparade">
  1224. <urlpattern>^http:\/\/(?:www\.)?chubbyparade\.com\/forum\/attachment\.php\?attachmentid=\d+</urlpattern>
  1225. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1226.     var retVal = new Object();
  1227.  
  1228.     retVal.imgUrl = pageUrl;
  1229.     retVal.status = "OK";
  1230.    
  1231.     return retVal;
  1232.     }]]></searchpattern>
  1233. </host>
  1234.  
  1235. <host id="cineforest">
  1236. <urlpattern>^http:\/\/www\.cineforest\.com\/Image\/</urlpattern>
  1237. <searchpattern>"ID: ctl00_ContentPlaceHolder1_Image1"</searchpattern>
  1238. </host>
  1239.  
  1240. <host id="cinespicy">
  1241. <urlpattern>^http:\/\/cinespicy\.com/\d+\/.+\/\?pid=\d+</urlpattern>
  1242. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1243.     var retVal = {imgUrl: null, status: "ABORT"};
  1244.    
  1245.     var iUrl = pageData.match(/src="(http:\/\/cinespicy\.com\/wp-content\/gallery\/[^"]+)"/);
  1246.     if (iUrl) {
  1247.         retVal.imgUrl = iUrl[1];
  1248.         retVal.status = "OK";
  1249.     }
  1250.  
  1251.     return retVal;
  1252. }]]></searchpattern>
  1253. </host>
  1254.  
  1255. <host id="cityrag">
  1256. <urlpattern>^http:\/\/cityrag\.com\/\d+\/\d+\/.+\/.+\/</urlpattern>
  1257. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1258.     var retVal = new Object();
  1259.    
  1260.     var iUrl = pageData.match(/<p class="attachment"(?:.|\s)+?href="(.+?)"/);
  1261.    
  1262.     if (!iUrl) {
  1263.         retVal.imgUrl = null;
  1264.         retVal.status = "ABORT";
  1265.         }
  1266.     else {
  1267.         retVal.imgUrl = iUrl[1];
  1268.         retVal.status = "OK";
  1269.         }
  1270.  
  1271.     return retVal;
  1272.     }]]></searchpattern>
  1273. </host>
  1274.  
  1275. <host id="clb1">
  1276. <urlpattern>^http:\/\/.+\.clb1\.com\/\?s=.+</urlpattern>
  1277. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1278.     var retVal = new Object();
  1279.  
  1280.     var theId = "redirectframe";
  1281.     var someMatch = new RegExp("<iframe.+?id=('|\")" + theId + "\\1.+?>");
  1282.     var frameElem = pageData.match(someMatch);
  1283.  
  1284.     if (frameElem) {
  1285.         var srcMatch = frameElem.toString().match(/src=("|')(.+?)\1/);
  1286.         if (srcMatch) var newPageUrl = srcMatch[2];
  1287.         }
  1288.        
  1289.     if (!newPageUrl) {
  1290.         retVal.status = "ABORT";
  1291.         retVal.imgUrl = null;
  1292.         }
  1293.     else {
  1294.         retVal.status = "REQUEUE";
  1295.         retVal.imgUrl = newPageUrl;
  1296.         }
  1297.     return retVal;
  1298.     }]]></searchpattern>
  1299. </host>
  1300.  
  1301. <host id="clgalleries">
  1302. <urlpattern>^http:\/\/.*clgalleries\.net\/image\.php\?</urlpattern>
  1303. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1304.     var retVal = new Object();
  1305.  
  1306.     var newPageUrl = pageData.match(/linkDestUrl = '(.+?)'/);
  1307.    
  1308.     if (!newPageUrl) {
  1309.         retVal.imgUrl = null;
  1310.         retVal.status = "ABORT";
  1311.         }
  1312.     else {
  1313.         retVal.imgUrl = newPageUrl[1];
  1314.         retVal.status = "REQUEUE";
  1315.         }
  1316.     return retVal;
  1317.     }]]></searchpattern>
  1318. </host>
  1319.  
  1320. <host id="closepics">
  1321. <urlpattern>^http:\/\/www\.closepics\.com\/photo\.php\?img=.+</urlpattern>
  1322. <searchpattern>"media\/galleries\/"</searchpattern>
  1323. </host>
  1324.  
  1325. <host id="cocoimage">
  1326. <urlpattern>^http:\/\/img\d+\.cocoimage\.com\/img\.php\?id=</urlpattern>
  1327. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1328.     var retVal = new Object();
  1329.     var sPattern = pageData.match(/window.location="(.+)"/);   
  1330.  
  1331.     if (!sPattern) {
  1332.         var sPattern2 = pageData.match(/http:\/\/img\d+\.cocoimage\.com\/showimg\.php\?id=\d+&v=\d+&ext=jpg/);
  1333.  
  1334.         if(!sPattern2) {
  1335.             retVal.imgUrl = null;
  1336.             retVal.status = "ABORT";
  1337.             }
  1338.         else {
  1339.             retVal.imgUrl = sPattern2[0] + "&dt=1";
  1340.             retVal.status = "OK";
  1341.            
  1342.             try {
  1343.                 retVal.fileName = sPattern2[0].match(/id=(\d+)/)[1] + ".jpg";
  1344.                 }
  1345.             catch(e) {
  1346.                 retVal.fileName = Math.random().toString().substring(2) + ".jpg";
  1347.                 }
  1348.             }  
  1349.         }
  1350.     else {
  1351.         retVal.imgUrl = sPattern[1];
  1352.         retVal.status = "REQUEUE";
  1353.         }
  1354.    
  1355.     return retVal;
  1356.     }]]></searchpattern>
  1357. </host>
  1358.  
  1359. <host id="coedmagazine">
  1360. <urlpattern>^http:\/\/coedmagazine\.com\/\d+\/\d+\/\d+\/.+\/[^#]+\/$</urlpattern>
  1361. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1362.     var retVal = new Object();
  1363.    
  1364.     var iUrl = pageData.match(/<img src='(.+?)'/);
  1365.  
  1366.     if (!iUrl) {
  1367.         retVal.imgUrl = null;
  1368.         retVal.status = "ABORT";
  1369.         }
  1370.     else {
  1371.         retVal.imgUrl = iUrl[1];
  1372.         retVal.status = "OK";
  1373.         }
  1374.  
  1375.     return retVal;
  1376.     }]]></searchpattern>
  1377. </host>
  1378.  
  1379. <host id="coldline">
  1380. <urlpattern>^http:\/\/(?:[^/]+\.)?coldline\.hu\/.+\..{3,4}$</urlpattern>
  1381. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1382.     return {imgUrl: pageUrl, status: "OK"};
  1383.     }]]></searchpattern>
  1384. </host>
  1385.  
  1386. <host id="comicalpic">
  1387. <urlpattern>^http:\/\/(?:www\.)?comicalpic\.net\/img-</urlpattern>
  1388. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  1389. </host>
  1390.  
  1391. <host id="comicartfans">
  1392. <urlpattern>^http:\/\/(?:www\.)comicartfans\.com\/GalleryPiece\.asp\?[^#]+$</urlpattern>
  1393. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1394.     var retVal = {};
  1395.    
  1396.     var iUrl = pageData.match(/<img src="(http:\/\/cdn\.comicartfans\.com\/Images\/[^"]+?)"/);
  1397.  
  1398.     if (!iUrl) {
  1399.         retVal.imgUrl = null;
  1400.         retVal.status = "ABORT";
  1401.         }
  1402.     else {
  1403.         retVal.imgUrl = iUrl[1];
  1404.         retVal.status = "OK";
  1405.         }
  1406.  
  1407.     return retVal;
  1408.     }]]></searchpattern>
  1409. </host>
  1410.  
  1411. <host id="comicstriparchive">
  1412. <urlpattern>^http:\/\/www\.chron\.com\/apps\/comics\/showComick\.mpl\?</urlpattern>
  1413. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1414.     var retVal = new Object();
  1415.    
  1416.     var iUrl = pageData.match(/img src="(.+?)"><br \/>About/);
  1417.  
  1418.     if (!iUrl) {
  1419.         retVal.imgUrl = null;
  1420.         retVal.status = "ABORT";
  1421.         }
  1422.     else {
  1423.         retVal.imgUrl = iUrl[1];
  1424.         retVal.status = "OK";
  1425.         }
  1426.  
  1427.     return retVal;
  1428.     }]]></searchpattern>
  1429. </host>
  1430.  
  1431. <host id="comicvine">
  1432. <urlpattern>^http:\/\/www\.comicvine\.com\/.+\/.+\/.+\/.+\/.+\/[\d-]+\/$</urlpattern>
  1433. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1434.     var retVal = new Object();
  1435.    
  1436.     var iUrl = pageData.match(/id="js-zoom-image" image_url="(.+?)"/);
  1437.     if (!iUrl) pageData.match(/id="js-main-image-img" src="(.+?)"/);
  1438.  
  1439.     if (!iUrl) {
  1440.         retVal.imgUrl = null;
  1441.         retVal.status = "ABORT";
  1442.         }
  1443.     else {
  1444.         retVal.imgUrl = iUrl[1];
  1445.         retVal.status = "OK";
  1446.         }
  1447.  
  1448.     return retVal;
  1449.     }]]></searchpattern>
  1450. </host>
  1451.  
  1452. <host id="comunityforum">
  1453. <urlpattern>^http:\/\/comunityforum\.org\/share.+</urlpattern>
  1454. <searchpattern>"ID: iimg"</searchpattern>
  1455. </host>
  1456.  
  1457. <host id="coolios">
  1458. <urlpattern>^http:\/\/(www\.)?galleries\.coolios\.net\/.+\/.+\/\?p=\d+&amp;fg=\d+</urlpattern>
  1459. <searchpattern>"ID: detailpic"</searchpattern>
  1460. </host>
  1461.  
  1462. <host id="coppermine2">
  1463. <urlpattern>^https?:\/\/(?:www\.)?.+?\/(\w+\/)?displayimage\.php\?album=</urlpattern>
  1464. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1465.     var hUrl = pageUrl.match(/https?:\/\/(?:www\.)?.+?\/(?:\w+\/)?/);
  1466.     var iUrl = pageData.match(/src="(albums\/[^\"]+)normal_([^\"]+)"/);
  1467.     if (!iUrl) iUrl = pageData.match(/src="(albums\/[^\"]+)([^\"]+)"/);
  1468.     return iUrl ? {imgUrl: hUrl + iUrl[1] + iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  1469. }]]></searchpattern>
  1470. </host>
  1471.  
  1472. <host id="coppermine_gallery">
  1473. <urlpattern>^http:\/\/.+\/displayimage((\.php\?album=\w+&amp;(cat=\d+&amp;)?(pos|pid)=\d+(&amp;uid=\d+)?)|(-\d+-\d+\.html))($|#)</urlpattern>
  1474. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1475.     var retVal = new Object();
  1476.  
  1477.     var site = pageUrl.match(/(http:\/\/.+?\/)displayimage/);
  1478.     var iUrl = pageData.match(/MM_openBrWindow\('(display.+?)'/);
  1479.    
  1480.     if (!iUrl) {
  1481.         iUrl = pageData.match(/<img src="([^>]+?)"[^>]+?class="image"/);
  1482.        
  1483.         if (!iUrl) {
  1484.             retVal.imgUrl = null;
  1485.             retVal.status = "ABORT";
  1486.             }
  1487.         else {
  1488.             retVal.imgUrl = iUrl[1];
  1489.             retVal.status = "OK";
  1490.             }
  1491.         }
  1492.     else {
  1493.         retVal.imgUrl = site[1] + iUrl[1].replace(/&amp;/g, "&");
  1494.         retVal.status = "REQUEUE";
  1495.         }
  1496.    
  1497.     return retVal;
  1498.     }]]></searchpattern>
  1499. </host>
  1500.  
  1501. <host id="coppermine_gallery2">
  1502. <urlpattern>^http:\/\/.+\/displayimage(?:\.php\?pid=\d+|-\d+\.html)&amp;fullsize=1</urlpattern>
  1503. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1504.     var retVal = new Object();
  1505.  
  1506.     var iUrl = pageData.match(/img src="(.+?)"/);
  1507.  
  1508.     if (!iUrl) {
  1509.         retVal.imgUrl = null;
  1510.         retVal.status = "ABORT";
  1511.         }
  1512.     else {
  1513.         retVal.imgUrl = iUrl[1];
  1514.         retVal.status = "OK";
  1515.         }
  1516.    
  1517.     return retVal;
  1518.     }]]></searchpattern>
  1519. </host>
  1520.  
  1521. <host id="coreimg">
  1522. <urlpattern>^http:\/\/coreimg\.net\/.+$</urlpattern>
  1523. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1524.     var PostData = pageData.match(/(?=<Form\b)((.|\r|\n)+?)<\/Form>/)[1].match(/<input.+?\/?>/g);
  1525.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  1526.  
  1527.     var req = new XMLHttpRequest();
  1528.     req.open("POST", pageUrl, false);
  1529.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  1530.     req.send(PostData);
  1531.    
  1532.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  1533.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  1534. }]]></searchpattern>
  1535. </host>
  1536.  
  1537. <host id="critdick">
  1538. <urlpattern>^http:\/\/critdick\.com\/wp-content\/uploads\/\d+\/\d+\/.+</urlpattern>
  1539. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1540.     var retVal = new Object();
  1541.    
  1542.     retVal.imgUrl = pageUrl;
  1543.     retVal.status = "OK";
  1544.    
  1545.     return retVal;
  1546.     }]]></searchpattern>
  1547. </host>
  1548.  
  1549. <host id="crocogirls">
  1550. <urlpattern>^http:\/\/.+\.crocogirls\.com\/.+\/\d+\.html</urlpattern>
  1551. <searchpattern>"REPLACE: 'html', 'jpg'"</searchpattern>
  1552. </host>
  1553.  
  1554. <host id="cuteimg">
  1555. <urlpattern>^http:\/\/cuteimg\.cc\/([^/\.]+)$</urlpattern>
  1556. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1557.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)$/);
  1558.     var req = new XMLHttpRequest();
  1559.     req.open("POST", pageUrl, false);
  1560.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  1561.     req.send("op=view&amp;id="+id[1]+"&amp;pre=2&amp;next=Continue to image.");
  1562.     var iUrl = (req.responseText).match(/img src=\"(.+?)\" class=\"pic\" alt=\"(.+?)\"/i);
  1563.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  1564. }]]></searchpattern>
  1565. </host>
  1566.  
  1567. <host id="cutepic">
  1568. <urlpattern>http:\/\/cutepic\.net\/viewer\.php\?file=.+</urlpattern>
  1569. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  1570. </host>
  1571.  
  1572. <host id="cybervice">
  1573. <urlpattern>^http:\/\/www\.cybervice\.com\/files\/view</urlpattern>
  1574. <searchpattern>"http:\\/\\/www\\.cybervice\\.com\\/files\\/+?\\d\\/\\."</searchpattern>
  1575. </host>
  1576.  
  1577. <host id="dailyniner">
  1578. <urlpattern>^http:\/\/(?:www\.)?dailyniner\.com\/\?page=gallery&amp;image_size=.+</urlpattern>
  1579. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1580.     var retVal = new Object();
  1581.    
  1582.     var medium = pageUrl.match(/^http:\/\/(?:www\.)?dailyniner\.com\/\?page=gallery&image_size=medium/);
  1583.     if (medium) {
  1584.         retVal.imgUrl = pageUrl.replace(/(image_size=)medium/, "$1large");
  1585.         retVal.status = "REQUEUE";
  1586.         return retVal;
  1587.         }
  1588.    
  1589.     var iUrl = pageData.match(/src="(\/content\/\d+\/\d+\/\d+\/.+?)"/);
  1590.  
  1591.     if (!iUrl) {
  1592.         retVal.imgUrl = null;
  1593.         retVal.status = "ABORT";
  1594.         }
  1595.     else {
  1596.         retVal.imgUrl = iUrl[1];
  1597.         retVal.status = "OK";
  1598.         }
  1599.  
  1600.     return retVal;
  1601.     }]]></searchpattern>
  1602. </host>
  1603.  
  1604. <host id="dailypoa">
  1605. <urlpattern>^http:\/\/www\.dailypoa\.com\/imageview\.php\?image=</urlpattern>
  1606. <searchpattern>"REPLACE: 'imageview\\.php\\?image=(.+\\.jpg)' , 'images/$1'"</searchpattern>
  1607. </host>
  1608.  
  1609. <host id="dailypoa2">
  1610. <urlpattern>^http:\/\/(?:www\.)?dailypoa\.com\/dpi\/share-.+\.html$</urlpattern>
  1611. <searchpattern>"REPLACE: 'share(-.+)\.html' , 'image$1.jpg'"</searchpattern>
  1612. </host>
  1613.  
  1614. <host id="damimage">
  1615. <urlpattern>^http:\/\/damimage\.com\/img-</urlpattern>
  1616. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  1617. </host>
  1618.  
  1619. <host id="danbooru.donmai">
  1620. <urlpattern>^http:\/\/danbooru\.donmai\.us\/post\/show\/.+</urlpattern>
  1621. <searchpattern>"ID: image"</searchpattern>
  1622. </host>
  1623.  
  1624. <host id="datorrents">
  1625. <urlpattern>^http:\/\/(?:www\.)?datorrents\.com\/gallery\/showimage\.php\?i=\d+</urlpattern>
  1626. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1627.     var retVal = new Object();
  1628.    
  1629.     var iUrl = pageData.match(/Direct Link Code.+?<input[^>]+value="(.+?)"/);
  1630.  
  1631.     if (!iUrl) {
  1632.         retVal.imgUrl = null;
  1633.         retVal.status = "ABORT";
  1634.         }
  1635.     else {
  1636.         retVal.imgUrl = iUrl[1];
  1637.         retVal.status = "OK";
  1638.         }
  1639.  
  1640.     return retVal;
  1641.     }]]></searchpattern>
  1642. </host>
  1643.  
  1644. <host id="depic.me">
  1645. <urlpattern>^http:\/\/depic\.me\/.+</urlpattern>
  1646. <searchpattern>"ID: pic"</searchpattern>
  1647. </host>
  1648.  
  1649. <host id="desiupload">
  1650. <urlpattern>^http:\/\/www\.desiupload\.com\/show\.php\/</urlpattern>
  1651. <searchpattern>"ID: img_obj"</searchpattern>
  1652. </host>
  1653.  
  1654. <host id="deskcity">
  1655. <urlpattern>^http:\/\/www\.deskcity\.com\/details\/show\/\d+\/\d+</urlpattern>
  1656. <searchpattern>"ID: s_img"</searchpattern>
  1657. </host>
  1658.  
  1659. <host id="deviantart">
  1660. <urlpattern>^http:\/\/.+\.deviantart\.com\/art\/.+</urlpattern>
  1661. <searchpattern>"ID: gmi-ResViewSizer_fullimg"</searchpattern>
  1662. </host>
  1663.  
  1664. <host id="digitalplayground">
  1665. <urlpattern>^http:\/\/(?:www\.)?digitalplayground\.com\/.+\/index\.php\?.+pic=.+</urlpattern>
  1666. <searchpattern>"photos\/images\/.+"</searchpattern>
  1667. </host>
  1668.  
  1669. <host id="dimtus">
  1670. <urlpattern>http:\/\/dimtus\.com\/img-.+?\.html$</urlpattern>
  1671. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  1672. </host>
  1673.  
  1674. <host id="dippic">
  1675. <urlpattern>^http:\/\/(?:www\.)?dippic\.com\/\w+(?:\/.+\..{3,4}\.html)?$</urlpattern>
  1676. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1677.     var retVal = {};
  1678.    
  1679.     var imgtag = pageData.match(/<img[^<]+class="my_img"[^>]+>/);
  1680.    
  1681.     if (!imgtag) {
  1682.         retVal.imgUrl = null;
  1683.         retVal.status = "ABORT";
  1684.         }
  1685.     else {
  1686.         imgtag = imgtag[0];
  1687.         retVal.imgUrl = imgtag.match(/src="(.+?)"/)[1];
  1688.         retVal.fileName = imgtag.match(/alt="(.+?)"/)[1];
  1689.         retVal.status = "OK";
  1690.         }
  1691.    
  1692.     return retVal;
  1693.     }]]></searchpattern>
  1694. </host>
  1695.  
  1696. <host id="directupload">
  1697. <urlpattern>^http:\/\/s\d+\.directupload\.net\/file\/.+\/\d+\/.+\.htm</urlpattern>
  1698. <searchpattern>"ID: Bild"</searchpattern>
  1699. </host>
  1700.  
  1701. <host id="dirtstyle">
  1702. <urlpattern>^https?:\/\/(?:www\.)?dirtstyle\.tv\/item\/photos\/.+?$</urlpattern>
  1703. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1704.     var iUrl = pageData.match(/img src="(https?:\/\/uranus\..+?)"/);   
  1705.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  1706. }]]></searchpattern>
  1707. </host>
  1708.  
  1709. <host id="dirtynakedpics">
  1710. <urlpattern>^http:\/\/(?:www\.)?dirtynakedpics\.com\/galleries\/.+?$</urlpattern>
  1711. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1712.     var hUrl = pageUrl.substr(0,pageUrl.indexOf('/',pageUrl.indexOf('.')));
  1713.     var iUrl = pageData.match(/src="(galleries\/.+?)"/);
  1714.     return iUrl ? {imgUrl: hUrl + "/" + iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  1715. }]]></searchpattern>
  1716. </host>
  1717.  
  1718. <host id="dirtyrottenwhore">
  1719. <urlpattern>^http:\/\/(?:www\.)?dirtyrottenwhore\.com\/.+\/.+\/.+\/.+</urlpattern>
  1720. <searchpattern>"REPLACE: '(http:\\/\\/(?:www\\.)?dirtyrottenwhore\\.com)\\/(.+)\\/(.+)\\/(.+)\\/(.+)\\/(.+)\\.php','$1/$2/$3/$4/$5/$6.jpg'"</searchpattern>
  1721. </host>
  1722.  
  1723. <host id="dirtyyoungbitches">
  1724. <urlpattern>^http:\/\/(?:www\.)?dirtyyoungbitches\.com\/.+\.html</urlpattern>
  1725. <searchpattern>"http:\/\/[^\/]+\/.+\/\d+\/\d{2}\..{3,4}"</searchpattern>
  1726. </host>
  1727.  
  1728. <host id="divshare">
  1729. <urlpattern>^http:\/\/www\.divshare\.com\/download\/</urlpattern>
  1730. <searchpattern>"http:\\/\\/www\\.divshare\\.com\\/uploads\\/files"</searchpattern>
  1731. </host>
  1732.  
  1733. <host id="djmick">
  1734. <urlpattern>^http:\/\/www\.djmick\.co\.uk\/.+\/.+\/.+\..{3,4}$</urlpattern>
  1735. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1736.     return {imgUrl: pageUrl, status: "OK"};
  1737.     }]]></searchpattern>
  1738. </host>
  1739.  
  1740. <host id="dkbn">
  1741. <urlpattern>^http:\/\/media\.dkbn\.dk\/Storage\/Discos\/.*</urlpattern>
  1742. <searchpattern>"REPLACE: '\\/thumb\\/','/dkbn/'"</searchpattern>
  1743. </host>
  1744.  
  1745. <host id="dorkpic">
  1746. <urlpattern>^http:\/\/www\.dorkpic\.com\/adult\/viewer\.php\?file=.+</urlpattern>
  1747. <searchpattern>"images\\/(.+). alt=.\\1"</searchpattern>
  1748. </host>
  1749.  
  1750. <host id="doujinland">
  1751. <urlpattern>^http:\/\/(?:www\.)?doujinland\.com\/g\/\?level=picture&amp;id=\d+</urlpattern>
  1752. <searchpattern>"class="photos-large""</searchpattern>
  1753. </host>
  1754.  
  1755. <host id="doujinproject">
  1756. <urlpattern>^http:\/\/(?:www\.)?doujinproject\.com\/gallery\/.+\.html$</urlpattern>
  1757. <searchpattern>"img src="\/gallery\/.+\/.+\..{3,4}""</searchpattern>
  1758. </host>
  1759.  
  1760. <host id="doujinshi.me">
  1761. <urlpattern>^http:\/\/www\.doujinshi\.me\/image\.html\?doujin=.+&amp;page=\d+</urlpattern>
  1762. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1763.     var retVal = new Object();
  1764.    
  1765.     var iUrl = pageData.match(/href='(.+?)'>Display full resolution image/);
  1766.  
  1767.     if (!iUrl) {
  1768.         retVal.imgUrl = null;
  1769.         retVal.status = "ABORT";
  1770.         }
  1771.     else {
  1772.         retVal.imgUrl = iUrl[1];
  1773.         retVal.status = "OK";
  1774.         }
  1775.  
  1776.     return retVal;
  1777.     }]]></searchpattern>
  1778. </host>
  1779.  
  1780. <host id="dr9000">
  1781. <urlpattern>http:\/\/dr9000\.com\/.+</urlpattern>
  1782. <searchpattern>"REPLACE: 'share(.+)\\.html','image$1.jpg'"</searchpattern>
  1783. </host>
  1784.  
  1785. <host id="dragimage">
  1786. <urlpattern>^http:\/\/dragimage\.org\/img-[\da-f]+\.html$</urlpattern>
  1787. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  1788. </host>
  1789.  
  1790. <host id="dreamfakes">
  1791. <urlpattern>^http:\/\/(?:www\.)?dreamfakes\.com\/pichost\/viewer\.php\?file=</urlpattern>
  1792. <searchpattern>"REPLACE: 'viewer\.php\?file=(.+)' , 'images/$1'"</searchpattern>
  1793. </host>
  1794.  
  1795. <host id="drunkenstepfather">
  1796. <urlpattern>^http:\/\/(?:www\.)?drunkenstepfather\.com\/cms\/u\.php.+</urlpattern>
  1797. <searchpattern>"http:\\/\\/.+\\/cms\\/ul\\/.+\\.jpg"</searchpattern>
  1798. </host>
  1799.  
  1800. <host id="drunkenstepfather2">
  1801. <urlpattern>^http:\/\/(?:www\.)?drunkenstepfather\.com\/cms\/u\.php.+</urlpattern>
  1802. <searchpattern>"http:\\/\\/.+\\/cms\\/ul\\/.+\\.jpg"</searchpattern>
  1803. </host>
  1804.  
  1805. <host id="dumpanimage">
  1806. <urlpattern>^http:\/\/www\.dumpanimage\.com\/image\.php\?</urlpattern>
  1807. <searchpattern>"Click to view more"</searchpattern>
  1808. </host>
  1809.  
  1810. <host id="dumparump">
  1811. <urlpattern>^http:\/\/www\.dumparump\.com\/view\.php\?</urlpattern>
  1812. <searchpattern>"Hosted by dumpArump\.com"</searchpattern>
  1813. </host>
  1814.  
  1815. <host id="dumpixxx">
  1816. <urlpattern>^http:\/\/(?:www\.)?dumpixxx\.com\/(?:view|show)\.php\/</urlpattern>
  1817. <searchpattern>"ID: img_obj"</searchpattern>
  1818. </host>
  1819.  
  1820. <host id="dumppix">
  1821. <urlpattern>^http:\/\/(?:www\.)?dumppix\.com\/(?:adult\/)?viewer\.php\?file=.+</urlpattern>
  1822. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  1823. </host>
  1824.  
  1825. <host id="duniaupload">
  1826. <urlpattern>^http:\/\/(?:www\.)?duniaupload\.com\/files\/\d+</urlpattern>
  1827. <searchpattern>"ID: duimg"</searchpattern>
  1828. </host>
  1829.  
  1830. <host id="e-hentai">
  1831. <urlpattern>^https?:\/\/e-hentai\.org\/s\/.+</urlpattern>
  1832. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1833.     var iUrl = pageData.match(/src="(https?:\/\/\d+.+?\.jpe?g)"/);
  1834.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  1835. }]]></searchpattern>
  1836. </host>
  1837.  
  1838. <host id="e621">
  1839. <urlpattern>^http:\/\/e621\.net\/post\/show\/.+</urlpattern>
  1840. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1841.     var retVal = new Object();
  1842.    
  1843.     var theId = "highres";
  1844.    
  1845.     var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  1846.     var tmpMatch = pageData.match(searchPat);
  1847.     if (tmpMatch) {
  1848.         tmpMatch = tmpMatch[0];
  1849.         var the_url = tmpMatch.match(/href(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  1850.         if (the_url) the_url = the_url[2];
  1851.         }
  1852.     else {
  1853.         theId = "image";
  1854.         searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  1855.         tmpMatch = pageData.match(searchPat);
  1856.         if (tmpMatch) {
  1857.             tmpMatch = tmpMatch[0];
  1858.             the_url = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  1859.             if (the_url) the_url = the_url[2];
  1860.             }else {
  1861.             theId = "movie";
  1862.             searchPat = new RegExp("<.+name(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  1863.             tmpMatch = pageData.match(searchPat);
  1864.             if (tmpMatch) {
  1865.                 tmpMatch = tmpMatch[0];
  1866.                 the_url = tmpMatch.match(/value(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  1867.                 if (the_url) the_url = the_url[2];
  1868.                 }
  1869.             }
  1870.         }
  1871.  
  1872.     if(!the_url) {
  1873.         retVal.imgUrl = null;
  1874.         retVal.status = "ABORT";
  1875.         }
  1876.     else {
  1877.         retVal.imgUrl = the_url;
  1878.         retVal.status = "OK";
  1879.         }
  1880.  
  1881.     return retVal;
  1882.     }]]></searchpattern>
  1883. </host>
  1884.  
  1885. <host id="easypichosting">
  1886. <urlpattern>^http:\/\/www\.easypichosting\.com\/show\.php\/.+\.html</urlpattern>
  1887. <searchpattern>"ID: img_obj"</searchpattern>
  1888. </host>
  1889.  
  1890. <host id="echo">
  1891. <urlpattern>^http:\/\/img\d+\.echo\.cx\/my\.php\?image=</urlpattern>
  1892. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1893.     var retVal = new Object();
  1894.  
  1895.     retVal.imgUrl = pageUrl.replace(/echo\.cx/, "imageshack.us");
  1896.     retVal.status = "REQUEUE";
  1897.  
  1898.     return retVal;
  1899.     }]]></searchpattern>
  1900. </host>
  1901.  
  1902. <host id="egotastic">
  1903. <urlpattern>^http:\/\/(?:www\.)?egotastic\.com\/\d+\/\d+\/[^\/]+\/[^\/]+\/$</urlpattern>
  1904. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1905.     var retVal = new Object();
  1906.    
  1907.     var iUrl = pageData.match(/<a href="([^"]+)" class="view-orig"/);
  1908.  
  1909.     if (!iUrl) {
  1910.         retVal.imgUrl = null;
  1911.         retVal.status = "ABORT";
  1912.         }
  1913.     else {
  1914.         retVal.imgUrl = iUrl[1];
  1915.         retVal.status = "OK";
  1916.         }
  1917.  
  1918.     return retVal;
  1919.     }]]></searchpattern>
  1920. </host>
  1921.  
  1922. <host id="egotastic2">
  1923. <urlpattern>^http:\/\/(?:www\.)?egotastic\.com\/photos\/[^\/]+\/.+</urlpattern>
  1924. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1925.     var retVal = {imgUrl: null, status: "ABORT"};
  1926.    
  1927.     var iUrl = pageData.match(/<div class="entry-content-img(?:.|\n)+?<img[^>]+src="([^"]+)"/);
  1928.     if (!iUrl) iUrl = pageData.match(/<div class="slider_container(?:.|\n)+?<img[^>]+src="([^"]+)"/);
  1929.  
  1930.     if (iUrl) {
  1931.         if (pageUrl.match(/full-size\/?$/))
  1932.             //retVal.imgUrl = iUrl[1];
  1933.             retVal.imgUrl = iUrl[1].replace(/^(.+)-\d+x\d+(\..{3,4})$/, "$1$2");
  1934.         else
  1935.             retVal.imgUrl = iUrl[1].replace(/^(.+)-\d+x\d+(\..{3,4})$/, "$1$2");
  1936.         retVal.status = "OK";
  1937.     }
  1938.  
  1939.     return retVal;
  1940. }]]></searchpattern>
  1941. </host>
  1942.  
  1943. <host id="elbrollo">
  1944. <urlpattern>^http:\/\/(?:www\.)?elbrollo\.com\/index\.php\?app=core.+attach_id=</urlpattern>
  1945. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1946.     return {imgUrl: pageUrl, status: "OK"};
  1947.     }]]></searchpattern>
  1948. </host>
  1949.  
  1950. <host id="ericsony">
  1951. <urlpattern>^http:\/\/ericsony\.com\/img-[\da-f]+\.html$</urlpattern>
  1952. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  1953. </host>
  1954.  
  1955. <host id="erimge">
  1956. <urlpattern>^http:\/\/erimge\.com\/.+$</urlpattern>
  1957. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1958.     var req = new XMLHttpRequest();
  1959.     req.open("POST", pageUrl, false);
  1960.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  1961.     req.send("imgContinue=Continue+to+image+...+");
  1962.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  1963.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  1964. }]]></searchpattern>
  1965. </host>
  1966.  
  1967. <host id="erio">
  1968. <urlpattern>^http:\/\/erio\.ws\/\d+p</urlpattern>
  1969. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1970.     var retVal = new Object();
  1971.    
  1972.     var iUrl = pageData.match(/id='mainfoto'\ssrc='(.+?)'/);
  1973.     if (iUrl)
  1974.         iUrl = iUrl[1].replace(/(http:\/\/)m(\.erio\.ws.+\/)medium(\/.+)(\....)/gi, "$1f$2full$3_f$4");
  1975.  
  1976.     if (!iUrl) {
  1977.         retVal.imgUrl = null;
  1978.         retVal.status = "ABORT";
  1979.         }
  1980.     else {
  1981.         retVal.imgUrl = iUrl;
  1982.         retVal.status = "OK";
  1983.         }
  1984.  
  1985.     return retVal;
  1986.     }]]></searchpattern>
  1987. </host>
  1988.  
  1989. <host id="ero-lust">
  1990. <urlpattern>^http:\/\/www\.ero-lust\.com\/photos\/\d+\/.+photo\d+</urlpattern>
  1991. <searchpattern><![CDATA[function(pageData, pageUrl) {
  1992.     var iUrl = pageData.match(/img.+?src="(.+?)"/);
  1993.     var sFileName = iUrl[1].match(/\/(\d+\..+?)\//)[1];
  1994.     return iUrl ? {imgUrl: iUrl[1], fileName: sFileName, status: "OK"} : {imgUrl: null, status: "ABORT"}
  1995. }]]></searchpattern>
  1996. </host>
  1997.  
  1998. <host id="eroprofile">
  1999. <urlpattern>^http:\/\/www\.eroprofile\.com\/.+\/photos\/view\/</urlpattern>
  2000. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2001.     var retVal = new Object();
  2002.    
  2003.     var iUrl = pageData.match(/<div class="photo"><a href="(.+?)"/);
  2004.  
  2005.     if (!iUrl) {
  2006.         retVal.imgUrl = null;
  2007.         retVal.status = "ABORT";
  2008.         }
  2009.     else {
  2010.         retVal.imgUrl = iUrl[1];
  2011.         retVal.status = "OK";
  2012.         }
  2013.  
  2014.     return retVal;
  2015.     }]]></searchpattern>
  2016. </host>
  2017.  
  2018. <host id="eros-and-grace">
  2019. <urlpattern>^http:\/\/eros-and-grace\.net\/galleries\/.+\/.+\/.+-\d+\.html</urlpattern>
  2020. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2021.     var retVal = new Object();
  2022.  
  2023.     var iUrl = pageData.match(/(galleries\/.+\/.+\/.+\/.+-\d+\.jpg)/);
  2024.        
  2025.     if (!iUrl) {
  2026.         retVal.imgUrl = null;
  2027.         retVal.status = "ABORT";
  2028.         }
  2029.     else {
  2030.         retVal.imgUrl = "http://eros-and-grace.net/" + iUrl[1];
  2031.         retVal.status = "OK";
  2032.         }
  2033.  
  2034.     return retVal;
  2035.     }]]></searchpattern>
  2036. </host>
  2037.  
  2038. <host id="escapecollectibles">
  2039. <urlpattern>^https?:\/\/www\.escapecollectibles\.com\/[\w-\d]+signed[\w-\d]+\/</urlpattern>
  2040. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2041.     var iUrl = pageData.match(/property="og:image" content="(http:\/\/.+)\d+\.\d+(.+)"/);  
  2042.     return iUrl ? {imgUrl: iUrl[1]+".1280.1280"+iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2043. }]]></searchpattern>
  2044. </host>
  2045.  
  2046. <host id="ex.ua">
  2047. <urlpattern>^http:\/\/www\.ex\.ua\/get\/\d+$</urlpattern>
  2048. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2049.     var retVal = new Object();
  2050.    
  2051.     retVal.imgUrl = pageUrl;
  2052.     retVal.status = "OK";
  2053.  
  2054.     return retVal;
  2055.     }]]></searchpattern>
  2056. </host>
  2057.  
  2058. <host id="exgirlfriendmarket">
  2059. <urlpattern>^http:\/\/(?:www\.)?exgirlfriendmarket\.com\/.+\.html</urlpattern>
  2060. <searchpattern>"http:\/\/[^\/]+\/.+\/\d+\/\d{2}\..{3,4}"</searchpattern>
  2061. </host>
  2062.  
  2063. <host id="exhentai" maxThreads="1">
  2064. <urlpattern>^http:\/\/exhentai\.org\/s\/.+</urlpattern>
  2065. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2066.     if (ihg_Globals.appName == "ImageHost Grabber") ihg_Globals.maxThreads = 1;
  2067.  
  2068.     var retVal = new Object();
  2069.  
  2070.     if (pageUrl.match(/nl=1$/)) {
  2071.         var iUrl = pageData.match(/img src="(http:\/\/\d+\.\d+\.\d+\.\d+(:\d+)?\/h\/[^"]+?\.(jpe?g|gif|png|bmp))"/i);
  2072.         if (!iUrl) iUrl = pageData.match(/img src="(http:\/\/\w+?\.hentaiverse\.net\/[^"]+?image\.php.+?)"/);
  2073.         if (!iUrl) iUrl = pageData.match(/img src="(http:\/\/gu\.e-hentai\.org\/image\.php.+?)"/);
  2074.         }
  2075.     else {
  2076.         retVal.imgUrl = pageUrl + (pageUrl.indexOf("?") > -1 ? "&" : "?") + "nl=1";
  2077.         retVal.status = "REQUEUE";
  2078.         return retVal;
  2079.         }
  2080.  
  2081.     if (!iUrl) {
  2082.         retVal.imgUrl = null;
  2083.         retVal.status = "ABORT";
  2084.         }
  2085.     else {
  2086.         retVal.imgUrl = iUrl[1].replace(/&amp;/g, "&");
  2087.         retVal.status = "OK";
  2088.         }
  2089.  
  2090.     return retVal;
  2091.     }]]></searchpattern>
  2092. </host>
  2093.  
  2094. <host id="exs.cs">
  2095. <urlpattern>^http:\/\/img\d+\.exs\.cx\/my\.php\?.+</urlpattern>
  2096. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2097.     var retVal = new Object();
  2098.  
  2099.     var iUrl = pageUrl.match(/http:\/\/img\d+\.exs\.cx\/my\.php\?loc=(img\d+)&image=([^&]+)/);
  2100.        
  2101.     if (!iUrl) {
  2102.         retVal.imgUrl = null;
  2103.         retVal.status = "ABORT";
  2104.         }
  2105.     else {
  2106.         retVal.imgUrl = "http://" + iUrl[1] + ".imageshack.us/i/" + iUrl[2] + "/";
  2107.         retVal.status = "REQUEUE";
  2108.         }
  2109.  
  2110.     return retVal;
  2111.     }]]></searchpattern>
  2112. </host>
  2113.  
  2114. <host id="eyeprime">
  2115. <urlpattern>^http:\/\/eyeprime\.net\/images\/.+\..{3,4}$</urlpattern>
  2116. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2117.     var retVal = new Object();
  2118.    
  2119.     retVal.imgUrl = pageUrl;
  2120.     retVal.status = "OK";
  2121.    
  2122.     return retVal;
  2123.     }]]></searchpattern>
  2124. </host>
  2125.  
  2126. <host id="eyeprime2">
  2127. <urlpattern>^http:\/\/eyeprime\.net\/images\/.+\..{3,4}$</urlpattern>
  2128. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2129.     return {imgUrl: pageUrl, status: "OK"};
  2130.     }]]></searchpattern>
  2131. </host>
  2132.  
  2133. <host id="facebook">
  2134. <urlpattern>^https?:\/\/.+\.facebook\.com\/photo\.php\?.+</urlpattern>
  2135. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2136.     var retVal = new Object();
  2137.  
  2138.     var iUrl = pageData.match(/<a href="(https?:\/\/[^"]+?_o\..{3,4})"/);
  2139.     if (!iUrl) iUrl = pageData.match(/<img src="([^"]+)".+?id="myphoto"/);
  2140.  
  2141.     if (!iUrl) {
  2142.         retVal.imgUrl = null;
  2143.         retVal.status = "ABORT";
  2144.         }
  2145.     else {
  2146.         retVal.imgUrl = iUrl[1];
  2147.         retVal.status = "OK";
  2148.         }
  2149.  
  2150.     return retVal;
  2151.     }]]></searchpattern>
  2152. </host>
  2153.  
  2154. <host id="facialforum">
  2155. <urlpattern>^http:\/\/(?:www\.)?facialforum\.net\/attachment\.php\?attachmentid=\d+</urlpattern>
  2156. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2157.     var retVal = new Object();
  2158.  
  2159.     retVal.imgUrl = pageUrl;
  2160.     retVal.status = "OK";
  2161.    
  2162.     return retVal;
  2163.     }]]></searchpattern>
  2164. </host>
  2165.  
  2166. <host id="fakku">
  2167. <urlpattern>^http:\/\/www\.fakku\.net\/viewonline\.php\?id=\d+&amp;page=\d+</urlpattern>
  2168. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2169.     var retVal = new Object();
  2170.    
  2171.     var iUrl = pageData.match(/<a href='\/viewonline\.php\?id=.+?'><img src='(.+?)'/);
  2172.    
  2173.     if (!iUrl) {
  2174.         retVal.imgUrl = null;
  2175.         retVal.status = "ABORT";
  2176.         }
  2177.     else {
  2178.         retVal.imgUrl = iUrl[1];
  2179.         retVal.status = "OK";
  2180.         }
  2181.  
  2182.     return retVal;
  2183.     }]]></searchpattern>
  2184. </host>
  2185.  
  2186. <host id="famousboard">
  2187. <urlpattern>http:\/\/(?:www\.)?famousboard\.com\/.*(?:(?:download\.php\?id=.+)|(?:download,id,.+))</urlpattern>
  2188. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2189.     var retVal = new Object();
  2190.  
  2191.     retVal.imgUrl = pageUrl;
  2192.     retVal.status = "OK";
  2193.  
  2194.     return retVal;
  2195.     }]]></searchpattern>
  2196. </host>
  2197.  
  2198. <host id="fanpix">
  2199. <urlpattern>http:\/\/www\.fanpix\.net\/picture-gallery\/.+\/.+</urlpattern>
  2200. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2201.     var retVal = new Object();
  2202.  
  2203.     var iDiv = pageData.match(/<div id=("|')photo_frame\1>(?:.|\s)+?<\/div>/);
  2204.     var iImgTag = iDiv.toString().match(/<img.+src=("|')(.+)?\1/);
  2205.    
  2206.     if (iImgTag) var iUrl = iImgTag[2];
  2207.        
  2208.     if (!iUrl) {
  2209.         retVal.imgUrl = null;
  2210.         retVal.status = "ABORT";
  2211.         }
  2212.     else {
  2213.         retVal.imgUrl = iUrl;
  2214.         retVal.status = "OK";
  2215.         }
  2216.  
  2217.     return retVal;
  2218.     }]]></searchpattern>
  2219. </host>
  2220.  
  2221. <host id="fantasti">
  2222. <urlpattern>http:\/\/fantasti\.cc\/.+\/.+\/.+\/image\/\d+</urlpattern>
  2223. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2224.     var retVal = new Object();
  2225.  
  2226.     var user = pageUrl.match(/user\/(.+?)\//);
  2227.     if (user) {
  2228.         var user = user[1];
  2229.         var someRE = new RegExp("\"(http:\\/\\/.+\\/big\\/.+?\\/.+?\\/.+?\\/" + user + "\\/" + user + ".+?)\"");
  2230.         var iUrl = pageData.match(someRE);
  2231.         if (iUrl) iUrl = iUrl[1];
  2232.         }
  2233.        
  2234.     if (!iUrl) {
  2235.         retVal.imgUrl = null;
  2236.         retVal.status = "ABORT";
  2237.         }
  2238.     else {
  2239.         retVal.imgUrl = iUrl;
  2240.         retVal.status = "OK";
  2241.         }
  2242.  
  2243.     return retVal;
  2244.     }]]></searchpattern>
  2245. </host>
  2246.  
  2247. <host id="fap2it">
  2248. <urlpattern>^http:\/\/www\.fap2it\.com\/show\.php\/.+</urlpattern>
  2249. <searchpattern>"http:\\/\\/www\\.fap2it\\.com\\/out\\.php\\/.+"</searchpattern>
  2250. </host>
  2251.  
  2252. <host id="fapat">
  2253. <urlpattern>^http:\/\/fapat\.me\/.+$</urlpattern>
  2254. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2255.     var req = new XMLHttpRequest();
  2256.     req.open("POST", pageUrl, false);
  2257.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  2258.     req.send("imgContinue=Continue+to+image+...+");
  2259.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  2260.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2261. }
  2262. ]]></searchpattern>
  2263. </host>
  2264.  
  2265. <host id="fapat.me">
  2266. <urlpattern>^http:\/\/fapat\.me\/</urlpattern>
  2267. <searchpattern>"class="pic pic-view""</searchpattern>
  2268. </host>
  2269.  
  2270. <host id="fapic">
  2271. <urlpattern>http:\/\/fapic\.me\/img-</urlpattern>
  2272. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2273.   var req = new XMLHttpRequest();
  2274.   req.open("POST", pageUrl, false);
  2275.   req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  2276.   req.send("imgContinue=CLICK HERE CONTINUE TO IMAGE ");
  2277.   var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  2278.   return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2279. }]]></searchpattern>
  2280. </host>
  2281.  
  2282. <host id="fapomatic">
  2283. <urlpattern>^https?:\/\/(?:.*\.)?fapomatic\.com\/show\.php\?(.*&amp;)?f=.+$</urlpattern>
  2284. <searchpattern>"ID: subject"</searchpattern>
  2285. </host>
  2286.  
  2287. <host id="fappic">
  2288. <urlpattern>^http:\/\/fappic\.com\/[^\/]+$</urlpattern>
  2289. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2290.      var retVal = {};
  2291.  
  2292.      var iUrl = pageUrl + ".jpg";
  2293.      if (!iUrl) {
  2294.          retVal.imgUrl = null;
  2295.          retVal.status = "ABORT";
  2296.      }
  2297.      else {
  2298.          retVal.imgUrl = iUrl;
  2299.          retVal.status = "OK";
  2300.      }
  2301.  
  2302.      return retVal;
  2303. }]]></searchpattern>
  2304. </host>
  2305.  
  2306. <host id="fapstars.ru">
  2307. <urlpattern>^http:\/\/fapstars\.ru\/uploads\/.+\..{3,4}$</urlpattern>
  2308. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2309.     return {imgUrl: pageUrl, status: "OK"};
  2310.     }]]></searchpattern>
  2311. </host>
  2312.  
  2313. <host id="fastpic.ru">
  2314. <urlpattern>http:\/\/fastpic\.ru\/view\/\d+\/\d+\/\d+\/.+</urlpattern>
  2315. <searchpattern>"ID: image"</searchpattern>
  2316. </host>
  2317.  
  2318. <host id="fetlife">
  2319. <urlpattern>^http:\/\/fetlife\.com\/.+\/pictures\/\d+</urlpattern>
  2320. <searchpattern>"src=".+?_720\..{3,4}""</searchpattern>
  2321. </host>
  2322.  
  2323. <host id="file-bunker">
  2324. <urlpattern>^http:\/\/file-bunker\.org\/index\.php\?id=.+</urlpattern>
  2325. <searchpattern>"REPLACE: 'index\\.php\\?id=' , 'shots/'"</searchpattern>
  2326. </host>
  2327.  
  2328. <host id="fileden">
  2329. <urlpattern>^http:\/\/www\.fileden\.com\/pview\.php\?</urlpattern>
  2330. <searchpattern>"resizeMe"</searchpattern>
  2331. </host>
  2332.  
  2333. <host id="filefap">
  2334. <urlpattern>^http:\/\/filefap\.com\/view\/</urlpattern>
  2335. <searchpattern>"ID: thepic"</searchpattern>
  2336. </host>
  2337.  
  2338. <host id="filmweb">
  2339. <urlpattern>^http:\/\/www\.filmweb\.pl\/person\/.+?\/photos\/\d+$</urlpattern>
  2340. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2341.     var id = pageUrl.match(/^http:\/\/.+?\/photos\/(\d+)/);
  2342.     var iUrl = pageData.match("li id=\"photo-"+id[1]+"\".+?data-photo=\"(.+?)\"");
  2343.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2344. }]]></searchpattern>
  2345. </host>
  2346.  
  2347. <host id="fireimg">
  2348. <urlpattern>^http:\/\/fireimg\.cc\/.+$</urlpattern>
  2349. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2350.     var req = new XMLHttpRequest();
  2351.     req.open("POST", pageUrl, false);
  2352.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  2353.     req.send("imgContinue=Continue+to+image+...+");
  2354.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  2355.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2356. }]]></searchpattern>
  2357. </host>
  2358.  
  2359. <host id="flickr">
  2360. <urlpattern>^http:\/\/www\.flickr\.com\/photos\/[^\/]+\/\d+\/(?:in\/.+)?$</urlpattern>
  2361. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2362.     var retVal = new Object();
  2363.     var tooty = pageUrl.match(/(http:\/\/.+?)\//);
  2364.     var fruity = pageData.match(/<a href="(.+?)" id="photo_gne_button_zoom"/);
  2365.     var iUrl = null;
  2366.    
  2367.     if (fruity) {
  2368.         var newUrl = tooty[1] + fruity[1];
  2369.         var req = new XMLHttpRequest();
  2370.         req.open("GET", newUrl, false);
  2371.         req.send(null);
  2372.        
  2373.         var newPage = req.responseText;
  2374.         var fartSniffer = newPage.match(/<img.+src=("|')(http:\/\/.+\.static\.flickr\.com\/\d+\/\d+_.+_.\..{3,4})\1/);
  2375.         if (fartSniffer) iUrl = fartSniffer[2];
  2376.         }
  2377.     else {
  2378.         var imageInfo = pageData.match(/'0': .+/);
  2379.         if (imageInfo) {
  2380.             imageInfo = imageInfo[0];
  2381.            
  2382.             var original = imageInfo.match(/"label":"Original".+?"url":"(.+?)"/);
  2383.             var large = imageInfo.match(/"label":"Large".+?"url":"(.+?)"/);
  2384.             var med640 = imageInfo.match(/"label":"Medium 640".+?"url":"(.+?)"/);
  2385.             var medium = imageInfo.match(/"label":"Medium".+?"url":"(.+?)"/);
  2386.             var blah = pageData.match(/<img.+src=('|")(http:\/\/.+\.static\.flickr\.com\/\d+\/\d+_.+?\..{3,4})\1/);
  2387.        
  2388.             if (original) iUrl = original[1];
  2389.             else if (large) iUrl = large[1];
  2390.             else if (med640) iUrl = med640[1];
  2391.             else if (medium) iUrl = medium[1];
  2392.             else if (blah) iUrl = blah[2];
  2393.             }
  2394.         }
  2395.     if (iUrl) {
  2396.         retVal.imgUrl = iUrl.replace(/\\\//g, "/");
  2397.         retVal.status = "OK";
  2398.         }
  2399.     else {
  2400.         retVal.imgUrl = null;
  2401.         retVal.status = "ABORT";
  2402.         }
  2403.    
  2404.     return retVal;
  2405.     }]]></searchpattern>
  2406. </host>
  2407.  
  2408. <host id="fobo">
  2409. <urlpattern>^http:\/\/fobo\.ru\/attachment\.php\?attachmentid=</urlpattern>
  2410. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2411.     var retVal = new Object();
  2412.  
  2413.     retVal.imgUrl = pageUrl;
  2414.     retVal.status = "OK";
  2415.    
  2416.     return retVal;
  2417.     }]]></searchpattern>
  2418. </host>
  2419.  
  2420. <host id="fobo2">
  2421. <urlpattern>^http:\/\/fobo\.ru\/imagePreview\.php\?image=</urlpattern>
  2422. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2423.     var retVal = new Object();
  2424.  
  2425.     pageUrl = pageUrl.replace(/%3A/gi, ":");
  2426.     pageUrl = pageUrl.replace(/%2F/gi, "/");
  2427.    
  2428.     var iUrl = pageUrl.match(/image=(http:\/\/fobo\.ru\/attachments\/\w+\/\w+)/);
  2429.    
  2430.     if (!iUrl) {
  2431.         retVal.imgUrl = null;
  2432.         retVal.status = "ABORT";
  2433.         }
  2434.     else {
  2435.         retVal.imgUrl = iUrl[1];
  2436.         retVal.status = "OK";
  2437.         }
  2438.        
  2439.     return retVal;
  2440.     }]]></searchpattern>
  2441. </host>
  2442.  
  2443. <host id="forceindya">
  2444. <urlpattern>http:\/\/forceindya\.com\/images\/.+</urlpattern>
  2445. <searchpattern>"http:\\/\\/forceindya\\.com\\/images\\/wp-content\\/uploads\\/[0-9]+\\/[0-9]+\\/.+\\.jpg"</searchpattern>
  2446. </host>
  2447.  
  2448. <host id="formulatv">
  2449. <urlpattern>^http:\/\/www\.formulatv\.com\/visor\.php\?.*(?:fgal|num)=\d+$</urlpattern>
  2450. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2451.     var retVal = new Object();
  2452.    
  2453.     var iUrl = pageData.match(/<div id="foto"(?:.|\s)+?src="(.+?)"/);
  2454.    
  2455.     if (!iUrl) {
  2456.         retVal.imgUrl = null;
  2457.         retVal.status = "ABORT";
  2458.         }
  2459.     else {
  2460.         retVal.imgUrl = iUrl[1];
  2461.         retVal.status = "OK";
  2462.         }
  2463.  
  2464.     return retVal;
  2465.     }]]></searchpattern>
  2466. </host>
  2467.  
  2468. <host id="fotka-galeria.cba.pl">
  2469. <urlpattern>^http:\/\/fotka-galeria\.cba\.pl\/galeria\/details\.php\?image_id=.+</urlpattern>
  2470. <searchpattern>"data\/media\/"</searchpattern>
  2471. </host>
  2472.  
  2473. <host id="fotki">
  2474. <urlpattern>^http:\/\/(?:public\.)?fotki\.com\/[^\.]+\/(?!page\d+|viewcomments)[^\/]+\.html$</urlpattern>
  2475. <searchpattern>"ID: stretch_photo_id"</searchpattern>
  2476. </host>
  2477.  
  2478. <host id="fotoblow">
  2479. <urlpattern>^http:\/\/www\.fotoblow\.com\/photo\/\d+\/</urlpattern>
  2480. <searchpattern>"REPLACE: 'photo\/(\d+)\/' , 'pdata/$1.jpg'"</searchpattern>
  2481. </host>
  2482.  
  2483. <host id="fotofap">
  2484. <urlpattern>^http:\/\/www\.fotofap\.com\/view\/full\/.+</urlpattern>
  2485. <searchpattern>"http:\\/\\/www\\.fotofap\\.com\\/files\\/.+"</searchpattern>
  2486. </host>
  2487.  
  2488. <host id="fotokritik">
  2489. <urlpattern>^http:\/\/www\.fotokritik\.ru\/photo\/.+\/</urlpattern>
  2490. <searchpattern>"photos\\/big"</searchpattern>
  2491. </host>
  2492.  
  2493. <host id="fotosik">
  2494. <urlpattern>http:\/\/www\.fotosik\.pl\/pokaz_obrazek\/.+</urlpattern>
  2495. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2496.     var retVal = new Object();
  2497.  
  2498.     var cockVomit = pageData.match(/http:\/\/images\d+\.fotosik\.pl\/\d+\/.+?(?=')/);
  2499.  
  2500.     if (!cockVomit) {
  2501.         retVal.status = "ABORT";
  2502.         retVal.imgUrl = null;
  2503.         }
  2504.     else {
  2505.         retVal.status = "OK";
  2506.         retVal.imgUrl = cockVomit.toString().replace(/med(\..{3,4})/, "$1");
  2507.         }
  2508.     return retVal;
  2509.     }]]></searchpattern>
  2510. </host>
  2511.  
  2512. <host id="foxyimg">
  2513. <urlpattern>^http:\/\/foxyimg\.link\/\w+$</urlpattern>
  2514. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2515.     var id = pageUrl.match(/https?:\/\/[^/]+\/([^/\.]+)/);
  2516.     var req = new XMLHttpRequest();
  2517.     req.open("POST", pageUrl, false);
  2518.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  2519.     req.send("op=view&id="+id[1]+"&pre=2&next=Continue to image.");
  2520.  
  2521.     var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(img|i)\/[^/]+\/.+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\4/i);
  2522.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2523. }
  2524. ]]></searchpattern>
  2525. </host>
  2526.  
  2527. <host id="freakbucket">
  2528. <urlpattern>^http:\/\/freakbucket\.com\/blog\/wp-content\/gallery\/.+\/.+\..{3,4}$</urlpattern>
  2529. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2530.    var retVal = new Object();
  2531.    
  2532.    retVal.imgUrl = pageUrl;
  2533.    retVal.status = "OK";
  2534.    
  2535.    return retVal;
  2536.    }]]></searchpattern>
  2537. </host>
  2538.  
  2539. <host id="freefilehosting">
  2540. <urlpattern>^http:\/\/www\.freefilehosting\.org\/public\/pview\/</urlpattern>
  2541. <searchpattern>"REPLACE: 'pview\\/' , ''"</searchpattern>
  2542. </host>
  2543.  
  2544. <host id="freeimagehost">
  2545. <urlpattern>^http:\/\/www\.freeimagehost\.eu\/image\/</urlpattern>
  2546. <searchpattern>"\\/dlimage\\/"</searchpattern>
  2547. </host>
  2548.  
  2549. <host id="freeimagehostingz">
  2550. <urlpattern>http:\/\/freeimagehostingz\.com\/viewer\.php\?file=.+</urlpattern>
  2551. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)', 'images/$1'"</searchpattern>
  2552. </host>
  2553.  
  2554. <host id="freeimgshost">
  2555. <urlpattern>^http:\/\/www\.freeimgshost\.com\/viewer\.php\?file=</urlpattern>
  2556. <searchpattern>"REPLACE: 'viewer\\.php\\?file=' , 'fullsize/'"</searchpattern>
  2557. </host>
  2558.  
  2559. <host id="freephotohostin">
  2560. <urlpattern>^http:\/\/www\.freephotohostin\.com\/.+\.html</urlpattern>
  2561. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2562.     var req = new XMLHttpRequest();
  2563.     req.open("POST", pageUrl, false);
  2564.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  2565.     req.send("imgContinue=Continue+to+image+...+");
  2566.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  2567.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2568. }]]></searchpattern>
  2569. </host>
  2570.  
  2571. <host id="freeporn.hu">
  2572. <urlpattern>^http:\/\/(?:www\.)?freeporn\.hu\/pic\/.+\/\d+$</urlpattern>
  2573. <searchpattern>"REPLACE: '(?:www\.)?(freeporn\.hu\/)pic\/(.+)' , 'pic.$1$2.jpg'"</searchpattern>
  2574. </host>
  2575.  
  2576. <host id="freeporndumpster">
  2577. <urlpattern>^https?:\/\/.*freeporndumpster\.com\/show\.php</urlpattern>
  2578. <searchpattern>"ID: thepic"</searchpattern>
  2579. </host>
  2580.  
  2581. <host id="freeuploadimages">
  2582. <urlpattern>^http:\/\/(?:www\.)?freeuploadimages\.org\/viewer\.php\?file=.+</urlpattern>
  2583. <searchpattern>"REPLACE: 'viewer\\.php\\?file=','images/'"</searchpattern>
  2584. </host>
  2585.  
  2586. <host id="friendlyimage">
  2587. <urlpattern>^http:\/\/www\.friendlyimage\.com\/viewer\.php\?file=</urlpattern>
  2588. <searchpattern>"\\.\\/files\\/.+\\...."</searchpattern>
  2589. </host>
  2590.  
  2591. <host id="funkyimg">
  2592. <urlpattern>^http:\/\/(?:www\.)?funkyimg\.com\/viewer\.php\?img=.+</urlpattern>
  2593. <searchpattern>"ID: image"</searchpattern>
  2594. </host>
  2595.  
  2596. <host id="furaffinity">
  2597. <urlpattern>^http:\/\/www\.furaffinity\.net\/view\/\d+</urlpattern>
  2598. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2599.     var retVal = new Object();
  2600.    
  2601.     var iUrl = pageData.match(/<a href="(.+?)">\s*Download\s*<\/a>/);
  2602.  
  2603.     if (!iUrl) {
  2604.         retVal.imgUrl = null;
  2605.         retVal.status = "ABORT";
  2606.         }
  2607.     else {
  2608.         retVal.imgUrl = iUrl[1];
  2609.         retVal.status = "OK";
  2610.         }
  2611.  
  2612.     return retVal;
  2613.     }]]></searchpattern>
  2614. </host>
  2615.  
  2616. <host id="futanaripalace">
  2617. <urlpattern>^http:\/\/(?:www\.)?futanaripalace\.com\/attachment\.php\?attachmentid=\d+</urlpattern>
  2618. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2619.     var retVal = new Object();
  2620.  
  2621.     retVal.imgUrl = pageUrl;
  2622.     retVal.status = "OK";
  2623.    
  2624.     return retVal;
  2625.     }]]></searchpattern>
  2626. </host>
  2627.  
  2628. <host id="g.e-hentai" maxThreads="1">
  2629. <urlpattern>^http:\/\/g\.e-hentai\.org\/s\/.+</urlpattern>
  2630. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2631.     if (ihg_Globals.appName == "ImageHost Grabber") ihg_Globals.maxThreads = 1;
  2632.  
  2633.     var retVal = new Object();
  2634.  
  2635.     if (pageUrl.match(/nl=1$/)) {
  2636.         var iUrl = pageData.match(/img src="(http:\/\/\d+\.\d+\.\d+\.\d+(:\d+)?\/h\/[^"]+?\.(jpe?g|gif|png|bmp))"/i);
  2637.         if (!iUrl) iUrl = pageData.match(/img src="(http:\/\/\w+?\.hentaiverse\.net\/[^"]+?image\.php.+?)"/);
  2638.         if (!iUrl) iUrl = pageData.match(/img src="(http:\/\/gu\.e-hentai\.org\/image\.php.+?)"/);
  2639.         }
  2640.     else {
  2641.         retVal.imgUrl = pageUrl + (pageUrl.indexOf("?") > -1 ? "&" : "?") + "nl=1";
  2642.         retVal.status = "REQUEUE";
  2643.         return retVal;
  2644.         }
  2645.  
  2646.     if (!iUrl) {
  2647.         retVal.imgUrl = null;
  2648.         retVal.status = "ABORT";
  2649.         }
  2650.     else {
  2651.         retVal.imgUrl = iUrl[1].replace(/&amp;/g, "&");
  2652.         retVal.status = "OK";
  2653.         }
  2654.  
  2655.     return retVal;
  2656.     }]]></searchpattern>
  2657. </host>
  2658.  
  2659. <host id="gagagirls">
  2660. <urlpattern>^http:\/\/gagagirls\.ga\/img-[\da-f]+\.html$</urlpattern>
  2661. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2662.     var iUrl = pageData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  2663.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"};
  2664. }]]></searchpattern>
  2665. </host>
  2666.  
  2667. <host id="galleries.bz">
  2668. <urlpattern>^http:\/\/[\da-f]{8}\.galleries\.bz\/?$</urlpattern>
  2669. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2670.     var retVal = {imgUrl: null, status: "ABORT"};
  2671.    
  2672.     var newPageUrl = pageData.match(/Lbjs\.TargetUrl = '(.+?)'/);
  2673.     if (newPageUrl) {
  2674.         retVal.imgUrl = newPageUrl[1].replace(/&amp;/g, "&");
  2675.         retVal.status = "REQUEUE";
  2676.     }
  2677.  
  2678.     return retVal;
  2679. }]]></searchpattern>
  2680. </host>
  2681.  
  2682. <host id="galleryhosted">
  2683. <urlpattern>^http:\/\/(?:www\.)?galleryhosted\.com\/.+\/.+\..{3,4}</urlpattern>
  2684. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2685.     var retVal = new Object();
  2686.    
  2687.     var iUrl = pageData.match(/<div[^>]+id="preview"[^>]+><img.+src="(.+?)">/);
  2688.  
  2689.     if (!iUrl) {
  2690.         retVal.imgUrl = null;
  2691.         retVal.status = "ABORT";
  2692.         }
  2693.     else {
  2694.         retVal.imgUrl = "http://www.galleryhosted.com/" + iUrl[1].replace(/\/thumbs.+?\//, "/original/");
  2695.         retVal.status = "OK";
  2696.         }
  2697.  
  2698.     return retVal;
  2699.     }]]></searchpattern>
  2700. </host>
  2701.  
  2702. <host id="gallerynova">
  2703. <urlpattern>^http:\/\/(?:www\.)?gallerynova\.se\/site\/</urlpattern>
  2704. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2705.     var iUrl = pageData.match(/\$\("#myUniqueImg"\)\.attr\("src","([^"]+)"\);/);
  2706.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"};
  2707. }]]></searchpattern>
  2708. </host>
  2709.  
  2710. <host id="gallerysense">
  2711. <urlpattern>^http:\/\/(?:www\.)?gallerysense\.se\/site\/</urlpattern>
  2712. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2713.    var iUrl = pageData.match(/\$\("#myUniqueImg"\)\.attr\("src","([^"]+)"\);/);
  2714.    return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"};
  2715. }]]></searchpattern>
  2716. </host>
  2717.  
  2718. <host id="gayfotos.com.br">
  2719. <urlpattern>^http:\/\/(?:www\.)?gayfotos\.com\.br\/galerias\/ver\/ver\.php\?chave=</urlpattern>
  2720. <searchpattern>"\/galerias\/fotos\/.+\..{3,4}"</searchpattern>
  2721. </host>
  2722.  
  2723. <host id="gceleb">
  2724. <urlpattern>^http:\/\/(?:www\.)?gceleb\.com\/photos\/.+?\.html$</urlpattern>
  2725. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2726.     var retVal = {imgUrl: null, status: "ABORT"};
  2727.    
  2728.     var iUrl = pageData.match(/href="([^"]+)".+?\1/);
  2729.     if (iUrl) {
  2730.         retVal.imgUrl = iUrl[1];
  2731.         retVal.status = "OK";
  2732.     }
  2733.  
  2734.     return retVal;
  2735. }]]></searchpattern>
  2736. </host>
  2737.  
  2738. <host id="geekypornygirl">
  2739. <urlpattern>^http:\/\/geekypornygirl\.com\/post\/\d+($|\/(?!formspring-me))</urlpattern>
  2740. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2741.     var retVal = new Object();
  2742.    
  2743.     var photo_div = pageData.match(/<div class="post photo"(?:.|\s)+?<img src.+/);
  2744.     if (photo_div) {
  2745.         photo_div = photo_div[0];
  2746.         var iUrl = photo_div.match(/<a href="(.+?)".+?<img src="(.+?)"/);
  2747.         if (!iUrl) var directUrl = photo_div.match(/(?:.|\s)+?<img src="(.+?)"/);
  2748.     }
  2749.    
  2750.     if (directUrl) {
  2751.         retVal.imgUrl = directUrl[1];
  2752.         retVal.status = "OK";
  2753.         return retVal; 
  2754.     }
  2755.    
  2756.     if (!iUrl) {
  2757.         retVal.imgUrl = null;
  2758.         retVal.status = "ABORT";
  2759.         }
  2760.     else {
  2761.         if (iUrl[1].search(/^http:\/\/.+\.media\.tumblr\.com\/.+/) >= 0 ||
  2762.             iUrl[1].search(/^http:\/\/geekypornygirl\.com\/photo\/\d+\/\d+\/.+/) >= 0) {
  2763.             retVal.imgUrl = iUrl[1];
  2764.             retVal.status = "OK";
  2765.             }
  2766.         else { 
  2767.             retVal.imgUrl = iUrl[2];
  2768.             retVal.status = "OK";
  2769.             }
  2770.         }
  2771.  
  2772.     return retVal;
  2773.     }]]></searchpattern>
  2774. </host>
  2775.  
  2776. <host id="gelbooru">
  2777. <urlpattern>^http:\/\/(?:www\.)?gelbooru\.com\/index\.php\?page=post&amp;s=view&amp;id=\d+</urlpattern>
  2778. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2779.     var retVal = new Object();
  2780.    
  2781.     var iUrl = pageData.match(/href="(http:\/\/img\d+\.gelbooru\.com.+?)".+?Original\simage/);
  2782.    
  2783.     if (!iUrl) {
  2784.         retVal.imgUrl = null;
  2785.         retVal.status = "ABORT";
  2786.         }
  2787.     else {
  2788.         retVal.imgUrl = iUrl[1];
  2789.         retVal.status = "OK";
  2790.         }
  2791.    
  2792.     return retVal;
  2793.     }]]></searchpattern>
  2794. </host>
  2795.  
  2796. <host id="getbig">
  2797. <urlpattern>^http:\/\/www\.getbig\.com\/boards\/.+action=dlattach</urlpattern>
  2798. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2799.     var retVal = new Object();
  2800.  
  2801.     retVal.imgUrl = pageUrl;
  2802.     retVal.status = "OK";
  2803.  
  2804.     return retVal;
  2805.     }]]></searchpattern>
  2806. </host>
  2807.  
  2808. <host id="gettyimages">
  2809. <urlpattern>^http:\/\/www\.gettyimages\.[a-z]+?\/(?:detail|editorial)\/[^\/]+\/[^\/]+\/[0-9]+?$</urlpattern>
  2810. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2811.     var id = pageUrl.match(/\w+\/(\d+)/);
  2812.     var sol = "http://media.gettyimages.com/photos/picture-id" + id[1];
  2813.     var req = new XMLHttpRequest();
  2814.     req.open("POST", sol, false);
  2815.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  2816.     req.send("");
  2817.     var iUrl = req.responseText;
  2818.     return iUrl ? {imgUrl: sol, status: "OK"} : {imgUrl: null, status: "ABORT"}
  2819. }]]></searchpattern>
  2820. </host>
  2821.  
  2822. <host id="gif-jpg">
  2823. <urlpattern>^http:\/\/gif-jpg\.com\/img-.+?\.html$</urlpattern>
  2824. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2825.     var req = new XMLHttpRequest();
  2826.     req.open("POST", pageUrl, false);
  2827.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  2828.     req.send("");
  2829.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  2830.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2831. }]]></searchpattern>
  2832. </host>
  2833.  
  2834. <host id="giffer">
  2835. <urlpattern>http:\/\/www\.giffer\.com\/pics\/.+\/files\/.+</urlpattern>
  2836. <searchpattern><![CDATA[ function(pageData, pageUrl) {
  2837.     var retVal = new Object();
  2838.  
  2839.     retVal.imgUrl = pageUrl;
  2840.     retVal.status = "OK";
  2841.  
  2842.     return retVal;
  2843.     }
  2844.   ]]></searchpattern>
  2845. </host>
  2846.  
  2847. <host id="girl-wallpapers">
  2848. <urlpattern>^http:\/\/www\.girl-wallpapers\.com\/wallpaper-pics-wallpaper-\d+-.+\.html</urlpattern>
  2849. <searchpattern>"ID: wallpaperimg"</searchpattern>
  2850. </host>
  2851.  
  2852. <host id="girlpits">
  2853. <urlpattern>^http:\/\/forums\.girlpits\.com\/download\.php\?id=\d+</urlpattern>
  2854. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2855.     var retVal = new Object();
  2856.    
  2857.     retVal.imgUrl = pageUrl;
  2858.     retVal.status = "OK";
  2859.    
  2860.     return retVal;
  2861.     }]]></searchpattern>
  2862. </host>
  2863.  
  2864. <host id="girls of desire">
  2865. <urlpattern>^http:\/\/www\.girlsofdesire\.org\/own-galleries\/.+\/\d+\/</urlpattern>
  2866. <searchpattern>"\\/media\\/pictures\\/"</searchpattern>
  2867. </host>
  2868.  
  2869. <host id="girlsgen">
  2870. <urlpattern>^http:\/\/(?:www\.)?girlsgen\.com\/gallery\/[^\/]+\/[^\/]+\/[^\/]+?\d+\/$</urlpattern>
  2871. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2872.     var retVal = {};
  2873.    
  2874.     var iUrl = pageData.match(/<a accesskey="v" href="([^"]+)">/);
  2875.  
  2876.     if (!iUrl) {
  2877.         retVal.imgUrl = null;
  2878.         retVal.status = "ABORT";
  2879.         }
  2880.     else {
  2881.         retVal.imgUrl = iUrl[1];
  2882.         retVal.status = "OK";
  2883.         }
  2884.  
  2885.     return retVal;
  2886.     }]]></searchpattern>
  2887. </host>
  2888.  
  2889. <host id="girlshot">
  2890. <urlpattern>^http:\/\/girlshot\.org\/\?p=\d+</urlpattern>
  2891. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2892.     var iUrl = pageData.match(/img src="(.+?)" alt=".+?"/);
  2893.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  2894. }]]></searchpattern>
  2895. </host>
  2896.  
  2897. <host id="girlswithmuscle">
  2898. <urlpattern>^http:\/\/(?:www\.)?girlswithmuscle\.com\/\d+\/</urlpattern>
  2899. <searchpattern>"src="\/images\/full\/"</searchpattern>
  2900. </host>
  2901.  
  2902. <host id="glam0ur">
  2903. <urlpattern>^http:\/\/(?:www\.)?glam0ur\.com\/gals\/.+\/.+\/.+\.php</urlpattern>
  2904. <searchpattern>"ID: fullImage"</searchpattern>
  2905. </host>
  2906.  
  2907. <host id="glowfoto">
  2908. <urlpattern>^http:\/\/www\.glowfoto\.com\/static_image\/.+</urlpattern>
  2909. <searchpattern>"http:\\/\\/img\\d+\\.glowfoto\\.com\\/images\\/.+\\...."</searchpattern>
  2910. </host>
  2911.  
  2912. <host id="glowfoto2">
  2913. <urlpattern>^http:\/\/www\.glowfoto\.com\/viewimage\.php\?img=</urlpattern>
  2914. <searchpattern>"http:\/\/www\.glowfoto\.com\/images\/.+\/.+\/.+?"</searchpattern>
  2915. </host>
  2916.  
  2917. <host id="gogiimg">
  2918. <urlpattern>^http:\/\/gogiimg\.ml\/i\/imtg\.php\?id1=</urlpattern>
  2919. <searchpattern>"ID: thepic"</searchpattern>
  2920. </host>
  2921.  
  2922. <host id="gogoimage">
  2923. <urlpattern>^http:\/\/gogoimage\.org\/img-[\da-f]+\.html$</urlpattern>
  2924. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  2925. </host>
  2926.  
  2927. <host id="gokoimage">
  2928. <urlpattern>^http:\/\/gokoimage\.com\/img-[\da-f]+\.html$</urlpattern>
  2929. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2930.      var retVal = {imgUrl: null, status: "ABORT"};
  2931.  
  2932.     var req = new XMLHttpRequest();
  2933.     req.open("POST", pageUrl, false);
  2934.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  2935.     var postData = "imgContinue=Continue to image ... ";
  2936.     req.send(postData);
  2937.  
  2938.      var someData = req.responseText;
  2939.      var iUrl= someData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  2940.      if (iUrl) {
  2941.          retVal.imgUrl = iUrl[2];
  2942.          retVal.status = "OK";
  2943.      }
  2944.      return retVal;
  2945.  }]]></searchpattern>
  2946. </host>
  2947.  
  2948. <host id="gone-hollywood">
  2949. <urlpattern>^http:\/\/gone-hollywood\.com\/\d+\/\d+\/.+?\/(?!trackback).+?\/$</urlpattern>
  2950. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2951.     var retVal = new Object();
  2952.    
  2953.     var iUrl = pageData.match(/src="(http:\/\/gone-hollywood\.com\/wp\/wp-content\/uploads\/\d+\/\d+\/.+?)" class="attachment/);
  2954.  
  2955.     if (!iUrl) {
  2956.         retVal.imgUrl = null;
  2957.         retVal.status = "ABORT";
  2958.         }
  2959.     else {
  2960.         retVal.imgUrl = iUrl[1].replace(/(http:\/\/gone-hollywood\.com\/wp\/wp-content\/uploads\/\d+\/\d+\/.+)-\d+x\d+(\..{3,4})/, "$1$2");
  2961.         retVal.status = "OK";
  2962.         }
  2963.  
  2964.     return retVal;
  2965.     }]]></searchpattern>
  2966. </host>
  2967.  
  2968. <host id="goodbyemydarling">
  2969. <urlpattern>^http:\/\/www\.goodbyemydarling\.com\/pics\/</urlpattern>
  2970. <searchpattern>"REPLACE: 'source\\/(.+)\\.php' , 'image/$1.jpg'"</searchpattern>
  2971. </host>
  2972.  
  2973. <host id="googleceleb">
  2974. <urlpattern>^http:\/\/(?:www\.)?googleceleb\.com\/view\/\d+</urlpattern>
  2975. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2976.     var retVal = new Object();
  2977.    
  2978.     var iUrl = pageData.match(/<div class="art-PostContent">\s+<iframe src="(.+?)"/);
  2979.  
  2980.     if (!iUrl) {
  2981.         retVal.imgUrl = null;
  2982.         retVal.status = "ABORT";
  2983.         }
  2984.     else {
  2985.         retVal.imgUrl = iUrl[1];
  2986.         retVal.status = "REQUEUE";
  2987.         }
  2988.  
  2989.     return retVal;
  2990.     }]]></searchpattern>
  2991. </host>
  2992.  
  2993. <host id="gotceleb">
  2994. <urlpattern>^http:\/\/www\.gotceleb\.com\/.+?\.html\/.+?$</urlpattern>
  2995. <searchpattern><![CDATA[function(pageData, pageUrl) {
  2996.     var iUrl = pageData.match(/img width="\d+" height="\d+" src="(http:\/\/www\..+?\.com\/wp-content\/uploads\/[^"])"/i);
  2997.     if (iUrl) return {imgUrl: iUrl[1], status: "OK"}
  2998.  
  2999.     iUrl = pageData.match(/img src=("|')(.+?)("|').+?title=/i);
  3000.     maxRes = iUrl[2].match(/(http:\/\/.+?)-\d+x\d+(\..{3,4})/);
  3001.     iUrl = maxRes[1]+maxRes[2];
  3002.    
  3003.     return iUrl ? {imgUrl: iUrl, status: "OK"} : {imgUrl: null, status: "ABORT"}
  3004. }]]></searchpattern>
  3005. </host>
  3006.  
  3007. <host id="greenpiccs">
  3008. <urlpattern>^https?:\/\/greenpiccs\.com\/images\/.+$</urlpattern>
  3009. <searchpattern>"style="max-.+?""</searchpattern>
  3010. </host>
  3011.  
  3012. <host id="groups.yahoo">
  3013. <urlpattern>^http:\/\/groups\.yahoo\.com\/.+\/photos\/.+\/view\?picmode=&amp;.+</urlpattern>
  3014. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3015.     var retVal = new Object();
  3016.    
  3017.     var iUrl = pageData.match(/class="ygrp-photos-body-image".+?<img src="(.+?)"/);
  3018.     if (iUrl) {
  3019.         if (pageData.match(/class="ygrp-photos-disabled">Original/))
  3020.             iUrl = iUrl[1].replace(/\/sn\//, "/hr/");
  3021.         else
  3022.             iUrl = iUrl[1].replace(/\/sn\//, "/or/");
  3023.         }
  3024.    
  3025.     if (!iUrl) {
  3026.         retVal.imgUrl = null;
  3027.         retVal.status = "ABORT";
  3028.         }
  3029.     else {
  3030.         retVal.imgUrl = iUrl;
  3031.         retVal.status = "OK";
  3032.         }
  3033.    
  3034.     return retVal;
  3035.     }]]></searchpattern>
  3036. </host>
  3037.  
  3038. <host id="groups.yahoo2">
  3039. <urlpattern>^https?:\/\/xa\.yimg\.com\/.+?\/groups\/[0-9]+\/or\/[0-9]+\/name\/.+?\?download=1$</urlpattern>
  3040. <searchpattern>"REPLACE: '\/or\/([0-9]+\/name\/.+?)\?download=1', '/sn/$1'"</searchpattern>
  3041. </host>
  3042.  
  3043. <host id="guyism">
  3044. <urlpattern>^http:\/\/(?:www\.)?guyism\.com\/.+\/attachment\/.+\d+</urlpattern>
  3045. <searchpattern>"class="attachment-medium""</searchpattern>
  3046. </host>
  3047.  
  3048. <host id="hamaraphotos">
  3049. <urlpattern>^http:\/\/hamaraphotos\.com\/.+_\d+\.html</urlpattern>
  3050. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3051.     var retVal = new Object();
  3052.    
  3053.     var iUrl = pageData.match(/MM_openBrWindow.+?img src="(.+?)"/);
  3054.        
  3055.     if (!iUrl) {
  3056.         retVal.imgUrl = null;
  3057.         retVal.status = "ABORT";
  3058.         }
  3059.     else {
  3060.         retVal.imgUrl = "http://hamaraphotos.com/" + iUrl[1].replace(/\/normal_/, "/");
  3061.         retVal.status = "OK";
  3062.         }
  3063.  
  3064.     return retVal;
  3065.     }]]></searchpattern>
  3066. </host>
  3067.  
  3068. <host id="hardupload">
  3069. <urlpattern>http:\/\/www\.hardupload\.com\/bilder\.php\?id=.+</urlpattern>
  3070. <searchpattern>"REPLACE: 'bilder\\.php\\?id=(.+)','img/jpg/$1.jpg'"</searchpattern>
  3071. </host>
  3072.  
  3073. <host id="hartists">
  3074. <urlpattern>http:\/\/.+\.hartists\.net\/gallery\/submission\/\d+</urlpattern>
  3075. <searchpattern>"http:\\/\\/submissions\\.hartists\\.net\\/.+\\.\\w{3,4}"</searchpattern>
  3076. </host>
  3077.  
  3078. <host id="hbrowse">
  3079. <urlpattern>^http:\/\/www\.hbrowse\.com\/\d+\/.+\/.+</urlpattern>
  3080. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3081.     var retVal = new Object();
  3082.    
  3083.     var iUrl = pageData.match(/class="pageImage"(?:.|\s)+?src="([^"]+)"/);
  3084.  
  3085.     if (!iUrl) {
  3086.         retVal.imgUrl = null;
  3087.         retVal.status = "ABORT";
  3088.         }
  3089.     else {
  3090.         retVal.imgUrl = iUrl[1];
  3091.         retVal.status = "OK";
  3092.         }
  3093.  
  3094.     return retVal;
  3095.     }]]></searchpattern>
  3096. </host>
  3097.  
  3098. <host id="hdevil">
  3099. <urlpattern>^http:\/\/(?:www\.)?hdevil\.biz\/share-.+\.html</urlpattern>
  3100. <searchpattern>"http:\/\/(?:www\.)?hdevil\.biz\/image-.+\..{3,4}"</searchpattern>
  3101. </host>
  3102.  
  3103. <host id="hentai-foundry">
  3104. <urlpattern>http:\/\/www\.hentai-foundry\.com\/pic.+</urlpattern>
  3105. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3106.     var retVal = new Object();
  3107.     var wetPants = null;
  3108.    
  3109.     var wetPants = pageData.match(/'(pic_fullsize-\d+\.php)'/);
  3110.     if (wetPants) {
  3111.         retVal.imgUrl = "http://www.hentai-foundry.com/" + wetPants[1];
  3112.         retVal.status = "REQUEUE";
  3113.         return retVal;
  3114.         }
  3115.        
  3116.     var shittyPants = pageData.match(/http:\/\/pictures\.Hentai-Foundry\.com\/.\/.+\/\d+\.\w{3,4}/);
  3117.     if (shittyPants) var iUrl = shittyPants.toString();
  3118.    
  3119.     if (!iUrl) {
  3120.         retVal.imgUrl = null;
  3121.         retVal.status = "ABORT";
  3122.         }
  3123.     else {
  3124.         retVal.imgUrl = iUrl;
  3125.         retVal.status = "OK";
  3126.         }
  3127.     return retVal;
  3128. }]]>
  3129. </searchpattern>
  3130. </host>
  3131.  
  3132. <host id="hentai2read">
  3133. <urlpattern>^http:\/\/hentai2read\.com\/.+?\/\d+\/\d+</urlpattern>
  3134. <searchpattern>"\/\/hentaicdn\.com\/hentai\/[^\?]+"</searchpattern>
  3135. </host>
  3136.  
  3137. <host id="hentaifromhell" maxThreads="3">
  3138. <urlpattern>^http:\/\/gallery\.hentaifromhell\.net\/(?:(?:.+\/showimg\.php\?.+)|(?:index\.php\?level=picture&amp;id=\d+))</urlpattern>
  3139. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3140.     var retVal = new Object();
  3141.    
  3142.     if (ihg_Globals.appName == "ImageHost Grabber") ihg_Globals.maxThreads = 3;
  3143.  
  3144.     var theId = "the_image";
  3145.  
  3146.     var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  3147.     var tmpMatch = pageData.match(searchPat);
  3148.     if (tmpMatch) {
  3149.         tmpMatch = tmpMatch[0];
  3150.         var the_url = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  3151.         if (the_url) the_url = the_url[2];
  3152.         }
  3153.     else {
  3154.         var the_url = pageData.match(/<img src="(http:\/\/gallery\.hentaifromhell\.net\/.+\/images\/.+\..{3,4})"/);
  3155.         if (the_url) the_url = the_url[1];
  3156.         }
  3157.  
  3158.     if (!the_url) {
  3159.         retVal.imgUrl = null;
  3160.         retVal.status = "ABORT";
  3161.         }
  3162.     else {
  3163.         retVal.imgUrl = the_url;
  3164.         retVal.status = "OK";
  3165.         }
  3166.  
  3167.     return retVal;
  3168.     }]]></searchpattern>
  3169. </host>
  3170.  
  3171. <host id="hentaigif">
  3172. <urlpattern>http:\/\/hentaigif\.net\/\?level=picture&amp;id=\d+</urlpattern>
  3173. <searchpattern>"http:\/\/hentaigif\.net\/images\/.+\/.+\/.+"</searchpattern>
  3174. </host>
  3175.  
  3176. <host id="hentairules">
  3177. <urlpattern>^http:\/\/(?:www\.)?hentairules\.net\/.+picture\.php\?</urlpattern>
  3178. <searchpattern>"ID: theMainImage"</searchpattern>
  3179. </host>
  3180.  
  3181. <host id="hitwgang">
  3182. <urlpattern>^http:\/\/(?:www\.)hitwgang\.com\/hitwdb\/HITWView\?content=[^.]+\.(?!htm).+$</urlpattern>
  3183. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3184.     var retVal = {};
  3185.    
  3186.     var iUrl = pageUrl.replace(/&mode=middle/,"");
  3187.    
  3188.     if (!iUrl) {
  3189.         retVal.imgUrl = null;
  3190.         retVal.status = "ABORT";
  3191.         }
  3192.     else {
  3193.         retVal.imgUrl = iUrl + "&mode=stream";
  3194.         retVal.fileName = iUrl.match(/[^\/]+$/)[0];
  3195.         retVal.status = "OK";
  3196.         }
  3197.    
  3198.     return retVal;
  3199.     }]]></searchpattern>
  3200. </host>
  3201.  
  3202. <host id="hochladen">
  3203. <urlpattern>^http:\/\/www\.hochladen\.info\/image\/.+</urlpattern>
  3204. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3205.     var fullSizeUrl = "http:\\/\\/www\\.hochladen\\.info\\/images\\/upload\\d+\\/.+\\/full.jpg";
  3206.  
  3207.     var matchString = "<input.+value=\"(" + fullSizeUrl + ")\".+?>";
  3208.     var regex = new RegExp(matchString);
  3209.  
  3210.     var inputBox = pageData.match(regex);
  3211.  
  3212.     if (inputBox) var the_url = inputBox[1];
  3213.  
  3214.     var retVal = new Object();
  3215.  
  3216.     if (!the_url) {
  3217.         retVal.status = "ABORT";
  3218.         retVal.imgUrl = null;
  3219.         }
  3220.     else {
  3221.         retVal.imgUrl = the_url;
  3222.         retVal.status = "OK";
  3223.         }
  3224.  
  3225.  
  3226.     var imgs = pageData.match(/<img src="\/img\/.+\/preview" alt="(.+?)".+?>/);
  3227.  
  3228.     try {
  3229.         retVal.fileName = imgs[1] + ".jpg";
  3230.         }
  3231.     catch(e) {
  3232.         retVal.fileName = Math.random().toString().substring(2) + ".jpg";
  3233.         }
  3234.  
  3235.     return retVal;
  3236.     }]]></searchpattern>
  3237. </host>
  3238.  
  3239. <host id="hollywood-celebrity-pictures">
  3240. <urlpattern>^http:\/\/(?:www\.)?hollywood-celebrity-pictures\.com\/.+-\d+-Picture.htm$</urlpattern>
  3241. <searchpattern>""\/Celebrities\/.+\/.+\..{3,4}""</searchpattern>
  3242. </host>
  3243.  
  3244. <host id="hollywoodtuna">
  3245. <urlpattern>^http:\/\/(?:www\.)?hollywoodtuna\.com\/(?:photo\.php\?.*id=|\?page_id=\d+&amp;id=)</urlpattern>
  3246. <searchpattern>"images\d*\/bigimages\d*\/.+"</searchpattern>
  3247. </host>
  3248.  
  3249. <host id="holytaco">
  3250. <urlpattern>^http:\/\/www\.holytaco\.com\/picture\/.+...</urlpattern>
  3251. <searchpattern>"ID: main_image"</searchpattern>
  3252. </host>
  3253.  
  3254. <host id="homegrownfreaks">
  3255. <urlpattern>^http:\/\/(?:www\.)?homegrownfreaks\.net\/img\/.+</urlpattern>
  3256. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3257.     return {imgUrl: pageUrl, status: "OK"};
  3258.     }]]></searchpattern>
  3259. </host>
  3260.  
  3261. <host id="hoooster">
  3262. <urlpattern>^http:\/\/(?:www\.)?hoooster\.com\/showimage\/</urlpattern>
  3263. <searchpattern>"ID: show_image"</searchpattern>
  3264. </host>
  3265.  
  3266. <host id="hornyasiangirls">
  3267. <urlpattern>^http:\/\/hornyasiangirls\.net\/\d+\/\d+\/\d+\/.+\/.+\/</urlpattern>
  3268. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3269.     var retVal = new Object();
  3270.    
  3271.     var iUrl = pageData.match(/<p class="attachment"><a href="(.+?)"/);
  3272.  
  3273.     if (!iUrl) {
  3274.         retVal.imgUrl = null;
  3275.         retVal.status = "ABORT";
  3276.         }
  3277.     else {
  3278.         retVal.imgUrl = iUrl[1];
  3279.         retVal.status = "OK";
  3280.         }
  3281.  
  3282.     return retVal;
  3283.     }]]></searchpattern>
  3284. </host>
  3285.  
  3286. <host id="hosterbin">
  3287. <urlpattern>^http:\/\/hosterbin\.com\/img-</urlpattern>
  3288. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  3289. </host>
  3290.  
  3291. <host id="hostingfailov">
  3292. <urlpattern>^http:\/\/(?:.+\.)?hostingfailov\.com\/photo(?:\/|-).+</urlpattern>
  3293. <searchpattern>"ID: thepic"</searchpattern>
  3294. </host>
  3295.  
  3296. <host id="hostpics">
  3297. <urlpattern>^http:\/\/hostpics\.net\/img-.+?\.html</urlpattern>
  3298. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3299. var req = new XMLHttpRequest();
  3300. req.open("POST", pageUrl, false);
  3301. req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  3302. req.send("imgContinue=Continue+to+image+...+");
  3303. var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  3304. return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  3305. }]]></searchpattern>
  3306. </host>
  3307.  
  3308. <host id="hosturimage">
  3309. <urlpattern>^http:\/\/hosturimage\.com\/img-[\da-f]+\.html$</urlpattern>
  3310. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3311.     var req = new XMLHttpRequest();
  3312.     req.open("POST", pageUrl, false);
  3313.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  3314.     req.send("imgContinue=Continue+to+image+...+");
  3315.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  3316.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  3317. }]]></searchpattern>
  3318. </host>
  3319.  
  3320. <host id="hostwhore">
  3321. <urlpattern>^http:\/\/hostwhore\.com\/.+\.php\/</urlpattern>
  3322. <searchpattern>"ID: img_obj"</searchpattern>
  3323. </host>
  3324.  
  3325. <host id="hostyourpic">
  3326. <urlpattern>^http:\/\/(?:www\.)?hostyourpic\.com\/\?v=.+</urlpattern>
  3327. <searchpattern>"&lt;img src="\/images\/.+""</searchpattern>
  3328. </host>
  3329.  
  3330. <host id="hot-file">
  3331. <urlpattern>http:\/\/www\.hot-file\.net\/pic\/.+</urlpattern>
  3332. <searchpattern>"\/userimages\/\d+\/\d+\/big_.+"</searchpattern>
  3333. </host>
  3334.  
  3335. <host id="hotcelebshome">
  3336. <urlpattern>^http:\/\/www\.hotcelebshome\.com\/\d+\/\d+\/\d+\/.+?\/(?!trackback).+?\/$</urlpattern>
  3337. <searchpattern>"ID: thepic"</searchpattern>
  3338. </host>
  3339.  
  3340. <host id="hotchinese.info">
  3341. <urlpattern>^http:\/\/hotchinese\.info\/\?attachment_id=\d+</urlpattern>
  3342. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3343.     var retVal = new Object();
  3344.    
  3345.     var iUrl = pageData.match(/Full size is <a[.\s]+?href="(.+?)"/);
  3346.  
  3347.     if (!iUrl) {
  3348.         retVal.imgUrl = null;
  3349.         retVal.status = "ABORT";
  3350.         }
  3351.     else {
  3352.         retVal.imgUrl = iUrl[1];
  3353.         retVal.status = "OK";
  3354.         }
  3355.  
  3356.     return retVal;
  3357.     }]]></searchpattern>
  3358. </host>
  3359.  
  3360. <host id="hotflick">
  3361. <urlpattern>^http:\/\/(?:www\.)?hotflick\.net\/.+\/\?q=</urlpattern>
  3362. <searchpattern>"ID: img"</searchpattern>
  3363. </host>
  3364.  
  3365. <host id="hotimg">
  3366. <urlpattern>^http:\/\/(?:www\.)?hotimg\.com\/image\/.+</urlpattern>
  3367. <searchpattern>"REPLACE: '\/image\/' , '/direct/'"</searchpattern>
  3368. </host>
  3369.  
  3370. <host id="hotjapan.info">
  3371. <urlpattern>^http:\/\/.+\.hotjapan\.info\/\?attachment_id=\d+</urlpattern>
  3372. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3373.     var retVal = new Object();
  3374.    
  3375.     var iUrl = pageData.match(/Full size is <a[.\s]+?href="(.+?)"/);
  3376.  
  3377.     if (!iUrl) {
  3378.         retVal.imgUrl = null;
  3379.         retVal.status = "ABORT";
  3380.         }
  3381.     else {
  3382.         retVal.imgUrl = iUrl[1];
  3383.         retVal.status = "OK";
  3384.         }
  3385.  
  3386.     return retVal;
  3387.     }]]></searchpattern>
  3388. </host>
  3389.  
  3390. <host id="hotkorean.info">
  3391. <urlpattern>^http:\/\/.+\.hotkorean\.info\/\?attachment_id=\d+</urlpattern>
  3392. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3393.     var retVal = new Object();
  3394.    
  3395.     var iUrl = pageData.match(/Full size is <a[.\s]+?href="(.+?)"/);
  3396.  
  3397.     if (!iUrl) {
  3398.         retVal.imgUrl = null;
  3399.         retVal.status = "ABORT";
  3400.         }
  3401.     else {
  3402.         retVal.imgUrl = iUrl[1];
  3403.         retVal.status = "OK";
  3404.         }
  3405.  
  3406.     return retVal;
  3407.     }]]></searchpattern>
  3408. </host>
  3409.  
  3410. <host id="hotlinkimage">
  3411. <urlpattern>^http:\/\/img\d+\.hotlinkimage\.com\/\/?img\.php\?</urlpattern>
  3412. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3413.     var retVal = new Object();
  3414.     var sPattern = pageData.match(/window.location="(.+)"/);   
  3415.  
  3416.     if (!sPattern) {
  3417.         var sPattern2 = pageData.match(/http:\/\/img\d+\.hotlinkimage\.com\/showimg\.php\?id=\d+&v=\d+&ext=jpg&dt=1/);
  3418.  
  3419.         if(!sPattern2) {
  3420.             retVal.imgUrl = null;
  3421.             retVal.status = "ABORT";
  3422.             }
  3423.         else {
  3424.             retVal.imgUrl = sPattern2;
  3425.             retVal.status = "OK";
  3426.            
  3427.             try {
  3428.                 retVal.fileName = sPattern2[0].match(/id=(\d+)/)[1] + ".jpg";
  3429.                 }
  3430.             catch(e) {
  3431.                 retVal.fileName = Math.random().toString().substring(2) + ".jpg";
  3432.                 }
  3433.             }  
  3434.         }
  3435.     else {
  3436.         retVal.imgUrl = sPattern[1];
  3437.         retVal.status = "REQUEUE";
  3438.         }
  3439.    
  3440.     return retVal;
  3441.     }]]></searchpattern>
  3442. </host>
  3443.  
  3444. <host id="hotpicx">
  3445. <urlpattern>^http:\/\/(?:www\.)?hotpicx\.com\/.+\.html$</urlpattern>
  3446. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3447.     var retVal = {};
  3448.    
  3449.     var iUrl = pageData.match(/<img[^>]+?class="pic"[^>]+>/);
  3450.  
  3451.     if (!iUrl) {
  3452.         retVal.imgUrl = null;
  3453.         retVal.status = "ABORT";
  3454.         }
  3455.     else {
  3456.         iUrl = iUrl[0];
  3457.         retVal.imgUrl = iUrl.match(/src="([^"]+)"/)[1];
  3458.         retVal.fileName = iUrl.match(/alt="([^"]+)"/)[1];
  3459.         retVal.status = "OK";
  3460.         }
  3461.  
  3462.     return retVal;
  3463.     }]]></searchpattern>
  3464. </host>
  3465.  
  3466. <host id="hotsexyceleb.info">
  3467. <urlpattern>^http:\/\/.+\.hotsexyceleb\.info\/\?attachment_id=\d+</urlpattern>
  3468. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3469.     var retVal = new Object();
  3470.    
  3471.     var iUrl = pageData.match(/Full size is <a[.\s]+?href="(.+?)"/);
  3472.  
  3473.     if (!iUrl) {
  3474.         retVal.imgUrl = null;
  3475.         retVal.status = "ABORT";
  3476.         }
  3477.     else {
  3478.         retVal.imgUrl = iUrl[1];
  3479.         retVal.status = "OK";
  3480.         }
  3481.  
  3482.     return retVal;
  3483.     }]]></searchpattern>
  3484. </host>
  3485.  
  3486. <host id="hottystop">
  3487. <urlpattern>^http:\/\/www\.hottystop\.com\/.+\/.+\..{3,4}</urlpattern>
  3488. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3489.     var retVal = new Object();
  3490.    
  3491.     retVal.imgUrl = pageUrl;
  3492.     retVal.status = "OK";
  3493.    
  3494.     return retVal;
  3495.     }]]></searchpattern>
  3496. </host>
  3497.  
  3498. <host id="hqbeat">
  3499. <urlpattern>^http:\/\/(?:www\.)?photos\.hqbeat\.com\/viewer\.php\?</urlpattern>
  3500. <searchpattern>"REPLACE: 'viewer\\.php\\?id=' , 'images/'"</searchpattern>
  3501. </host>
  3502.  
  3503. <host id="hqdiesel">
  3504. <urlpattern>^http:\/\/www\.hqdiesel\.net\/gallery\/displayimage\.php</urlpattern>
  3505. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3506.     var iUrl = pageData.match(/img src="(albums\/userpics\/[^"]+)".+?class="image"/);
  3507.     iUrl = iUrl[1].replace("normal_","");
  3508.     return iUrl ? {imgUrl: iUrl, status: "OK"} : {imgUrl: null, status: "ABORT"}
  3509. }]]></searchpattern>
  3510. </host>
  3511.  
  3512. <host id="hqimg">
  3513. <urlpattern>^http:\/\/(?:www\.)?hqimg\.com\/index\.php\/.+\?action=big&amp;size=.+&amp;fromthumbnail=true</urlpattern>
  3514. <searchpattern>"REPLACE: 'index\\.php\\/(.+)\\?action=big&amp;size=.+&amp;fromthumbnail=true', '$1'"</searchpattern>
  3515. </host>
  3516.  
  3517. <host id="hqparadise">
  3518. <urlpattern>^http:\/\/www\.hqparadise\.hu\/index\.php.+act=Attach</urlpattern>
  3519. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3520.     var retVal = new Object();
  3521.  
  3522.     retVal.imgUrl = pageUrl;
  3523.     retVal.status = "OK";
  3524.    
  3525.     return retVal;
  3526.     }]]></searchpattern>
  3527. </host>
  3528.  
  3529. <host id="hqscan">
  3530. <urlpattern>http:\/\/www\.hqscan\.com\/pics\/.+</urlpattern>
  3531. <searchpattern>"src="http:\/\/people\.freenet\.de\/.+""</searchpattern>
  3532. </host>
  3533.  
  3534. <host id="hungangels">
  3535. <urlpattern>^http:\/\/www\.hungangels\.com\/vboard\/attachment.php.+?$</urlpattern>
  3536. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  3537.     return {imgUrl: pageUrl, status: "OK"};
  3538. }]]></searchpattern>
  3539. </host>
  3540.  
  3541. <host id="hungangels">
  3542. <urlpattern>^http:\/\/www\.hungangels\.com\/vboard\/attachment.php.+?$</urlpattern>
  3543. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  3544.     return {imgUrl: pageUrl, status: "OK"};
  3545. }]]></searchpattern>
  3546. </host>
  3547.  
  3548. <host id="iceimg">
  3549. <urlpattern>^http:\/\/iceimg\.com\/\w+\/[^\/]+$</urlpattern>
  3550. <searchpattern>"itemprop="contentUrl""</searchpattern>
  3551. </host>
  3552.  
  3553. <host id="ichijou">
  3554. <urlpattern>^http:\/\/ichijou\.org\/post\/show\/.+</urlpattern>
  3555. <searchpattern>"ID: image"</searchpattern>
  3556. </host>
  3557.  
  3558. <host id="iconaccess">
  3559. <urlpattern>^http:\/\/(?:www|photos)\.iconaccess\.com\/.+\/show\.php\?</urlpattern>
  3560. <searchpattern>"ID: thepic"</searchpattern>
  3561. </host>
  3562.  
  3563. <host id="iconosquare">
  3564. <urlpattern>^http:\/\/iconosquare\.com\/p\/\w+$</urlpattern>
  3565. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3566.     var retVal = {imgUrl: null, status: "ABORT"};
  3567.  
  3568.     var iUrl = pageData.match(/<meta property="og:image" content="([^"]+)" \/>/);
  3569.  
  3570.     if (iUrl) {
  3571.         retVal.imgUrl = iUrl[1].replace(/s(?=\..{3}$)/, "n");
  3572.         retVal.status = "OK";
  3573.         }
  3574.  
  3575.     return retVal;
  3576.     }]]></searchpattern>
  3577. </host>
  3578.  
  3579. <host id="idlebrain">
  3580. <urlpattern>^http:\/\/www\.idlebrain\.com\/.+?\/image\d+\.html</urlpattern>
  3581. <searchpattern>"img src=("|').+?\.jpe?g("|') border"</searchpattern>
  3582. </host>
  3583.  
  3584. <host id="iheartredheads">
  3585. <urlpattern>^http:\/\/www\.iheartredheads\.com\/.+\/gall\.php\?image=.+\..{3,4}$</urlpattern>
  3586. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3587.     var retVal = new Object();
  3588.    
  3589.     var iUrl = pageData.match(/<\/td>\s*<td>\s*<a href=[^>]+><img src="(.+?)"/);
  3590.  
  3591.     if (!iUrl) {
  3592.         retVal.imgUrl = null;
  3593.         retVal.status = "ABORT";
  3594.         }
  3595.     else {
  3596.         retVal.imgUrl = iUrl[1].replace(/&#45;/, "-");
  3597.         retVal.status = "OK";
  3598.         }
  3599.  
  3600.     return retVal;
  3601.     }]]></searchpattern>
  3602. </host>
  3603.  
  3604. <host id="iimmgg">
  3605. <urlpattern>^http:\/\/.+\.iimmgg\.com\/image\/\w+</urlpattern>
  3606. <searchpattern>"ID: laimagen"</searchpattern>
  3607. </host>
  3608.  
  3609. <host id="im9.eu" maxThreads="1">
  3610. <urlpattern>^http:\/\/im9\.eu\/picture\/.+?$</urlpattern>
  3611. <searchpattern>"http:\/\/p\.im9\.eu\/.+?"</searchpattern>
  3612. </host>
  3613.  
  3614. <host id="ima.gy">
  3615. <urlpattern>^https?:\/\/ima\.gy\/.+$</urlpattern>
  3616. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3617.     var req = new XMLHttpRequest();
  3618.     req.open("POST", pageUrl, false);
  3619.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  3620.     req.send("imgContinue=Continue+to+image+...+");
  3621.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(https?:\/\/[^/]+\/upload\/big\/.+?)\1/);
  3622.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  3623. }]]></searchpattern>
  3624. </host>
  3625.  
  3626. <host id="imaaage">
  3627. <urlpattern>^http:\/\/(?:www\.)?imaaage\.com\/view\/</urlpattern>
  3628. <searchpattern>"REPLACE: '\/view\/' , '/pics/'"</searchpattern>
  3629. </host>
  3630.  
  3631. <host id="image-bugs">
  3632. <urlpattern>^http:\/\/(?:www\.)?image-bugs\.com\/image\/\w+$</urlpattern>
  3633. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3634.     var iUrl = pageData.match(/<link rel="image_src" href="([^"]+)">/);
  3635.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"};
  3636. }]]></searchpattern>
  3637. </host>
  3638.  
  3639. <host id="image-heaven ">
  3640. <urlpattern>^http:\/\/image-heaven\.nl\/.*\/.*\.html$
  3641. </urlpattern>
  3642. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3643.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  3644.     var req = new XMLHttpRequest();
  3645.     req.open("POST", pageUrl, false);
  3646.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  3647.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  3648.     var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(img|i)\/[^/]+\/[-\w]+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\4/i);
  3649.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  3650. }
  3651. ]]></searchpattern>
  3652. </host>
  3653.  
  3654. <host id="image-host">
  3655. <urlpattern>http:\/\/www\.image-host\.com\/viewer\.php\?file=.+</urlpattern>
  3656. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)', 'images/$1'"</searchpattern>
  3657. </host>
  3658.  
  3659. <host id="image-hosting.1dollarporn">
  3660. <urlpattern>^http:\/\/www\.image-hosting\.1dollarporn\.org\/show-image\.php\?id=.+</urlpattern>
  3661. <searchpattern>"src='http:\\/\\/www\\.image-hosting\\.1dollarporn\\.org\\/pictures\\/.+?'"</searchpattern>
  3662. </host>
  3663.  
  3664. <host id="image-shared">
  3665. <urlpattern>^http:\/\/www\.image-shared\.com\/share.+\.html</urlpattern>
  3666. <searchpattern>"REPLACE: 'share-(.+)\\.html' , 'image-$1.jpg'"</searchpattern>
  3667. </host>
  3668.  
  3669. <host id="image.re">
  3670. <urlpattern>http://image.re/img-\w+</urlpattern>
  3671. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  3672. </host>
  3673.  
  3674. <host id="image24x7">
  3675. <urlpattern>^http:\/\/image24x7\.com\/[a-z\d]+$</urlpattern>
  3676. <searchpattern>"class="pic""</searchpattern>
  3677. </host>
  3678.  
  3679. <host id="imageadd">
  3680. <urlpattern>^http:\/\/imageadd\.com\/show\.php\/.+</urlpattern>
  3681. <searchpattern>"ID: img_obj"</searchpattern>
  3682. </host>
  3683.  
  3684. <host id="imagearn">
  3685. <urlpattern>^http:\/\/(?:www\.)?imagearn\.com\/\/?image</urlpattern>
  3686. <searchpattern>"ID: img"</searchpattern>
  3687. </host>
  3688.  
  3689. <host id="imagebam">
  3690. <urlpattern>^http:\/\/www\.imagebam\.com\/image\/[^&amp;]+$</urlpattern>
  3691. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3692.     var retVal = new Object();
  3693.  
  3694.     /* Patterns provided by Flo:
  3695.         http://([0-9]+).imagebam.com/download.php?ID=([0-9]+)&salt=([a-zA-Z0-9]{6})&sec=([a-zA-Z0-9]{6})&filesize=([0-9]+)&filename=(.*)
  3696.         http://([0-9]+).imagebam.com/download/([a-zA-Z0-9_-])/([0-9]+)/([0-9]+)/(.*)
  3697.     */
  3698.    
  3699.     var sPattern = pageData.match(/("|')(http:\/\/\d+\.imagebam\.com\/(?:download|dl)\.php\?ID=\d+&amp;salt=\w+&amp;sec=\w+&amp;filesize=\d+&amp;filename=.+?)\1/);
  3700.     if (!sPattern) sPattern = pageData.match(/("|')(http:\/\/\d+\.imagebam\.com\/download\/[^\/]+\/\d+\/\d+\/.+?)\1/);
  3701.  
  3702.     if (!sPattern) {
  3703.         retVal.imgUrl = null;
  3704.         retVal.status = "ABORT";
  3705.         }
  3706.     else {
  3707.         retVal.imgUrl = sPattern[2].replace(/&amp;/g, "&");
  3708.         retVal.status = "OK";
  3709.         var fname = sPattern[2].match(/filename=(.+\..{3,4})/);
  3710.         if (fname) retVal.fileName = fname[1];
  3711.        }
  3712.  
  3713.     return retVal;
  3714.     }]]></searchpattern>
  3715. </host>
  3716.  
  3717. <host id="imageban.net">
  3718. <urlpattern>^http:\/\/www\.imageban\.net\/show\/.+</urlpattern>
  3719. <searchpattern>"ID: img_obj"</searchpattern>
  3720. </host>
  3721.  
  3722. <host id="imageban.ru">
  3723. <urlpattern>http:\/\/imageban\.ru\/show\/.+</urlpattern>
  3724. <searchpattern>"ID: thepic"</searchpattern>
  3725. </host>
  3726.  
  3727. <host id="imagebanana">
  3728. <urlpattern>^http:\/\/www\.imagebanana\.com\/view\/.+\/.+</urlpattern>
  3729. <searchpattern>"http:\\/\\/www\\.imagebanana\\.com\\/img\\/.+\\/.+"</searchpattern>
  3730. </host>
  3731.  
  3732. <host id="imagebax">
  3733. <urlpattern>^http:\/\/(?:www\.)?imagebax\.com\/show\.php\/.+\.html</urlpattern>
  3734. <searchpattern>"ID: img_obj"</searchpattern>
  3735. </host>
  3736.  
  3737. <host id="imagebing">
  3738. <urlpattern>^http:\/\/img\d+\.imagebing\.com\/\d+\/</urlpattern>
  3739. <searchpattern>"ID: content_img"</searchpattern>
  3740. </host>
  3741.  
  3742. <host id="imageboom">
  3743. <urlpattern>^http:\/\/imageboom\.net\/img-[\da-f]+\.html$</urlpattern>
  3744. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  3745. </host>
  3746.  
  3747. <host id="imagebooty">
  3748. <urlpattern>^http:\/\/(?:www\.)?imagebooty\.com\/Display\.aspx\?id=</urlpattern>
  3749. <searchpattern>"ID: imgPicture"</searchpattern>
  3750. </host>
  3751.  
  3752. <host id="imageboss">
  3753. <urlpattern>^http:\/\/www\.imageboss\.net\/view\/img\/</urlpattern>
  3754. <searchpattern>"ID: thepic"</searchpattern>
  3755. </host>
  3756.  
  3757. <host id="imagebunk">
  3758. <urlpattern>^http:\/\/(?:www\.)?imagebunk\.com\/image\/</urlpattern>
  3759. <searchpattern>"id=img_obj"</searchpattern>
  3760. </host>
  3761.  
  3762. <host id="imagecamel">
  3763. <urlpattern>^http:\/\/www\.imagecamel\.com\/photos\/view\/</urlpattern>
  3764. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3765.     var retVal = new Object();
  3766.  
  3767.     var iUrl = pageData.match(/photo_display_box(?:.|\s)+?img\ssrc='(http:\/\/www\.imagecamel\.com\/users\/upload\/.+?)'/);
  3768.  
  3769.     if (!iUrl) {
  3770.         retVal.imgUrl = null;
  3771.         retVal.status = "ABORT";
  3772.         }
  3773.     else {
  3774.         retVal.imgUrl = iUrl[1];
  3775.         retVal.status = "OK";
  3776.         }
  3777.        
  3778.     return retVal;
  3779.     }]]></searchpattern>
  3780. </host>
  3781.  
  3782. <host id="imagecargo">
  3783. <urlpattern>^http:\/\/imagecargo\.com\/view\.php\?img=</urlpattern>
  3784. <searchpattern>"ID: img"</searchpattern>
  3785. </host>
  3786.  
  3787. <host id="imagecarry" maxThreads="3">
  3788. <urlpattern>^http:\/\/(?:www\.)?imagecarry\.com\/\w+\/[^.]+\..{3,4}\.html$</urlpattern>
  3789. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3790.    var retVal = {};
  3791.    
  3792.    var IDandName = pageUrl.match(/\/(\w+)\/([^.]+\..{3,4})\.html$/);
  3793.    var theID = IDandName[1];
  3794.    var fileName = IDandName[2];
  3795.    var SearchPatt = new RegExp("<img src=\"(.+?\/"+ theID +"\\..{3,4})\".+?>");
  3796.    var iUrl = pageData.match(SearchPatt);
  3797.    
  3798.    if (!iUrl) {
  3799.         retVal.imgUrl = null;
  3800.         retVal.status = "ABORT";
  3801.         }
  3802.    else {
  3803.         retVal.imgUrl = iUrl[1];
  3804.         retVal.fileName = fileName;
  3805.         retVal.status = "OK";
  3806.         }
  3807.    
  3808.    return retVal;
  3809.    }]]></searchpattern>
  3810. </host>
  3811.  
  3812. <host id="imagecherry">
  3813. <urlpattern>^http:\/\/imagecherry\.com\/.+?\/.+?\.html$</urlpattern>
  3814. <searchpattern>"http:\/\/imagecherry\.com\/cgi-bin\/dl\.cgi\/.+?\/.+?"</searchpattern>
  3815. </host>
  3816.  
  3817. <host id="imagechunk">
  3818. <urlpattern>^http:\/\/www\.imagechunk\.com\/viewer\.php\?file=.+</urlpattern>
  3819. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)' , 'images/$1'"</searchpattern>
  3820. </host>
  3821.  
  3822. <host id="imagecorn">
  3823. <urlpattern>^http:\/\/(?:www\.)?imagecorn\.com\/img-</urlpattern>
  3824. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3825.     var retVal = {};
  3826.    
  3827.     var req = new XMLHttpRequest();
  3828.     req.open("POST", pageUrl, false);
  3829.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  3830.     var postData = "imgContinue=Continue+to+image+...+";
  3831.     req.send(postData);
  3832.    
  3833.     var someData = req.responseText;
  3834.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  3835.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  3836.     if (!iUrl) {
  3837.         retVal.imgUrl = null;
  3838.         retVal.status = "ABORT";
  3839.         }
  3840.     else {
  3841.         retVal.imgUrl = iUrl[2];
  3842.         retVal.status = "OK";
  3843.         }
  3844.     return retVal;
  3845.     }]]></searchpattern>
  3846. </host>
  3847.  
  3848. <host id="imagedax">
  3849. <urlpattern>^http:\/\/(?:www\.)?imagedax\.net\/.+\.html$</urlpattern>
  3850. <searchpattern>"ID: \w+"</searchpattern>
  3851. </host>
  3852.  
  3853. <host id="imagedecode">
  3854. <urlpattern>^http:\/\/(www\.)?imagedecode\.com\/img-[\da-f]+\.html$</urlpattern>
  3855. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  3856. </host>
  3857.  
  3858. <host id="imagedemon">
  3859. <urlpattern>^https?:\/\/www\.imagedemon\.com\/image\.asp\?</urlpattern>
  3860. <searchpattern>"ID: thepic"</searchpattern>
  3861. </host>
  3862.  
  3863. <host id="imagedoza">
  3864. <urlpattern>http:\/\/imagedoza\.com\/.+\/i\/.+</urlpattern>
  3865. <searchpattern>"ID: im"</searchpattern>
  3866. </host>
  3867.  
  3868. <host id="imagedunk">
  3869. <urlpattern>^http:\/\/(?:www\.)?imagedunk\.com\/.+\.html</urlpattern>
  3870. <searchpattern>"imagedunk\.com\/i\/"</searchpattern>
  3871. </host>
  3872.  
  3873. <host id="imageeer">
  3874. <urlpattern>^http:\/\/imageeer\.com\/.+$</urlpattern>
  3875. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3876.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  3877.     var req = new XMLHttpRequest();
  3878.     req.open("POST", pageUrl, false);
  3879.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  3880.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  3881.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  3882.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  3883. }]]></searchpattern>
  3884. </host>
  3885.  
  3886. <host id="imageevent">
  3887. <urlpattern>^http:\/\/imageevent\.com\/.+\?p=</urlpattern>
  3888. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3889.     var retVal = new Object();
  3890.    
  3891.     var iUrl = pageData.match(/src="(http:\/\/photos\.imageevent\.com\/.+?)"/);
  3892.  
  3893.     if (!iUrl) {
  3894.         retVal.imgUrl = null;
  3895.         retVal.status = "ABORT";
  3896.         }
  3897.     else {
  3898.         retVal.imgUrl = iUrl[1].replace(/\/websize\//, "/");
  3899.         retVal.status = "OK";
  3900.         }
  3901.  
  3902.     return retVal;
  3903.     }]]></searchpattern>
  3904. </host>
  3905.  
  3906. <host id="imageevent2">
  3907. <urlpattern>^http:\/\/photos\.imageevent\.com\/.+</urlpattern>
  3908. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3909.     var retVal = new Object();
  3910.  
  3911.     retVal.imgUrl = pageUrl;
  3912.     retVal.status = "OK";
  3913.            
  3914.     return retVal;
  3915.     }]]></searchpattern>
  3916. </host>
  3917.  
  3918. <host id="imagefap">
  3919. <urlpattern>^http:\/\/(www\.|beta\.|admin\.)?imagefap\.com\/image\.php\?id=\d+&amp;.+</urlpattern>
  3920. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3921.     var retVal = new Object();
  3922.  
  3923.     if (pageData.match("I am over 18"))
  3924.         {
  3925.         alert("Please go manually verify with imagefap, making sure not to clear the cookies.");
  3926.         retVal.imgUrl = null;
  3927.         retVal.status = "ABORT";
  3928.         return retVal;
  3929.         }
  3930.    
  3931.     // this lD is some value in the imagefap source page that is coded in some fashion or another
  3932.     // this value is responsible for telling us where the image is located
  3933.     var lD = pageData.match(/return lD\(('|")(.+)\1\);/);
  3934.     if (lD) {
  3935.         lD = lD[2];
  3936.    
  3937.         // The following four lines comes from the imagefap source page (it's escaped, so you wouldn't
  3938.         // be able to find it by merely skimming through it)
  3939.         var s1=unescape(lD.substr(0,lD.length-1));
  3940.         var t='';
  3941.         for (var i=0;i<s1.length;i++) t+=String.fromCharCode(s1.charCodeAt(i)-lD.substr(lD.length-1,1));
  3942.         var the_url = unescape(t);
  3943.         }
  3944.     else {
  3945.         var the_url = pageData.match(/<img id="mainPhoto".+?src="(.+?)"/);
  3946.         if (the_url) the_url = the_url[1];
  3947.         }
  3948.  
  3949.     if(the_url) {
  3950.         if ( !(the_url.match(/\..{3,4}$/)) ) the_url = the_url + ".jpg";
  3951.         retVal.imgUrl = the_url;
  3952.         retVal.status = "OK";
  3953.        
  3954.         retVal.fileName = pageData.match(/<img id="mainPhoto".+?alt="[^-]+-\s+(.+?)"/);
  3955.         if (retVal.fileName) retVal.fileName = retVal.fileName[1];
  3956.         }
  3957.     else {
  3958.         retVal.imgUrl = null;
  3959.         retVal.status = "ABORT";
  3960.         }
  3961.  
  3962.     return retVal;
  3963.     }]]></searchpattern>
  3964. </host>
  3965.  
  3966. <host id="imageflare">
  3967. <urlpattern>^https?:\/\/(?:www\.)imageflare\.com\/.+?$</urlpattern>
  3968. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3969.     var iUrl = pageData.match(/img src="(.+?)"/);
  3970.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  3971. }]]></searchpattern>
  3972. </host>
  3973.  
  3974. <host id="imageflea">
  3975. <urlpattern>^http:\/\/(?:www\.)?imageflea\.com\/.+\/gallery\/.+\/.*\/\?p=.+</urlpattern>
  3976. <searchpattern>"\\/pics\\/\\d+/.+"</searchpattern>
  3977. </host>
  3978.  
  3979. <host id="imagefly">
  3980. <urlpattern>^http:\/\/ifs[0-9]+\.imagefly\.info\/</urlpattern>
  3981. <searchpattern>"Image might be resized to fit the screen, Click on the image for LiveResize"</searchpattern>
  3982. </host>
  3983.  
  3984. <host id="imagefoco">
  3985. <urlpattern>^http:\/\/img\d+\.imagefoco\.com\/img\.php</urlpattern>
  3986. <searchpattern>"ID: img"</searchpattern>
  3987. </host>
  3988.  
  3989. <host id="imagefolks" maxThreads="2">
  3990. <urlpattern>^http:\/\/(?:www\.)?imagefolks\.com\/img-</urlpattern>
  3991. <searchpattern><![CDATA[function(pageData, pageUrl) {
  3992.     var retVal = {};
  3993.    
  3994.     var req = new XMLHttpRequest();
  3995.     req.open("POST", pageUrl, false);
  3996.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  3997.     var postData = "imgContinue=Continue+to+image+...+";
  3998.     req.send(postData);
  3999.    
  4000.     var someData = req.responseText;
  4001.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4002.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4003.     if (!iUrl) {
  4004.         retVal.imgUrl = null;
  4005.         retVal.status = "ABORT";
  4006.         }
  4007.     else {
  4008.         retVal.imgUrl = iUrl[2];
  4009.         retVal.status = "OK";
  4010.         }
  4011.     return retVal;
  4012.     }]]></searchpattern>
  4013. </host>
  4014.  
  4015. <host id="imagehaven">
  4016. <urlpattern>^http:\/\/\w+\d+\.imagehaven\.net\/img\.php\?</urlpattern>
  4017. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4018.     var retVal = new Object();
  4019.  
  4020.     if (pageData.match(/Continue To Your Image/)) {
  4021.         retVal.imgUrl = pageUrl;
  4022.         retVal.status = "REQUEUE";
  4023.         }
  4024.     else {
  4025.         var theId = "image";
  4026.         var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  4027.         var tmpMatch = pageData.match(searchPat);
  4028.         if (tmpMatch) {
  4029.             tmpMatch = tmpMatch[0];
  4030.             var iUrl = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  4031.             if (iUrl) iUrl = iUrl[2];
  4032.             }
  4033.  
  4034.         if (!iUrl) {
  4035.             retVal.imgUrl = null;
  4036.             retVal.status = "ABORT";
  4037.             }
  4038.         else {
  4039.             retVal.imgUrl = iUrl;
  4040.             retVal.status = "OK";
  4041.             }
  4042.         }      
  4043.  
  4044.     return retVal;
  4045.     }]]></searchpattern>
  4046. </host>
  4047.  
  4048. <host id="imageheli">
  4049. <urlpattern>^http:\/\/imageheli\.com\/img-\w+\.jpg$
  4050. </urlpattern>
  4051. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4052.      var retVal = {imgUrl: null, status: "ABORT"};
  4053.  
  4054.      var req = new XMLHttpRequest();
  4055.      req.open("POST", pageUrl, false);
  4056.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4057.      req.send("");
  4058.  
  4059.      var someData = req.responseText;
  4060.      iUrl = someData.match(/<img.+?id="image".+?>/g).toString();
  4061.  
  4062.      if (iUrl) {
  4063.          retVal.imgUrl = iUrl.match(/src="([^"]+)"/)[1];
  4064.          retVal.fileName = someData.match(/<b>(\w+\.jpg)<\/b>/)[1];
  4065.          retVal.status = "OK";
  4066.      }
  4067.  
  4068.      return retVal;
  4069. }]]></searchpattern>
  4070. </host>
  4071.  
  4072. <host id="imagehigh">
  4073. <urlpattern>^https?:\/\/(?:.*\.)?imagehigh\.com\/view\.php\?(.*&amp;)?id=.+$</urlpattern>
  4074. <searchpattern>"ID: thepic"</searchpattern>
  4075. </host>
  4076.  
  4077. <host id="imagehost">
  4078. <urlpattern>^http:\/\/\w+\.imagehost\.org\/view\/</urlpattern>
  4079. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4080.     var retVal = new Object();
  4081.  
  4082.     var iUrl = pageData.match(/ajax_request\.open\("POST","(.+?)"/);
  4083.  
  4084.     if (!iUrl) {
  4085.         iUrl = pageData.match(/<img src="(.+?)".+?id="image"/);
  4086.         if (!iUrl) {
  4087.             retVal.imgUrl = null;
  4088.             retVal.status = "ABORT";
  4089.             }
  4090.         else {
  4091.             retVal.imgUrl = iUrl[1];
  4092.             retVal.status = "OK";      
  4093.             }
  4094.         }
  4095.     else {
  4096.         retVal.imgUrl = iUrl[1];
  4097.         retVal.status = "REQUEUE";
  4098.         }
  4099.        
  4100.     return retVal;
  4101.     }]]></searchpattern>
  4102. </host>
  4103.  
  4104. <host id="imagehost.li">
  4105. <urlpattern>http:\/\/www\.imagehost\.li\/viewer\.php\?file=.+</urlpattern>
  4106. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)', 'images/$1'"</searchpattern>
  4107. </host>
  4108.  
  4109. <host id="imagehost2">
  4110. <urlpattern>^http:\/\/\w+\.imagehost\.org\/ajax\/</urlpattern>
  4111. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4112.     var retVal = new Object();
  4113.  
  4114.     var iUrl = pageData.match(/<json>(.+)<\/json>/);
  4115.     iUrl = unescape(iUrl[1]);
  4116.     iUrl = iUrl.match(/"(.+)"/);
  4117.     iUrl = iUrl[1].replace(/\\/gi, "");
  4118.  
  4119.     if (!iUrl) {
  4120.         retVal.imgUrl = null;
  4121.         retVal.status = "ABORT";
  4122.         }
  4123.     else {
  4124.         retVal.imgUrl = iUrl;
  4125.         retVal.status = "OK";
  4126.         }
  4127.        
  4128.     return retVal;
  4129.     }]]></searchpattern>
  4130. </host>
  4131.  
  4132. <host id="imagehosting.gr">
  4133. <urlpattern>^http:\/\/(?:\w+\.)?imagehosting\.gr\/(?:show|view)\.php\/</urlpattern>
  4134. <searchpattern>"id=img_obj"</searchpattern>
  4135. </host>
  4136.  
  4137. <host id="imagehosting.gr2">
  4138. <urlpattern>http:\/\/www\.imagehosting\.gr\/view\.php\/.+</urlpattern>
  4139. <searchpattern>"ID: img_obj"</searchpattern>
  4140. </host>
  4141.  
  4142. <host id="imagehosting.pro">
  4143. <urlpattern>^http:\/\/imagehosting\.pro\/img-.+?\.html$</urlpattern>
  4144. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4145.     var req = new XMLHttpRequest();
  4146.     req.open("POST", pageUrl, false);
  4147.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4148.     req.send("");
  4149.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4150.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4151. }]]></searchpattern>
  4152. </host>
  4153.  
  4154. <host id="imagehot.co.cc">
  4155. <urlpattern>^http:\/\/(?:www\.)?imagehot\.co\.cc\/viewer\.php\?file=.+</urlpattern>
  4156. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)' , 'images/$1'"</searchpattern>
  4157. </host>
  4158.  
  4159. <host id="imagehyper">
  4160. <urlpattern>^http:\/\/img\d+\.imagehyper\.com\/img\.php\?id=</urlpattern>
  4161. <searchpattern>"http:\/\/img\d+\.imagehyper\.com\/img\/"</searchpattern>
  4162. </host>
  4163.  
  4164. <host id="imagejumbo" maxThreads="2">
  4165. <urlpattern>^http:\/\/(?:www\.)?imagejumbo\.com\/.+\.html</urlpattern>
  4166. <searchpattern>"class="pic""</searchpattern>
  4167. </host>
  4168.  
  4169. <host id="imagenimage">
  4170. <urlpattern>^http:\/\/imagenimage\.com\/[a-z\d]+\/[a-z\d_-]+\.jpe?g(?:\.html)?$</urlpattern>
  4171. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4172.      var retVal = {imgUrl: null, status: "ABORT"};
  4173.  
  4174.      var iUrl = pageData.match(/<img[^>]+?class="pic"[^>]+>/);
  4175.  
  4176.      if (iUrl) {
  4177.          retVal.imgUrl = iUrl.toString().match(/src="([^"]+)"/)[1];
  4178.          tmp = iUrl.toString().match(/alt="([^"]+)"/);
  4179.          if (tmp && tmp[1] != "") retVal.fileName = tmp[1];
  4180.          retVal.status = "OK";
  4181.          }
  4182.  
  4183.      return retVal;
  4184. }]]></searchpattern>
  4185. </host>
  4186.  
  4187. <host id="imagenup">
  4188. <urlpattern>^http:\/\/imagenup\.com\/image\/\w+$</urlpattern>
  4189. <searchpattern>"ID: full_image"</searchpattern>
  4190. </host>
  4191.  
  4192. <host id="imageon">
  4193. <urlpattern>http:\/\/imageon\.org\/img-</urlpattern>
  4194. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4195.   var req = new XMLHttpRequest();
  4196.   req.open("POST", pageUrl, false);
  4197.   req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4198.   req.send("imgContinue=CLICK HERE CONTINUE TO IMAGE ");
  4199.   var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4200.   return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4201. }]]></searchpattern>
  4202. </host>
  4203.  
  4204. <host id="imageontime">
  4205. <urlpattern>^http:\/\/(?:www\.)?imageontime\.(?:com|org)\/img-[\da-f]+\.html$</urlpattern>
  4206. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  4207. </host>
  4208.  
  4209. <host id="imagepad">
  4210. <urlpattern>^http:\/\/(?:www\.)?imagepad\.us\/.+\/.+\..{3,4}</urlpattern>
  4211. <searchpattern>"onLoad="scaleImg"</searchpattern>
  4212. </host>
  4213.  
  4214. <host id="imagepicsa">
  4215. <urlpattern>^http:\/\/(?:www\.)?imagepicsa\.com\/img-</urlpattern>
  4216. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4217.     var retVal = {};
  4218.    
  4219.     var req = new XMLHttpRequest();
  4220.     req.open("POST", pageUrl, false);
  4221.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4222.     var postData = "imgContinue=Continue+to+image+...+";
  4223.     req.send(postData);
  4224.    
  4225.     var someData = req.responseText;
  4226.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4227.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4228.     if (!iUrl) {
  4229.         retVal.imgUrl = null;
  4230.         retVal.status = "ABORT";
  4231.         }
  4232.     else {
  4233.         retVal.imgUrl = iUrl[2];
  4234.         retVal.status = "OK";
  4235.         }
  4236.     return retVal;
  4237.     }]]></searchpattern>
  4238. </host>
  4239.  
  4240. <host id="imagepix">
  4241. <urlpattern>http:\/\/imagepix\.org\/image\/.+</urlpattern>
  4242. <searchpattern>"REPLACE: 'image\\/(.+)\\.html','full/$1.jpg'"</searchpattern>
  4243. </host>
  4244.  
  4245. <host id="imageporter">
  4246. <urlpattern>^http:\/\/(?:www\.)?imageporter\.com\/.+\/.+\..{3,4}$</urlpattern>
  4247. <searchpattern>"http:\/\/img\d+\.imageporter\.com\/.+\/(?:.(?!_t\.))+\..{3,4}"</searchpattern>
  4248. </host>
  4249.  
  4250. <host id="imagereverb">
  4251. <urlpattern>^http:\/\/www\.imagereverb\.com\/adult\/showimage\.php\?</urlpattern>
  4252. <searchpattern>"ID: picture"</searchpattern>
  4253. </host>
  4254.  
  4255. <host id="imagerise">
  4256. <urlpattern>http:\/\/www\.imagerise\.com\/(show|view)\.php\/.+</urlpattern>
  4257. <searchpattern>"ID: img_obj"</searchpattern>
  4258. </host>
  4259.  
  4260. <host id="images-box">
  4261. <urlpattern>^http:\/\/www\.images-box\.com\/g-\w+\.html$</urlpattern>
  4262. <searchpattern>".+gallerie\\/uploads\\/.+"</searchpattern>
  4263. </host>
  4264.  
  4265. <host id="imagesaholic">
  4266. <urlpattern>^http:\/\/www\.imagesaholic\.com\/\?v=\w+\.jpg$</urlpattern>
  4267. <searchpattern>"id="full_image""</searchpattern>
  4268. </host>
  4269.  
  4270. <host id="imageshack">
  4271. <urlpattern>^http:\/\/(?:img\d+\.|www\.)?imageshack\.us\/(?:(?:i\/|photo\/|my\.php\?)|(?:img\d+\/.+\/.+))</urlpattern>
  4272. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4273.     var retVal = new Object();
  4274.     var assCleaner = pageData.match(/var url_image_path = '(.+)';\s*/);  
  4275.     if (!assCleaner) {
  4276.         assCleaner = pageData.match(/<link.+rel=('|")image_src\1.+href=('|")(.+?)\2.+>/);
  4277.         if (!assCleaner) assCleaner = pageData.match(/<img.+id=('|")main_image\1.+src=('|")(.+?)\2.+>/);
  4278.         if (!assCleaner) {
  4279.             retVal.imgUrl = null;
  4280.             retVal.status = "ABORT";
  4281.             }
  4282.         else {
  4283.             retVal.imgUrl = assCleaner[3];
  4284.             retVal.status = "OK";
  4285.             }
  4286.         }
  4287.     else {
  4288.         retVal.imgUrl = pageUrl.match(/http:\/\/img\d+.imageshack.us\//) + assCleaner[1];
  4289.         retVal.status = "OK";
  4290.         }
  4291.     return retVal;
  4292.     }]]></searchpattern>
  4293. </host>
  4294.  
  4295. <host id="imageshappy">
  4296. <urlpattern>^http:\/\/imageshappy\.com\/viewer\.php\?id=.+</urlpattern>
  4297. <searchpattern>"\\.\\/images\\/.+\\...."</searchpattern>
  4298. </host>
  4299.  
  4300. <host id="imageshimage" maxThreads="3">
  4301. <urlpattern>^http:\/\/(?:www\.)?imageshimage\.com\/\w+\/[^.]+\..{3,4}\.html$</urlpattern>
  4302. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4303.    var retVal = {};
  4304.    
  4305.    var IDandName = pageUrl.match(/\/(\w+)\/([^.]+\..{3,4})\.html$/);
  4306.    var theID = IDandName[1];
  4307.    var fileName = IDandName[2];
  4308.    var SearchPatt = new RegExp("<img src=\"(.+?\/"+ theID +"\\..{3,4})\".+?>");
  4309.    var iUrl = pageData.match(SearchPatt);
  4310.    
  4311.    if (!iUrl) {
  4312.         retVal.imgUrl = null;
  4313.         retVal.status = "ABORT";
  4314.         }
  4315.    else {
  4316.         retVal.imgUrl = iUrl[1];
  4317.         retVal.fileName = fileName;
  4318.         retVal.status = "OK";
  4319.         }
  4320.    
  4321.    return retVal;
  4322.    }]]></searchpattern>
  4323. </host>
  4324.  
  4325. <host id="imageshock">
  4326. <urlpattern>^http:\/\/imageshock\.eu</urlpattern>
  4327. <searchpattern>"REPLACE: '\\/\\?img=' , '/img/'"</searchpattern>
  4328. </host>
  4329.  
  4330. <host id="imageshost.ru">
  4331. <urlpattern>http:\/\/imageshost\.ru\/links\/.+</urlpattern>
  4332. <searchpattern>"http:\\/\\/img[0-9]+\\.imageshost\\.ru\\/imgs\\/[0-9]+\\/.+\\/.+\\.jpg"</searchpattern>
  4333. </host>
  4334.  
  4335. <host id="imageshot">
  4336. <urlpattern>http:\/\/imageshot\.eu\/image\/.+</urlpattern>
  4337. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4338.     var iUrl = pageData.match(/src="(.+?\/images\/((?!system).).+?)md\.(.+?)"/);
  4339.     return iUrl ? {imgUrl: iUrl[1] + iUrl[3], status: "OK"} : {imgUrl: null, status: "ABORT"};
  4340. }]]></searchpattern>
  4341. </host>
  4342.  
  4343. <host id="imagesion">
  4344. <urlpattern>^http:\/\/(?:www\.)?imagesion\.com\/.*\?v=</urlpattern>
  4345. <searchpattern>"ID: full_image"</searchpattern>
  4346. </host>
  4347.  
  4348. <host id="imagesocket">
  4349. <urlpattern>^http:\/\/imagesocket\.com\/view\/.+</urlpattern>
  4350. <searchpattern>"http:\\/\\/content\\.imagesocket\\.com\\/images\\/.+"</searchpattern>
  4351. </host>
  4352.  
  4353. <host id="imagesplace">
  4354. <urlpattern>^http:\/\/www\.imagesplace\.net\/gallery\.php</urlpattern>
  4355. <searchpattern>"ID: thepic"</searchpattern>
  4356. </host>
  4357.  
  4358. <host id="imageteam">
  4359. <urlpattern>^http:\/\/imageteam\.org\/img-\w+\.html$</urlpattern>
  4360. <searchpattern>"class='centred(_resized)?'"</searchpattern>
  4361. </host>
  4362.  
  4363. <host id="imagetitan">
  4364. <urlpattern>http:\/\/img\d+\.imagetitan\.com\/img\.php\?image=.+</urlpattern>
  4365. <searchpattern>"ID: image"</searchpattern>
  4366. </host>
  4367.  
  4368. <host id="imagetrum">
  4369. <urlpattern>^http:\/\/imagetrum\.com\/.+$</urlpattern>
  4370. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4371.     var req = new XMLHttpRequest();
  4372.     req.open("POST", pageUrl, false);
  4373.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4374.     req.send("imgContinue=Continue+to+image+...+");
  4375.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4376.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4377. }]]></searchpattern>
  4378. </host>
  4379.  
  4380. <host id="imagetwist">
  4381. <urlpattern>http:\/\/imagetwist\.com\/.+\/.+</urlpattern>
  4382. <searchpattern>"class="pic""</searchpattern>
  4383. </host>
  4384.  
  4385. <host id="imageupper">
  4386. <urlpattern>^http:\/\/imageupper\.com\/g?i\/\?.+</urlpattern>
  4387. <searchpattern>"ID: img"</searchpattern>
  4388. </host>
  4389.  
  4390. <host id="imagevader">
  4391. <urlpattern>http:\/\/(?:www\.)?imagevader\.com\/show\.php\?img=.+</urlpattern>
  4392. <searchpattern>"ID: img_obj"</searchpattern>
  4393. </host>
  4394.  
  4395. <host id="imagevenue">
  4396. <urlpattern>^https?:\/\/img[0-9]+\.imagevenue\.com\/(img|view)\.php\?(.*&amp;)?image=</urlpattern>
  4397. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4398.     var retVal = new Object();
  4399.  
  4400.     if (pageData.match(/View Image/)) {
  4401.         retVal.imgUrl = pageUrl + '&i=1';
  4402.         retVal.status = "RETRY";
  4403.         }
  4404.     else if (pageData.match(/This image does not exist on this server/)) {
  4405.         retVal.imgUrl = null;
  4406.         retVal.status = "ABORT";
  4407.         }
  4408.     else {
  4409.         // use the following 4 lines if you are using the id attribute to find the image source.
  4410.         // just modify the "theId" variable to reflect the proper ID
  4411.         var theId = "thepic";
  4412.  
  4413.         var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1(?:.|\\s)+?>");
  4414.         var tmpMatch = pageData.match(searchPat);
  4415.         if (tmpMatch) {
  4416.             tmpMatch = tmpMatch[0];
  4417.             var the_url = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/i);
  4418.             if (the_url) the_url = the_url[2];
  4419.             }
  4420.  
  4421.         if (!the_url) {
  4422.             retVal.imgUrl = null;
  4423.             retVal.status = "RETRY";
  4424.             }
  4425.         else {
  4426.             retVal.imgUrl = the_url;
  4427.             retVal.status = "OK";
  4428.             }
  4429.         }
  4430.  
  4431.     return retVal;
  4432.     }]]></searchpattern>
  4433. </host>
  4434.  
  4435. <host id="imagewaste">
  4436. <urlpattern>^http:\/\/www\.imagewaste\.com\/(ih\/)?pictures\/</urlpattern>
  4437. <searchpattern>"\\/pictures\\/big\\/"</searchpattern>
  4438. </host>
  4439.  
  4440. <host id="imagewaste2">
  4441. <urlpattern>^http:\/\/imagewaste\.com\/gallery\.php\?entry=images.+</urlpattern>
  4442. <searchpattern>"REPLACE: 'gallery\\.php\\?entry=images' , 'images'"</searchpattern>
  4443. </host>
  4444.  
  4445. <host id="imageweb">
  4446. <urlpattern>^https?:\/\/www\.imageweb\.ws\/.+?\/\d+\.html</urlpattern>
  4447. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4448.     var iUrl = pageData.match(/href="(\/media\/.+?)".+?title="(.+?)"/);
  4449.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[2].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  4450. }]]></searchpattern>
  4451. </host>
  4452.  
  4453. <host id="imagezilla">
  4454. <urlpattern>^http:\/\/imagezilla\.net\/show\/.+</urlpattern>
  4455. <searchpattern>"ID: photo"</searchpattern>
  4456. </host>
  4457.  
  4458. <host id="imagezog">
  4459. <urlpattern>^http:\/\/imagezog\.com\/pin\/\d+</urlpattern>
  4460. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4461.     var iUrl = pageData.match(/img class="event-gallery-change-onclick".+?data-original="(.+?)"/);
  4462.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[1].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  4463. }]]></searchpattern>
  4464. </host>
  4465.  
  4466. <host id="imagezza">
  4467. <urlpattern>http:\/\/www\.imagezza\.com\/viewer\.php\?file=.+</urlpattern>
  4468. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  4469. </host>
  4470.  
  4471. <host id="imdb">
  4472. <urlpattern>http:\/\/www.imdb.com\/.+\/mediaindex\/.+\/media\/.+\/.+</urlpattern>
  4473. <searchpattern>"ID: primary-img"</searchpattern>
  4474. </host>
  4475.  
  4476. <host id="img-pay">
  4477. <urlpattern>^http:\/\/img-pay\.com\/img-.+?.html</urlpattern>
  4478. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4479.     var req = new XMLHttpRequest();
  4480.     req.open("POST", pageUrl, false);
  4481.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4482.     req.send("imgContinue=Continue+to+Image+...+");
  4483.    
  4484.     var iUrl = (req.responseText).match(/img class='centred(_resized)?' src='(.+?)' alt='.+?'/i);
  4485.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[2].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  4486. }]]></searchpattern>
  4487. </host>
  4488.  
  4489. <host id="img-zone">
  4490. <urlpattern>http:\/\/img-zone\.com\/img-</urlpattern>
  4491. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4492.     var req = new XMLHttpRequest();
  4493.     req.open("POST", pageUrl, false);
  4494.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4495.     req.send("imgContinue=Continue+to+image+...+");
  4496.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/upload\/big\/.+\.jpe?g)\1/i);
  4497.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4498. }]]></searchpattern>
  4499. </host>
  4500.  
  4501. <host id="img.ns4w.org">
  4502. <urlpattern>^http:\/\/img\.ns4w\.org\/show\.php\/.+\.html$</urlpattern>
  4503. <searchpattern>"ID: img_obj"</searchpattern>
  4504. </host>
  4505.  
  4506. <host id="img.yt">
  4507. <urlpattern>^https?:\/\/img\.yt\/img-[\da-f]+\.html$</urlpattern>
  4508. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4509.     var prot = pageUrl.match(/^(.+?)(:\/\/.+)/);
  4510.     var sec = "https" + prot[2];
  4511.     var req = new XMLHttpRequest();
  4512.     req.open("POST", sec, false);
  4513.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4514.     req.send("imgContinue=Continue+to+image+...+");
  4515.     var iUrl = (req.responseText).match(/href=('|")(https?:\/\/[^/]+\/upload\/big\/.+?)(\.jpe?g)\1 title=('|")(\w.+?)\4/i);    
  4516.     if (!iUrl){
  4517.         iUrl = (req.responseText).match(/href=('|")(https?:\/\/[^/]+\/upload\/big\/.+?)(\.jpe?g)\1/i);     
  4518.         return iUrl ? {imgUrl: iUrl[2]+iUrl[3], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4519.         }
  4520.     return (iUrl[5]) ? {imgUrl: iUrl[2]+iUrl[3], fileName: iUrl[5]+iUrl[3].replace(/\.jpe?g/i,".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  4521. }]]></searchpattern>
  4522. </host>
  4523.  
  4524. <host id="img4all">
  4525. <urlpattern>^http:\/\/img4all\.org\/img-[\da-f]+\.html$</urlpattern>
  4526. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4527.     var req = new XMLHttpRequest();
  4528.     req.open("POST", pageUrl, false);
  4529.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4530.     req.send("imgContinue=Continue to image ... ");
  4531.     var responseData = req.responseText;
  4532.     var iUrl= responseData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4533.     return (iUrl) ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"};
  4534. }]]></searchpattern>
  4535. </host>
  4536.  
  4537. <host id="img4ever">
  4538. <urlpattern>^http:\/\/img4ever\.net\/img-[\da-f]+\.html$</urlpattern>
  4539. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  4540. </host>
  4541.  
  4542. <host id="imgadult">
  4543. <urlpattern>^https?:\/\/(?:www\.)?imgadult\.com\/.+\.html$</urlpattern>
  4544. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  4545.     var iUrl = pageData.match(/src=('|")(https?:\/\/[^/]+\/upload\/big\/.+?)\1/);  
  4546.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4547. }]]></searchpattern>
  4548. </host>
  4549.  
  4550. <host id="imgah">
  4551. <urlpattern>^http:\/\/(?:www\.)?imgah\.com\/.+\..{3,4}$</urlpattern>
  4552. <searchpattern>"class="pic""</searchpattern>
  4553. </host>
  4554.  
  4555. <host id="imgallery">
  4556. <urlpattern>http:\/\/www\.imgallery\.ml\/img\/imgtwistgo\.php</urlpattern>
  4557. <searchpattern>"ID: thepic"</searchpattern>
  4558. </host>
  4559.  
  4560. <host id="imgbabes" maxThreads="2">
  4561. <urlpattern>^http:\/\/((?:www)?|t1)\.imgbabes\.com\/.+\.html</urlpattern>
  4562. <searchpattern>"class="pic""</searchpattern>
  4563. </host>
  4564.  
  4565. <host id="imgbanana">
  4566. <urlpattern>^http:\/\/imgbanana\.com\/viewer\.php\?file=.+?\.jpg$</urlpattern>
  4567. <searchpattern>"REPLACE: '\/viewer\.php\?file=', '/images/'"</searchpattern>
  4568. </host>
  4569.  
  4570. <host id="imgbb">
  4571. <urlpattern>^http:\/\/imgbb\.net\/v-[\w]+\.(jpe?g|html)$</urlpattern>
  4572. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4573.     var req = new XMLHttpRequest();
  4574.     req.open("POST", pageUrl.replace(/_.+$/,''), false);
  4575.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4576.     req.send("imgContinue=Continue to image ... ");
  4577.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/[^]+?)\1/);
  4578.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4579. }]]></searchpattern>
  4580. </host>
  4581.  
  4582. <host id="imgbeer">
  4583. <urlpattern>^http:\/\/(?:www\.)?imgbeer\.com\/img-[\da-f]+\.html$</urlpattern>
  4584. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4585.     var retVal = {};
  4586.    
  4587.     var req = new XMLHttpRequest();
  4588.     req.open("POST", pageUrl, false);
  4589.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4590.     var postData = "imgContinue=Continue+to+image+...+";
  4591.     req.send(postData);
  4592.    
  4593.     var someData = req.responseText;
  4594.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4595.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4596.     if (!iUrl) {
  4597.         retVal.imgUrl = null;
  4598.         retVal.status = "ABORT";
  4599.         }
  4600.     else {
  4601.         retVal.imgUrl = iUrl[2];
  4602.         retVal.status = "OK";
  4603.         }
  4604.     return retVal;
  4605. }
  4606. ]]></searchpattern>
  4607. </host>
  4608.  
  4609. <host id="imgbloom">
  4610. <urlpattern>^http:\/\/imgbloom\.com\/img-.+\.html</urlpattern>
  4611. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4612.     var PostData = pageData.match(/(?=<Form\b)(.|$|\r|\n)+<\/Form>/i)[0].match(/<input.+?\/?>/g);
  4613.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  4614.    
  4615.     var req = new XMLHttpRequest();
  4616.     req.open("POST", pageUrl, false);
  4617.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4618.     req.send(PostData);
  4619.    
  4620.     var iUrl = (req.responseText).match(/img(?= ).+?src=('|")(http:\/\/.+?big.+?)\1/i);
  4621.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4622. }]]></searchpattern>
  4623. </host>
  4624.  
  4625. <host id="imgbox">
  4626. <urlpattern>http:\/\/imgbox\.com\/\w+</urlpattern>
  4627. <searchpattern>"REPLACE: '(http:\/\/)(imgbox\.com\/\w+)', '$1i.$2'"</searchpattern>
  4628. </host>
  4629.  
  4630. <host id="imgcandy">
  4631. <urlpattern>^http:\/\/(?:www\.)?imgcandy\.net\/img-.+\.html$</urlpattern>
  4632. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4633.     var eUrl = pageUrl.substr(pageUrl.indexOf('_',pageUrl.indexOf('_'))+1,pageUrl.length);
  4634.     var name = eUrl.match(/(.+?)\.jpg/i)
  4635.     var req = new XMLHttpRequest();
  4636.     req.open("POST", pageUrl, false);
  4637.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4638.     req.send("imgContinue=Continue+to+image+...+");
  4639.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4640.     return iUrl ? {imgUrl: iUrl[2], fileName: name[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4641. }]]></searchpattern>
  4642. </host>
  4643.  
  4644. <host id="imgcelebs">
  4645. <urlpattern>^http:\/\/(?:www\.)?imgcelebs\.info\/pics\/\w+$</urlpattern>
  4646. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4647.     var retVal = {imgUrl: null, status: "ABORT"};
  4648.    
  4649.     var iUrl = pageData.match(/<a href="([^"]+)">Continue to your image<\/a>/);
  4650.    
  4651.     if (iUrl) {
  4652.         retVal.imgUrl = iUrl[1];
  4653.         retVal.status = "REQUEUE";
  4654.         }
  4655.    
  4656.     return retVal;
  4657.     }]]></searchpattern>
  4658. </host>
  4659.  
  4660. <host id="imgchili">
  4661. <urlpattern>^http:\/\/imgchili\.com\/show\/</urlpattern>
  4662. <searchpattern>"ID: show_image"</searchpattern>
  4663. </host>
  4664.  
  4665. <host id="imgchili.com">
  4666. <urlpattern>^http:\/\/imgchili\.com\/show\/</urlpattern>
  4667. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4668.     return {imgUrl: pageUrl.replace(/com/, "net"), status: "REQUEUE"};
  4669. }]]></searchpattern>
  4670. </host>
  4671.  
  4672. <host id="imgclick">
  4673. <urlpattern>^https?:\/\/imgclick\.net\/.+\.html$</urlpattern>
  4674. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4675.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  4676.     var req = new XMLHttpRequest();
  4677.     req.open("POST", pageUrl, false);
  4678.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4679.     req.send("op=view&id="+id[1]+"&pre=1&adb=1&next=Continue to image...");
  4680.     var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(img|i)\/[^/]+\/[-\w]+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\4/i);
  4681.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  4682. }]]></searchpattern>
  4683. </host>
  4684.  
  4685. <host id="imgcloud">
  4686. <urlpattern>^http:\/\/(?:www\.)?imgcloud\.co\/img-</urlpattern>
  4687. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4688.     var retVal = {imgUrl: null, status: "ABORT"};
  4689.    
  4690.     var req = new XMLHttpRequest();
  4691.     req.open("POST", pageUrl, false);
  4692.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4693.     var postData = "imgContinue=Continue+to+image+...+";
  4694.     req.send(postData);
  4695.    
  4696.     var someData = req.responseText;
  4697.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4698.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4699.     if (iUrl) {
  4700.         retVal.imgUrl = iUrl[2];
  4701.         retVal.status = "OK";
  4702.     }
  4703.    
  4704. return retVal;
  4705. }]]></searchpattern>
  4706. </host>
  4707.  
  4708. <host id="imgcredit">
  4709. <urlpattern>^http:\/\/(?:sr\d+\.)?imgcredit\.xyz\/.+$</urlpattern>
  4710. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  4711.     var iUrl = pageData.match(/src=('|")(https?:\/\/[^/]+\/upload\/big\/.+?)\1/);  
  4712.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4713. }]]></searchpattern>
  4714. </host>
  4715.  
  4716. <host id="imgdap">
  4717. <urlpattern>^http:\/\/imgdap\.com\/\w+\/[\w-]+\.jpe?g\.html$</urlpattern>
  4718. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4719.      var retVal = {imgUrl: null, status: "ABORT"};
  4720.      var iUrl = null;
  4721.  
  4722.      var id = pageUrl.match(/(\w+)\/[\w-]+\.jpe?g\.html$/i);
  4723.  
  4724.      if (id) {
  4725.          var req = new XMLHttpRequest();
  4726.          req.open("POST", pageUrl, false);
  4727.          req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4728.          req.send("op=view&id="+ id[1] +"&pre=1&next=Continue to image...");
  4729.  
  4730.          var someData = req.responseText;
  4731.          iUrl= someData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/img\/.+?\.jpe?g)\1/);
  4732.          if (iUrl) {
  4733.              retVal.imgUrl = iUrl[2];
  4734.              retVal.status = "OK";
  4735.              }
  4736.          }
  4737.      return retVal;
  4738.      }]]></searchpattern>
  4739. </host>
  4740.  
  4741. <host id="imgdepot">
  4742. <urlpattern>^http:\/\/imgdepot\.org\/show\/.+</urlpattern>
  4743. <searchpattern>"REPLACE: '\/show\/' , '/images/'"</searchpattern>
  4744. </host>
  4745.  
  4746. <host id="imgdevil">
  4747. <urlpattern>http:\/\/imgdevil\.com\/img-</urlpattern>
  4748. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4749.     var req = new XMLHttpRequest();
  4750.     req.open("POST", pageUrl, false);
  4751.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4752.     req.send("imgContinue=Continue+to+image+...+");
  4753.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4754.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4755. }]]></searchpattern>
  4756. </host>
  4757.  
  4758. <host id="imgdiamond">
  4759. <urlpattern>^https?:\/\/imgdiamond\.com\/.+</urlpattern>
  4760. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4761.    var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  4762.    var req = new XMLHttpRequest();
  4763.    req.open("POST", pageUrl, false);
  4764.    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4765.    req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  4766.    var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(img|i)\/[^/]+\/[-\w]+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\4/i);
  4767.    return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  4768. }]]></searchpattern>
  4769. </host>
  4770.  
  4771. <host id="imgdino">
  4772. <urlpattern>^http:\/\/imgdino\.com\/viewer\.php\?file=</urlpattern>
  4773. <searchpattern>"ID: cursor_lupa"</searchpattern>
  4774. </host>
  4775.  
  4776. <host id="imgdollar">
  4777. <urlpattern>^http:\/\/imgdollar\.com\/\w+\/[\w-]+\.jpg\.html$</urlpattern>
  4778. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4779.      var iUrl = pageData.match(/src=("|')(.+\/files\/.+\.jpg)\1/);
  4780.      return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"};
  4781. }]]></searchpattern>
  4782. </host>
  4783.  
  4784. <host id="imgdragon">
  4785. <urlpattern>^http:\/\/imgdragon\.com\/.+?\/.+?$</urlpattern>
  4786. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4787.     var HostUrl = "http://imgdragon.com/image.php"
  4788.  
  4789.     var PostData = pageData.match(/<form(.|\r|\n)+?form>/)[0].match(/<input.+?\/?>/g);;
  4790.     PostData = PostData.map(
  4791.     function(input)
  4792.     {   var sPart1 = input.match(/name=('|")(.+?)\1/)[2];
  4793.         var sPart2 = '';
  4794.         if(!new RegExp(/value=('|")(.+?)\1/).test(input)) {
  4795.                 sPart2 = '';
  4796.         } else {
  4797.                 sPart2 =  input.match(/value=('|")(.+?)\1/)[2];
  4798.         }
  4799.         return sPart1  + '=' + sPart2;
  4800.     }).join('&');
  4801.  
  4802.     var req = new XMLHttpRequest();
  4803.     req.open("POST", HostUrl, false);
  4804.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4805.     req.send(PostData);
  4806.    
  4807.     var PostData = req.responseText.match(/<Form(.|\r|\n)+?Form>/)[0].match(/<input.+?\/?>/g);
  4808.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  4809.  
  4810.     req.open("POST", HostUrl, false);
  4811.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4812.     req.send(PostData);
  4813.    
  4814.     var iUrl = (req.responseText).match(/img src="(.+?)".+class="pic"/);
  4815.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[1].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"} 
  4816. }]]></searchpattern>
  4817. </host>
  4818.  
  4819. <host id="imgdrive">
  4820. <urlpattern>^http:\/\/imgdrive\.co\/([^/]+)\/.+?\.jpe?g\.html$</urlpattern>
  4821. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4822.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/]+)/);
  4823.     var req = new XMLHttpRequest();
  4824.     req.open("POST", pageUrl, false);
  4825.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4826.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  4827.     var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(?:img|i)\/[^/]+\/[\w]+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\3/i);
  4828.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[4], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4829. }]]></searchpattern>
  4830. </host>
  4831.  
  4832. <host id="imgearn">
  4833. <urlpattern>^http:\/\/imgearn\.net\/[\da-z]+\.jpg$</urlpattern>
  4834. <searchpattern>"class="pic""</searchpattern>
  4835. </host>
  4836.  
  4837. <host id="imgease">
  4838. <urlpattern>^http:\/\/imgease\.re\/img-[\da-f]+\.html$</urlpattern>
  4839. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4840.     var retVal = {imgUrl: null, status: "ABORT"};
  4841.  
  4842.     var req = new XMLHttpRequest();
  4843.     req.open("POST", pageUrl, false);
  4844.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4845.     var postData = "imgContinue=Continue to image ... ";
  4846.     req.send(postData);
  4847.  
  4848.     var someData = req.responseText;
  4849.     var iUrl= someData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4850.     if (iUrl) {
  4851.         retVal.imgUrl = iUrl[2];
  4852.         retVal.status = "OK";
  4853.         }
  4854.  
  4855.     return retVal;
  4856. }]]></searchpattern>
  4857. </host>
  4858.  
  4859. <host id="imgerotic">
  4860. <urlpattern>^http:\/\/www\.imgerotic\.com\/viewer\.php\?file=\d+\.jpg$</urlpattern>
  4861. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4862.      var siteUrl = pageUrl.match(/http:\/\/.+\//);
  4863.      iUrl = pageData.match(/href=('|")(images\/\d+\.jpg)\1>true/);
  4864.      return iUrl ? {imgUrl: siteUrl + iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4865. }]]></searchpattern>
  4866. </host>
  4867.  
  4868. <host id="imget">
  4869. <urlpattern>^http:\/\/(?:www\.)?imget\.me\/image\/</urlpattern>
  4870. <searchpattern>"ID: full_image"</searchpattern>
  4871. </host>
  4872.  
  4873. <host id="imgex">
  4874. <urlpattern>^http:\/\/(?:www\.)?imgex\.net\/img\/</urlpattern>
  4875. <searchpattern>"'centred_resized'|'centred'"</searchpattern>
  4876. </host>
  4877.  
  4878. <host id="imgfap">
  4879. <urlpattern>^http:\/\/imgfap\.net\/img-[\da-f]+\.html$</urlpattern>
  4880. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  4881. </host>
  4882.  
  4883. <host id="imgfilez">
  4884. <urlpattern>http:\/\/imgfilez\.com\/img\.php\?image=.+</urlpattern>
  4885. <searchpattern>"REPLACE: 'img\\.php\\?image=(.+)','storage/originals/$1'"</searchpattern>
  4886. </host>
  4887.  
  4888. <host id="imgflare" maxThreads="3">
  4889. <urlpattern>^http:\/\/(?:www\.)?imgflare\.com\/(.*)\.html$</urlpattern>
  4890. <searchpattern>"class="pic""</searchpattern>
  4891. </host>
  4892.  
  4893. <host id="imgflash">
  4894. <urlpattern>^http:\/\/imgflash\.net\/img-</urlpattern>
  4895. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  4896. </host>
  4897.  
  4898. <host id="imgflip">
  4899. <urlpattern>https?:\/\/imgflip\.com\/(i|gif)\/.+</urlpattern>
  4900. <searchpattern>"ID: im"</searchpattern>
  4901. </host>
  4902.  
  4903. <host id="imgfuck">
  4904. <urlpattern>^http:\/\/(?:www\.)?imgfuck\.com\/viewer\.php\?file=.+</urlpattern>
  4905. <searchpattern>"REPLACE: 'viewer\.php\?file=' , 'images/'"</searchpattern>
  4906. </host>
  4907.  
  4908. <host id="imgget">
  4909. <urlpattern>^http:\/\/imgget\.net\/img-[\da-f]+\.html$</urlpattern>
  4910. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  4911. </host>
  4912.  
  4913. <host id="imggirls">
  4914. <urlpattern>^http:\/\/imggirls\.com\/img-[\da-f]+\.html$</urlpattern>
  4915. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4916. var req = new XMLHttpRequest();
  4917. req.open("POST", pageUrl, false);
  4918. req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4919. req.send("imgContinue=Continue+to+image+...+");
  4920. var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4921. return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4922. } ]]></searchpattern>
  4923. </host>
  4924.  
  4925. <host id="imggo">
  4926. <urlpattern>^http:\/\/imggo\.org\/.+$</urlpattern>
  4927. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4928.     var req = new XMLHttpRequest();
  4929.     req.open("POST", pageUrl, false);
  4930.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4931.     req.send("imgContinue=Continue+to+image+...+");
  4932.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4933.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4934. }
  4935. ]]></searchpattern>
  4936. </host>
  4937.  
  4938. <host id="imggoo">
  4939. <urlpattern>http:\/\/imggoo\.com\/img-\w+</urlpattern>
  4940. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4941.      var req = new XMLHttpRequest();
  4942.      req.open("POST", pageUrl, false);
  4943.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4944.      req.send("imgContinue=Continue+to+image+...+");
  4945.      var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  4946.      return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  4947. }]]></searchpattern>
  4948. </host>
  4949.  
  4950. <host id="imghit">
  4951. <urlpattern>^http:\/\/imghit\.com\/img-[\da-f]+\.html$</urlpattern>
  4952. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  4953. </host>
  4954.  
  4955. <host id="imgiga">
  4956. <urlpattern>^http:\/\/img\d+\.imgiga\.com\/img\.php\?id=\d+</urlpattern>
  4957. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4958.     var retVal = new Object();
  4959.  
  4960.     var site = pageUrl.match(/^http:\/\/img\d+\.imgiga\.com\//);
  4961.     var iUrl = pageData.match(/<script.+?src="(imgiga\/showimg\.php.+?)"/);
  4962.  
  4963.     if (!iUrl) {
  4964.         retVal.imgUrl = null;
  4965.         retVal.status = "ABORT";
  4966.         }
  4967.     else {
  4968.         var newUrl = site[0] + iUrl[1];
  4969.         var req = new XMLHttpRequest();
  4970.         req.open("GET", newUrl, false);
  4971.         req.setRequestHeader("Referer", pageUrl);
  4972.         req.send(null);
  4973.        
  4974.         var newPage = req.responseText;
  4975.         iUrl = newPage.match(/href="(http:\/\/.+?\/image\/.+?)"/);
  4976.  
  4977.         if (!iUrl) {
  4978.             retVal.imgUrl = null;
  4979.             retVal.status = "ABORT";
  4980.             }
  4981.         else {
  4982.             retVal.imgUrl = iUrl[1];
  4983.             retVal.status = "OK";
  4984.             }
  4985.         }
  4986.  
  4987.     return retVal;
  4988.     }]]></searchpattern>
  4989. </host>
  4990.  
  4991. <host id="imgirl">
  4992. <urlpattern>^http:\/\/(?:www\.)?imgirl\.info\/img-</urlpattern>
  4993. <searchpattern><![CDATA[function(pageData, pageUrl) {
  4994.     var retVal = {imgUrl: null, status: "ABORT"};
  4995.    
  4996.     var req = new XMLHttpRequest();
  4997.     req.open("POST", pageUrl, false);
  4998.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4999.     var postData = "imgContinue=Continue+to+image+...+";
  5000.     req.send(postData);
  5001.    
  5002.     var someData = req.responseText;
  5003.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5004.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5005.     if (iUrl) {
  5006.         retVal.imgUrl = iUrl[2];
  5007.         retVal.status = "OK";
  5008.     }
  5009.    
  5010.     return retVal;
  5011. }]]></searchpattern>
  5012. </host>
  5013.  
  5014. <host id="imgkuku">
  5015. <urlpattern>^http:\/\/(?:www\.)?imgkuku\.com\/.+\.\w{3,4}\.html$</urlpattern>
  5016. <searchpattern>"REPLACE: '\.html$' , ''"</searchpattern>
  5017. </host>
  5018.  
  5019. <host id="imglil">
  5020. <urlpattern>^http:\/\/i\.imglil\.com\/.+$</urlpattern>
  5021. <searchpattern>"REPLACE: '\/xxx(\w+)-(\w+)\.html$', '/uploads/$1/$2.jpg'"</searchpattern>
  5022. </host>
  5023.  
  5024. <host id="imglizard">
  5025. <urlpattern>http:\/\/(?:www\.)?imglizard\.com\/image\/</urlpattern>
  5026. <searchpattern>"ID: full_image"</searchpattern>
  5027. </host>
  5028.  
  5029. <host id="imgluck">
  5030. <urlpattern>^http:\/\/imgluck\.net\/img-\w+\.html$</urlpattern>
  5031. <searchpattern>"class='centred(_resized)?'"</searchpattern>
  5032. </host>
  5033.  
  5034. <host id="imgmaid">
  5035. <urlpattern>^http:\/\/imgmaid\.net\/[0-9a-zA-Z]+</urlpattern>
  5036. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5037.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  5038.     var req = new XMLHttpRequest();
  5039.     req.open("POST", pageUrl, false);
  5040.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5041.     req.send("op=view&id="+id[1]+"&pre=2&next=Continue to image...");
  5042.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  5043.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  5044. }]]></searchpattern>
  5045. </host>
  5046.  
  5047. <host id="imgmaster">
  5048. <urlpattern>^http:\/\/imgmaster\.net\/img-\w+\.html$</urlpattern>
  5049. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5050.      var name = pageData.match(/name='([\da-f]+)' class='cti-submit'/);
  5051.      var req = new XMLHttpRequest();
  5052.      req.open("POST", pageUrl, false);
  5053.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5054.      req.send(name[1]+"=");
  5055.      var responseData = req.responseText;
  5056.      var iUrl = responseData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5057.      return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5058. }]]></searchpattern>
  5059. </host>
  5060.  
  5061. <host id="imgmax">
  5062. <urlpattern>^http:\/\/imgmax\.com\/image\/\w+$</urlpattern>
  5063. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  5064.     var iUrl = pageData.match(/href="(http:\/\/imgmax\.com\/images\/.+?\.jpg)"/);  
  5065.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5066. }]]></searchpattern>
  5067. </host>
  5068.  
  5069. <host id="imgmaze">
  5070. <urlpattern>^http:\/\/imgmaze\.com\/.*\/.*\.html$</urlpattern>
  5071. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5072.     var pLoc =pageData.match(/window.location = "(.+?)"/)
  5073.     var req = new XMLHttpRequest();
  5074.     req.open("POST", pLoc[1], false);
  5075.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5076.     req.send("");
  5077.     var PostData = (req.responseText).match(/\.prepend\('(?=<Form\b)(.+?)<\/Form>'/)[1].match(/<input.+?\/?>/g);
  5078.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  5079.     req.open("POST", pLoc[1], false);
  5080.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5081.     req.send(PostData);
  5082.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/img\/.+?\.jpe?g)\1/i);
  5083.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5084. }]]></searchpattern>
  5085. </host>
  5086.  
  5087. <host id="imgmega">
  5088. <urlpattern>^http:\/\/imgmega\.com\/\w+\/[\w-]+\.jpe?g\.html$</urlpattern>
  5089. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5090.     var retVal = {imgUrl: null, status: "ABORT"};
  5091.     var iUrl = null;
  5092.    
  5093.     var id = pageUrl.match(/(\w+)\/[\w-]+\.jpe?g\.html$/i);
  5094.    
  5095.     if (id) {
  5096.         var req = new XMLHttpRequest();
  5097.         req.open("POST", pageUrl, false);
  5098.         req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5099.         req.send("op=view&id="+ id[1] +"&pre=1&next=Continue to image...");
  5100.        
  5101.         var someData = req.responseText;
  5102.         iUrl= someData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/i\/\d+\/.+?(?!_t)\w{2}\.jpe?g)\1/);
  5103.         if (iUrl) {
  5104.             retVal.imgUrl = iUrl[2];
  5105.             retVal.status = "OK";
  5106.             }
  5107.         }
  5108.     return retVal;
  5109. }]]></searchpattern>
  5110. </host>
  5111.  
  5112. <host id="imgmod">
  5113. <urlpattern>^http:\/\/imgmod\.com\/img-[\da-f]+\.html$</urlpattern>
  5114. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  5115. </host>
  5116.  
  5117. <host id="imgmoney">
  5118. <urlpattern>^http:\/\/(?:www\.)?imgmoney\.com\/img-</urlpattern>
  5119. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5120.     var retVal = {};
  5121.    
  5122.     var req = new XMLHttpRequest();
  5123.     req.open("POST", pageUrl, false);
  5124.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5125.     var postData = "imgContinue=Continue+to+image+...+";
  5126.     req.send(postData);
  5127.    
  5128.     var someData = req.responseText;
  5129.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5130.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5131.     if (!iUrl) {
  5132.         retVal.imgUrl = null;
  5133.         retVal.status = "ABORT";
  5134.         }
  5135.     else {
  5136.         retVal.imgUrl = iUrl[2];
  5137.         retVal.status = "OK";
  5138.         }
  5139.     return retVal;
  5140.     }]]></searchpattern>
  5141. </host>
  5142.  
  5143. <host id="imgmonkey">
  5144. <urlpattern>^http:\/\/imgmonkey\.com\/[^/]+\/[^/]+$</urlpattern>
  5145. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5146.     var retVal = {imgUrl: null, status: "ABORT"};
  5147.     var iUrl = null;
  5148.  
  5149.     var id = pageUrl.match(/\/([^/]+)\/[^/]+$/);
  5150.  
  5151.     var req = new XMLHttpRequest();
  5152.     req.open("POST", pageUrl, false);
  5153.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5154.     req.send("op=view&id="+ id[1] +"&pre=1&next=Click to Continue");
  5155.  
  5156.     var someData = req.responseText;
  5157.     iUrl= someData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/img\/.+?)\1/);
  5158.     if (iUrl) {
  5159.         retVal.imgUrl = iUrl[2];
  5160.         retVal.status = "OK";
  5161.         }
  5162.     return retVal;
  5163. }]]></searchpattern>
  5164. </host>
  5165.  
  5166. <host id="imgmonster">
  5167. <urlpattern>^http:\/\/imgmonster\.eu\/img-[\da-f]+\.html$</urlpattern>
  5168. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5169.     var iUrl = pageData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1.+?alt=('|")([!\-\w]+\.jpe?g)\3/i);
  5170.     if (iUrl) return {imgUrl: iUrl[2], fileName: iUrl[4], status: "OK"}
  5171.     iUrl = pageData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5172.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5173. }]]></searchpattern>
  5174. </host>
  5175.  
  5176. <host id="imgnaj">
  5177. <urlpattern>^http:\/\/imgnaj\.com\/.+$</urlpattern>
  5178. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5179.     var req = new XMLHttpRequest();
  5180.     req.open("POST", pageUrl, false);
  5181.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5182.     req.send("imgContinue=Continue+to+image+...+");
  5183.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5184.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5185. }]]></searchpattern>
  5186. </host>
  5187.  
  5188. <host id="imgnext">
  5189. <urlpattern>^http:\/\/(?:www\.)?imgnext\.com\/img-</urlpattern>
  5190. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5191.     var retVal = {imgUrl: null, status: "ABORT"};
  5192.    
  5193.     var req = new XMLHttpRequest();
  5194.     req.open("POST", pageUrl, false);
  5195.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5196.     var postData = "imgContinue=Continue+to+image+...+";
  5197.     req.send(postData);
  5198.    
  5199.     var someData = req.responseText;
  5200.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5201.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5202.     if (iUrl) {
  5203.         retVal.imgUrl = iUrl[2];
  5204.         retVal.status = "OK";
  5205.     }
  5206.    
  5207. return retVal;
  5208. }]]></searchpattern>
  5209. </host>
  5210.  
  5211. <host id="imgonion">
  5212. <urlpattern>^http:\/\/(?:www\.)?imgonion\.com\/img-</urlpattern>
  5213. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5214.     var retVal = {};
  5215.    
  5216.     var req = new XMLHttpRequest();
  5217.     req.open("POST", pageUrl, false);
  5218.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5219.     var postData = "imgContinue=Continue+to+image+...+";
  5220.     req.send(postData);
  5221.    
  5222.     var someData = req.responseText;
  5223.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5224.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5225.     if (!iUrl) {
  5226.         retVal.imgUrl = null;
  5227.         retVal.status = "ABORT";
  5228.         }
  5229.     else {
  5230.         retVal.imgUrl = iUrl[2];
  5231.         retVal.status = "OK";
  5232.         }
  5233.     return retVal;
  5234.     }]]></searchpattern>
  5235. </host>
  5236.  
  5237. <host id="imgor">
  5238. <urlpattern>^http:\/\/imgor\.net\/img-\w+\.html$</urlpattern>
  5239. <searchpattern>"class='centred(_resized)?'"</searchpattern>
  5240. </host>
  5241.  
  5242. <host id="imgowk">
  5243. <urlpattern>^http:\/\/imgowk\.com\/img-[\da-f]+\.html$</urlpattern>
  5244. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5245.     var req = new XMLHttpRequest();
  5246.     req.open("POST", pageUrl, false);
  5247.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5248.     req.send("imgContinue=Continue+to+image+...+");
  5249.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5250.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5251. }]]></searchpattern>
  5252. </host>
  5253.  
  5254. <host id="imgpack">
  5255. <urlpattern>^http:\/\/imgpack\.com\/.+$</urlpattern>
  5256. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5257.     var req = new XMLHttpRequest();
  5258.     req.open("POST", pageUrl, false);
  5259.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5260.     req.send("imgContinue=Continue+to+image+...+");
  5261.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5262.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5263. }]]></searchpattern>
  5264. </host>
  5265.  
  5266. <host id="imgphun">
  5267. <urlpattern>^http:\/\/(?:www\.)?imgphun\.com\/img-</urlpattern>
  5268. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  5269. </host>
  5270.  
  5271. <host id="imgpit">
  5272. <urlpattern>^https?:\/\/imgpit\.com\/img-</urlpattern>
  5273. <searchpattern>"alt=('|\")image\1"</searchpattern>
  5274. </host>
  5275.  
  5276. <host id="imgplus">
  5277. <urlpattern>^http:\/\/www\.imgplus\.info\/viewer\.php\?file=.+</urlpattern>
  5278. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','fullsize/$1'"</searchpattern>
  5279. </host>
  5280.  
  5281. <host id="imgpo.st">
  5282. <urlpattern>^http:\/\/imgpo\.st\/\w{6,}$</urlpattern>
  5283. <searchpattern>"src="http:\/\/imgpo\.st\/cgi-bin\/dl\.cgi\/."</searchpattern>
  5284. </host>
  5285.  
  5286. <host id="imgproof">
  5287. <urlpattern>^http:\/\/(?:www\.)?imgproof\.net\/img-[\da-f]+\.html$</urlpattern>
  5288. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  5289. </host>
  5290.  
  5291. <host id="imgrex">
  5292. <urlpattern>^http:\/\/www\.imgrex\.com\/viewer\.php\?file=\d+.jpg$</urlpattern>
  5293. <searchpattern>"REPLACE: '\/viewer\.php\?file=', '/images/'"</searchpattern>
  5294. </host>
  5295.  
  5296. <host id="imgrill">
  5297. <urlpattern>^http:\/\/(?:www\.)?imgrill\.com\/img-</urlpattern>
  5298. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5299.     var retVal = {};
  5300.    
  5301.     var req = new XMLHttpRequest();
  5302.     req.open("POST", pageUrl, false);
  5303.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5304.     var postData = "imgContinue=Continue+to+image+...+";
  5305.     req.send(postData);
  5306.    
  5307.     var someData = req.responseText;
  5308.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5309.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5310.     if (!iUrl) {
  5311.         retVal.imgUrl = null;
  5312.         retVal.status = "ABORT";
  5313.         }
  5314.     else {
  5315.         retVal.imgUrl = iUrl[2];
  5316.         retVal.status = "OK";
  5317.         }
  5318.     return retVal;
  5319.     }]]></searchpattern>
  5320. </host>
  5321.  
  5322. <host id="imgrock">
  5323. <urlpattern>^http:\/\/imgrock\.net\/.*\/.*\.html$</urlpattern>
  5324. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5325.     var pLoc =pageData.match(/window.location = "(.+?)"/)
  5326.     var req = new XMLHttpRequest();
  5327.     req.open("POST", pLoc[1], false);
  5328.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5329.     req.send("");
  5330.     var PostData = (req.responseText).match(/\.prepend\('(?=<Form\b)(.+?)<\/Form>'/)[1].match(/<input.+?\/?>/g);
  5331.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  5332.     req.open("POST", pLoc[1], false);
  5333.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5334.     req.send(PostData);
  5335.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/img\/.+?\.jpe?g)\1/i);
  5336.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5337. }]]></searchpattern>
  5338. </host>
  5339.  
  5340. <host id="imgrun">
  5341. <urlpattern>^http:\/\/imgrun\.net\/img-[\da-f]+\.html$</urlpattern>
  5342. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5343.     var PostData = pageData.match(/<div\sid='continuetoimage'>[^]+?<\/div>/)[0].match(/<input.+?\/>/g);
  5344.     PostData = PostData.map(function(input) {return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  5345.     var req = new XMLHttpRequest();
  5346.     req.open("POST", pageUrl, false);
  5347.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5348.     req.send(PostData);
  5349.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/upload\/big\/.+?)\1/i);
  5350.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5351. }]]></searchpattern>
  5352. </host>
  5353.  
  5354. <host id="imgsavvy">
  5355. <urlpattern>http:\/\/imgsavvy\.com\/img-\w+\.html</urlpattern>
  5356. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5357.      var req = new XMLHttpRequest();
  5358.      req.open("POST", pageUrl, false);
  5359.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5360.      req.send("imgContinue=Continue+to+image+...+");
  5361.      var responseData = req.responseText;
  5362.      var iUrl = responseData.match(/href=('|")(http:\/\/imgsavvy\.com\/upload\/big\/.+?)\1/);
  5363.      return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5364. }]]></searchpattern>
  5365. </host>
  5366.  
  5367. <host id="imgsee">
  5368. <urlpattern>^http:\/\/imgsee\.me\/.+$</urlpattern>
  5369. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5370.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  5371.     var req = new XMLHttpRequest();
  5372.     req.open("POST", pageUrl, false);
  5373.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5374.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  5375.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  5376.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  5377. }]]></searchpattern>
  5378. </host>
  5379.  
  5380. <host id="imgsen">
  5381. <urlpattern>^http:\/\/imgsen\.se\/.+$</urlpattern>
  5382. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5383.     var req = new XMLHttpRequest();
  5384.     req.open("POST", pageUrl, false);
  5385.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5386.     req.send("imgContinue=Continue+to+image+...+");
  5387.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5388.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5389. }]]></searchpattern>
  5390. </host>
  5391.  
  5392. <host id="imgserve" maxThreads="2">
  5393. <urlpattern>^http:\/\/(?:www\.)?imgserve\.net\/img-</urlpattern>
  5394. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  5395. </host>
  5396.  
  5397. <host id="imgsilo">
  5398. <urlpattern>^http:\/\/(?:www\.)?imgsilo\.com\/img-</urlpattern>
  5399. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5400.     var retVal = {};
  5401.    
  5402.     var req = new XMLHttpRequest();
  5403.     req.open("POST", pageUrl, false);
  5404.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5405.     var postData = "imgContinue=Continue+to+image+...+";
  5406.     req.send(postData);
  5407.    
  5408.     var someData = req.responseText;
  5409.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5410.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5411.     if (!iUrl) {
  5412.         retVal.imgUrl = null;
  5413.         retVal.status = "ABORT";
  5414.         }
  5415.     else {
  5416.         retVal.imgUrl = iUrl[2];
  5417.         retVal.status = "OK";
  5418.         }
  5419.     return retVal;
  5420.     }]]></searchpattern>
  5421. </host>
  5422.  
  5423. <host id="imgspice">
  5424. <urlpattern>^http:\/\/(?:www\.)?imgspice\.com\/[a-z\d]+\/[-\w()\.]+\.jpe?g\.html$</urlpattern>
  5425. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5426.     var title = pageData.match(/Filename.+nowrap>(.+\.\w{3,4})</);
  5427.     var iUrl = pageData.match(/src=("|')(.+\/i\/.+\.jpe?g)\1 id/);
  5428.     return iUrl ? {imgUrl: iUrl[2], fileName: title ? title[1] : null, status: "OK"} : {imgUrl: null, status: "ABORT"};
  5429. }]]></searchpattern>
  5430. </host>
  5431.  
  5432. <host id="imgspot">
  5433. <urlpattern>^http:\/\/imgspot\.org\/img-[\da-f]+\.html$</urlpattern>
  5434. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5435.     var req = new XMLHttpRequest();
  5436.     req.open("POST", pageUrl, false);
  5437.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5438.     req.send("imgContinue=Continue+to+image+...+");
  5439.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5440.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5441. }]]></searchpattern>
  5442. </host>
  5443.  
  5444. <host id="imgsrc">
  5445. <urlpattern>^http:\/\/imgclick\.net\/.+\.html$</urlpattern>
  5446. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5447.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  5448.     var req = new XMLHttpRequest();
  5449.     req.open("POST", pageUrl, false);
  5450.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5451.     req.send("op=view&id="+id[1]+"&pre=1&adb=1&next=Continue to image...");
  5452.     var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(img|i)\/[^/]+\/[-\w]+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\4/i);
  5453.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  5454. }]]></searchpattern>
  5455. </host>
  5456.  
  5457. <host id="imgstudio">
  5458. <urlpattern>http:\/\/imgstudio\.org\/img-.+?\.html</urlpattern>
  5459. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5460.     var req = new XMLHttpRequest();
  5461.     req.open("POST", pageUrl, false);
  5462.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5463.     req.send("imgContinue=Continue+to+image+...+");
  5464.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/imgstudio\.org\/upload\/big\/.+?)\1/);
  5465.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5466. }]]></searchpattern>
  5467. </host>
  5468.  
  5469. <host id="imgtea">
  5470. <urlpattern>^http:\/\/(?:www\.)?imgtea\.com\/img-[\da-f]+\.html$</urlpattern>
  5471. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5472.     var req = new XMLHttpRequest();
  5473.     req.open("POST", pageUrl.replace(/\/\/(www\.)?(?=imgtea)/,"//www."), false);
  5474.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5475.     var postData = "imgContinue=Click here to view images";
  5476.     req.send(postData);
  5477.  
  5478.     var iUrl= (req.responseText).match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5479.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5480. }]]></searchpattern>
  5481. </host>
  5482.  
  5483. <host id="imgth">
  5484. <urlpattern>^http:\/\/(?:www\.)?imgth\.com\/view</urlpattern>
  5485. <searchpattern>"img class="thumbnail""</searchpattern>
  5486. </host>
  5487.  
  5488. <host id="imgtiger.com">
  5489. <urlpattern>^http:\/\/(?:www\.)?imgtiger\.com\/viewer\.php\?file=</urlpattern>
  5490. <searchpattern>"ID: cursor_lupa"</searchpattern>
  5491. </host>
  5492.  
  5493. <host id="imgtiger.org">
  5494. <urlpattern>^http:\/\/imgtiger\.org\/</urlpattern>
  5495. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5496.     var imgId = pageUrl.match("http:\/\/imgtiger\.org\/(.+?)\/");
  5497.    
  5498.     var req = new XMLHttpRequest();
  5499.     req.open("POST", pageUrl, false);
  5500.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5501.     req.send("op=view&amp;id="+imgId[1]+"&amp;pre=1&amp;name=Continue+to+image...");
  5502.    
  5503.     var iUrl = (req.responseText).match(/img src=\"(http:\/\/imgtiger\.me\/img\/.+?)\" class=\"pic\" alt=\"(.+?)\"/i);
  5504.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5505. }]]></searchpattern>
  5506. </host>
  5507.  
  5508. <host id="imgtown">
  5509. <urlpattern>^http:\/\/imgtown\.net\/.*\/.*\.html$</urlpattern>
  5510. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5511.     var pLoc =pageData.match(/window.location = "(.+?)"/)
  5512.     var req = new XMLHttpRequest();
  5513.     req.open("POST", pLoc[1], false);
  5514.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5515.     req.send("");
  5516.     var PostData = (req.responseText).match(/\.prepend\('(?=<Form\b)(.+?)<\/Form>'/)[1].match(/<input.+?\/?>/g);
  5517.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  5518.     req.open("POST", pLoc[1], false);
  5519.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5520.     req.send(PostData);
  5521.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/img\/.+?\.jpe?g)\1/i);
  5522.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5523. }]]></searchpattern>
  5524. </host>
  5525.  
  5526. <host id="imgtrex">
  5527. <urlpattern>https?:\/\/(?:www\.)?imgtrex\.com\/[^/]+\/[^/]+$</urlpattern>
  5528. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5529.     var iUrl = pageData.match(/img\s+src="(.+?imgtrex\.com\/(?:i|img)\/.+?)".+?alt="(.+?)"/);
  5530.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5531. }]]></searchpattern>
  5532. </host>
  5533.  
  5534. <host id="imgtrex2">
  5535. <urlpattern>^http:\/\/imgtrex\.com\/[^/]+\/[^/]+$</urlpattern>
  5536. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5537.     var retVal = {imgUrl: null, status: "ABORT"};
  5538.     var iUrl = null;
  5539.  
  5540.     var id = pageUrl.match(/\/([^/]+)\/[^/]+$/);
  5541.  
  5542.     var req = new XMLHttpRequest();
  5543.     req.open("POST", pageUrl, false);
  5544.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5545.     req.send("op=view&id="+ id[1] +"&pre=1&next=Continue to image...");
  5546.  
  5547.     var someData = req.responseText;
  5548.     iUrl= someData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/img\/.+?)\1/);
  5549.     if (iUrl) {
  5550.         retVal.imgUrl = iUrl[2];
  5551.         retVal.status = "OK";
  5552.         }
  5553.     return retVal;
  5554. }]]></searchpattern>
  5555. </host>
  5556.  
  5557. <host id="imgtrial" maxThreads="255">
  5558. <urlpattern>^http:\/\/imgtrial\.com\/img-\w+\.html$</urlpattern>
  5559. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5560.     var req = new XMLHttpRequest();
  5561.     req.open("POST", pageUrl, false);
  5562.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5563.     req.send("imgContinue=Continue+to+image+...+");
  5564.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/i);
  5565.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5566. }]]></searchpattern>
  5567. </host>
  5568.  
  5569. <host id="imgtrick" maxThreads="3">
  5570. <urlpattern>^http:\/\/(?:www\.)?imgtrick\.com\/viewer3\.php\?img=.+</urlpattern>
  5571. <searchpattern>"REPLACE: '\/viewer3\.php\?.*?img=(?:images\/)?([^&amp;]+).*$', '/images/$1'"</searchpattern>
  5572. </host>
  5573.  
  5574. <host id="imgtube">
  5575. <urlpattern>^http:\/\/imgtube\.net\/img-[-\w]+\.html$</urlpattern>
  5576. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5577.     var req = new XMLHttpRequest();
  5578.     req.open("POST", pageUrl, false);
  5579.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5580.     req.send("imgContinue=Continue+to+image+...+");
  5581.     var iUrl = (req.responseText).match(/src=('|")(http:\/\/.+\/(?:upload\/big|uploads\/images)\/.+\.jpe?g)\1/);
  5582.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5583. }]]></searchpattern>
  5584. </host>
  5585.  
  5586. <host id="imgtwist.ml">
  5587. <urlpattern>http:\/\/www\.imgtwist\.ml\/img\/imgtwistgo\.php</urlpattern>
  5588. <searchpattern>"ID: thepic"</searchpattern>
  5589. </host>
  5590.  
  5591. <host id="imgtwyti">
  5592. <urlpattern>^http:\/\/imgtwyti\.com\/img-.+?\.html$</urlpattern>
  5593. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5594.      var req = new XMLHttpRequest();
  5595.      req.open("POST", pageUrl, false);
  5596.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5597.      req.send("imgContinue=CLICK+HERE+CONTINUE+TO+IMAGE+");
  5598.      var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5599.      return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5600. }]]></searchpattern>
  5601. </host>
  5602.  
  5603. <host id="imgupload">
  5604. <urlpattern>^http:\/\/imgupload\.yt\/img-[\da-f]+\.html$</urlpattern>
  5605. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5606. var req = new XMLHttpRequest();
  5607. req.open("POST", pageUrl, false);
  5608. req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5609. req.send("imgContinue=Continue+to+image+...+");
  5610. var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5611. return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5612. } ]]></searchpattern>
  5613. </host>
  5614.  
  5615. <host id="imgur">
  5616. <urlpattern>^http:\/\/imgur\.com\/.+</urlpattern>
  5617. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5618.     var retVal = new Object();
  5619.    
  5620.     retVal.imgUrl = pageUrl;
  5621.     retVal.status = "OK";
  5622.    
  5623.     return retVal;
  5624.     }]]></searchpattern>
  5625. </host>
  5626.  
  5627. <host id="imgur2">
  5628. <urlpattern>^https?:\/\/imgur\.com\/(?:.+\/)?(?!(random|help|tos|stats|apps|removalrequest|blog|forgotpassword|top|new|rss|upgrade)$)[^/]+$</urlpattern>
  5629. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5630.     var iUrl = pageData.match(/<link rel="image_src" href="([^"]+)"/);
  5631.     if (!iUrl) iUrl = pageData.match(/<meta property="og:image" content="([^"]+)"/);
  5632.     if (!iUrl) iUrl = pageData.match(/<a href="(.*\/\/i\.imgur\.com\/[^"]+)"/);
  5633.     if (!iUrl) iUrl = pageData.match(/<img src="(.*\/\/i\.imgur\.com\/[^"]+)"/);
  5634.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"};
  5635. }]]></searchpattern>
  5636. </host>
  5637.  
  5638. <host id="imgve.com">
  5639. <urlpattern>^http:\/\/imgve\.com\/([^/\.]+)$</urlpattern>
  5640. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5641.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  5642.     var req = new XMLHttpRequest();
  5643.     req.open("POST", pageUrl, false);
  5644.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5645.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  5646.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  5647.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  5648. }]]></searchpattern>
  5649. </host>
  5650.  
  5651. <host id="imgview">
  5652. <urlpattern>^http:\/\/imgview\.net\/.*\/.*\.html$</urlpattern>
  5653. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5654.     var pLoc =pageData.match(/window.location = "(.+?)"/)
  5655.     var req = new XMLHttpRequest();
  5656.     req.open("POST", pLoc[1], false);
  5657.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5658.     req.send("");
  5659.     var PostData = (req.responseText).match(/\.prepend\('(?=<Form\b)(.+?)<\/Form>'/)[1].match(/<input.+?\/?>/g);
  5660.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  5661.     req.open("POST", pLoc[1], false);
  5662.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5663.     req.send(PostData);
  5664.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/img\/.+?\.jpe?g)\1/i);
  5665.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5666. }]]></searchpattern>
  5667. </host>
  5668.  
  5669. <host id="imgvun">
  5670. <urlpattern>^http:\/\/imgvun\.com\/.+\.html$</urlpattern>
  5671. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5672.     var req = new XMLHttpRequest();
  5673.     req.open("POST", pageUrl, false);
  5674.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5675.     var postData = "imgContinue=Continue to image ... ";
  5676.     req.send(postData);
  5677.     var iUrl= (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5678.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5679. }]]></searchpattern>
  5680. </host>
  5681.  
  5682. <host id="imgwel">
  5683. <urlpattern>^http:\/\/imgwel\.com\/([^/.]+)$</urlpattern>
  5684. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5685.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/.]+)$/);
  5686.     var req = new XMLHttpRequest();
  5687.     req.open("POST", pageUrl, false);
  5688.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5689.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  5690.     var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(?:img|i)\/[^/]+\/[-\w]+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\3/i);
  5691.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[4], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5692. }]]></searchpattern>
  5693. </host>
  5694.  
  5695. <host id="imgwoot">
  5696. <urlpattern>^http:\/\/(?:www\.)?imgwoot\.com\/img-</urlpattern>
  5697. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5698.     var retVal = {};
  5699.    
  5700.     var req = new XMLHttpRequest();
  5701.     req.open("POST", pageUrl, false);
  5702.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5703.     var postData = "imgContinue=Continue+to+image+...+";
  5704.     req.send(postData);
  5705.    
  5706.     var someData = req.responseText;
  5707.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5708.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5709.     if (!iUrl) {
  5710.         retVal.imgUrl = null;
  5711.         retVal.status = "ABORT";
  5712.         }
  5713.     else {
  5714.         retVal.imgUrl = iUrl[2];
  5715.         retVal.status = "OK";
  5716.         }
  5717.     return retVal;
  5718.     }]]></searchpattern>
  5719. </host>
  5720.  
  5721. <host id="imgxxx">
  5722. <urlpattern>^http:\/\/imgxxx\.org\/img-</urlpattern>
  5723. <searchpattern>"class='centred(_resized)?'"</searchpattern>
  5724. </host>
  5725.  
  5726. <host id="imgzap">
  5727. <urlpattern>http:\/\/imgzap\.com\/viewer\.php\?file=</urlpattern>
  5728. <searchpattern>"id="cursor_lupa""</searchpattern>
  5729. </host>
  5730.  
  5731. <host id="imgzen">
  5732. <urlpattern>^https?:\/\/imgzen.com\/.+?$</urlpattern>
  5733. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5734.     var PostData = pageData.match(/(?=<Form\b)((.|\r|\n)+?)<\/Form>/)[1].match(/<input.+?\/?>/g);
  5735.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  5736.  
  5737.     var req = new XMLHttpRequest();
  5738.     req.open("POST", pageUrl, false);
  5739.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5740.     req.send(PostData);
  5741.  
  5742.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  5743.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5744. }]]></searchpattern>
  5745. </host>
  5746.  
  5747. <host id="imgzeus">
  5748. <urlpattern>^https?:\/\/imgzeus\.com\/.+</urlpattern>
  5749. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5750.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  5751.     var req = new XMLHttpRequest();
  5752.     req.open("POST", pageUrl, false);
  5753.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5754.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  5755.     var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(img|i)\/[^/]+\/[-\w]+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\4/i);
  5756.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  5757. }]]></searchpattern>
  5758. </host>
  5759.  
  5760. <host id="immage">
  5761. <urlpattern>^http:\/\/immage\.de\/image-</urlpattern>
  5762. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5763.     var retVal = new Object();
  5764.  
  5765.     var iUrl = pageData.match(/src="(http:\/\/img\d*\.immage\.de\/.+?)"/);
  5766.    
  5767.     if (!iUrl) {
  5768.         retVal.imgUrl = null;
  5769.         retVal.status = "ABORT";
  5770.         }
  5771.     else {
  5772.         retVal.imgUrl = iUrl[1];
  5773.         retVal.status = "OK";
  5774.         }
  5775.        
  5776.     return retVal;
  5777.     }]]></searchpattern>
  5778. </host>
  5779.  
  5780. <host id="imnotobsessed">
  5781. <urlpattern>^http:\/\/www\.imnotobsessed\.com\/\d{4}\/\d{2}\/\d{2}\/.+\/.+\/$</urlpattern>
  5782. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5783.     var retVal = {};
  5784.    
  5785.     var iUrl = pageData.match(/Full size is <a href="([^"]+)"/);
  5786.  
  5787.     if (!iUrl) {
  5788.         retVal.imgUrl = null;
  5789.         retVal.status = "ABORT";
  5790.         }
  5791.     else {
  5792.         retVal.imgUrl = iUrl[1];
  5793.         retVal.status = "OK";
  5794.         }
  5795.  
  5796.     return retVal;
  5797.     }]]></searchpattern>
  5798. </host>
  5799.  
  5800. <host id="imouto">
  5801. <urlpattern>^http:\/\/.+\.imouto\.org\/post\/show\/\d+\/</urlpattern>
  5802. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5803.     var retVal = new Object();
  5804.    
  5805.     var iUrl = pageData.match(/href="([^"]+)".+?id="highres"/);
  5806.     if (!iUrl) iUrl = pageData.match(/id="image".+?src="([^"]+)"/);
  5807.  
  5808.     if (!iUrl) {
  5809.         retVal.imgUrl = null;
  5810.         retVal.status = "ABORT";
  5811.         }
  5812.     else {
  5813.         retVal.imgUrl = iUrl[1];
  5814.         retVal.status = "OK";
  5815.         }
  5816.  
  5817.     return retVal;
  5818.     }]]></searchpattern>
  5819. </host>
  5820.  
  5821. <host id="imzdrop">
  5822. <urlpattern>^http:\/\/imzdrop\.com\/\w+\/[\w-]+\.jpe?g\.html$</urlpattern>
  5823. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5824.     var retVal = {imgUrl: null, status: "ABORT"};
  5825.  
  5826.     var PostData = pageData.match(/<form\b([^]+?)<\/form>/i)[1].match(/<input.+?>/g);
  5827.     PostData = PostData.map(input => input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]).join('&');
  5828.  
  5829.     var req = new XMLHttpRequest();
  5830.     req.open("POST", pageUrl, false);
  5831.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5832.     req.send(PostData);
  5833.  
  5834.     var someData = req.responseText;
  5835.     iUrl = someData.match(/<img.+?class="pic".*?>/).toString();
  5836.  
  5837.     if (iUrl) {
  5838.         retVal.imgUrl = iUrl.match(/src="([^"]+)"/)[1];
  5839.         retVal.fileName = iUrl.match(/alt="([^"]+)"/)[1];
  5840.         retVal.status = "OK";
  5841.     }
  5842.  
  5843.     return retVal;
  5844. }
  5845. ]]></searchpattern>
  5846. </host>
  5847.  
  5848. <host id="in8photography">
  5849. <urlpattern>^http:\/\/in8photography\.net\/.+\/slides\/.+\.html</urlpattern>
  5850. <searchpattern>"img src=\"\\.\\.\\/.+\\.jpg\""</searchpattern>
  5851. </host>
  5852.  
  5853. <host id="indianstars">
  5854. <urlpattern>^http:\/\/www\.indianstars\.net\/details.+$</urlpattern>
  5855. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5856.     var iUrl = pageData.match(/src="(\/watermark.+?)"/);
  5857.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"};
  5858. }]]></searchpattern>
  5859. </host>
  5860.  
  5861. <host id="infdaily">
  5862. <urlpattern>^http:\/\/www\.infdaily\.com\/wp-content\/uploads\/\d+\/\d+\/.+</urlpattern>
  5863. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5864.     var retVal = new Object();
  5865.    
  5866.     retVal.imgUrl = pageUrl;
  5867.     retVal.status = "OK";
  5868.    
  5869.     return retVal;
  5870.     }]]></searchpattern>
  5871. </host>
  5872.  
  5873. <host id="innovativefashion">
  5874. <urlpattern>http:\/\/www\.innovativefashion\.com\/photos\/picture\.php\?.+</urlpattern>
  5875. <searchpattern>"\\.\\/galleries\\/\\d+\\/\\d+\\/(.+)\".+alt=\"\\1"</searchpattern>
  5876. </host>
  5877.  
  5878. <host id="instagram">
  5879. <urlpattern>^https?:\/\/(?:www\.)?instagram\.com\/p\/</urlpattern>
  5880. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5881.     var iUrl = pageData.match(/"display_src": ?"(http[^"]+)"/);
  5882.     if (!iUrl) iUrl = pageData.match(/property="og:image" content="(.+?)"/);
  5883.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5884. }]]></searchpattern>
  5885. </host>
  5886.  
  5887. <host id="instagram2">
  5888. <urlpattern>^http:\/\/(?:www\.)?instagram\.com\/p\/</urlpattern>
  5889. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5890.     var retVal = {imgUrl: null, status: "ABORT"};
  5891.    
  5892.     var iUrl = pageData.match(/"display_src":"(http[^"]+)"/);
  5893.     if (iUrl) {
  5894.         retVal.imgUrl = iUrl[1].replace(/\\\//g, "/");
  5895.         retVal.status = "OK";
  5896.     }
  5897.  
  5898.     return retVal;
  5899. }]]></searchpattern>
  5900. </host>
  5901.  
  5902. <host id="instagram3">
  5903. <urlpattern>^https?:\/\/instagram\.com\/p\/.+?\/.+?$</urlpattern>
  5904. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5905.     var theId = "og:image";
  5906.     var searchPat = new RegExp("<meta(?:\\s+)?property(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  5907.     var tmpMatch = pageData.match(searchPat);
  5908.  
  5909.     if (tmpMatch) {
  5910.         tmpMatch = tmpMatch[0];
  5911.         var the_url = tmpMatch.match(/content(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  5912.         if (the_url) the_url = the_url[2];
  5913.     }
  5914.  
  5915.     var retVal = new Object();
  5916.  
  5917.     if(!the_url) {
  5918.         retVal.imgUrl = null;
  5919.         retVal.status = "ABORT";
  5920.     } else {
  5921.         retVal.imgUrl = the_url;
  5922.         retVal.status = "OK";
  5923.     }
  5924.     return retVal;
  5925. }]]></searchpattern>
  5926. </host>
  5927.  
  5928. <host id="installiga">
  5929. <urlpattern>^https?:\/\/instaliga\.com\/[\w-]+\/[\d_]+$</urlpattern>
  5930. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5931.     var iUrl = pageData.match(/<meta name="og:image" content="([^"]+)"/);
  5932.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5933. }]]></searchpattern>
  5934. </host>
  5935.  
  5936. <host id="instantfap">
  5937. <urlpattern>^https?:\/\/instantfap\.com\/post\/\d+</urlpattern>
  5938. <searchpattern>"ID: post-content"</searchpattern>
  5939. </host>
  5940.  
  5941. <host id="io.ua">
  5942. <urlpattern>^http:\/\/io\.ua\/\d+p$</urlpattern>
  5943. <searchpattern>"ID: mainfoto"</searchpattern>
  5944. </host>
  5945.  
  5946. <host id="ipics">
  5947. <urlpattern>^http:\/\/ipics\.info\/img-.+?\.html$</urlpattern>
  5948. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5949.     var req = new XMLHttpRequest();
  5950.     req.open("POST", pageUrl, false);
  5951.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5952.     req.send("");
  5953.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  5954.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  5955. }]]></searchpattern>
  5956. </host>
  5957.  
  5958. <host id="ironimg">
  5959. <urlpattern>^http:\/\/ironimg\.net\/.+$</urlpattern>
  5960. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5961.     var id = pageUrl.match(/https?:\/\/[^/]+\/([^/\.]+)/);
  5962.     var req = new XMLHttpRequest();
  5963.     req.open("POST", pageUrl, false);
  5964.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  5965.     req.send("op=view&amp;id="+id[1]+"&amp;pre=1&amp;next=Continue to image...");
  5966.     var iUrl = (req.responseText).match(/<img src=\"(.+?)\" class=\"pic\" alt=\"(.+?)\"/);
  5967.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[2].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  5968. }]]></searchpattern>
  5969. </host>
  5970.  
  5971. <host id="isharemybitch">
  5972. <urlpattern>^http:\/\/media\.isharemybitch\.com\/galleries\/.+</urlpattern>
  5973. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5974.     var retVal = new Object();
  5975.  
  5976.     retVal.imgUrl = pageUrl;
  5977.     retVal.status = "OK";
  5978.  
  5979.     return retVal;
  5980.     }]]></searchpattern>
  5981. </host>
  5982.  
  5983. <host id="izzypix">
  5984. <urlpattern>http:\/\/izzypix\.com\/images\/\?img=.+</urlpattern>
  5985. <searchpattern>"REPLACE: 'images\\/\\?img=(.+)','images/$1'"</searchpattern>
  5986. </host>
  5987.  
  5988. <host id="jaybee.cc">
  5989. <urlpattern>^http:\/\/jaybee\.cc\/albums\/.+</urlpattern>
  5990. <searchpattern><![CDATA[function(pageData, pageUrl) {
  5991.     var retVal = new Object();
  5992.  
  5993.     retVal.imgUrl = pageUrl;
  5994.     retVal.status = "OK";
  5995.  
  5996.     return retVal;
  5997.     }]]></searchpattern>
  5998. </host>
  5999.  
  6000. <host id="jerkmate">
  6001. <urlpattern>^http:\/\/www\.jerkmate\.com\/images\/full\/\?pic=\d+</urlpattern>
  6002. <searchpattern>"\/images\/full\/"</searchpattern>
  6003. </host>
  6004.  
  6005. <host id="joblo">
  6006. <urlpattern>https?:\/\/www\.joblo\.com\/hollywood-celebrities\/hottie-profile\/.+</urlpattern>
  6007. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6008.     var sUrl = pageUrl.split('/');
  6009.     var hUrl = pageUrl.match(/https?:\/\/(?:www\.)?.+?\/(?:\w+\/)?/);
  6010.     var iUrl = pageData.match(/src=".+(\/moviehotties\/images\/profile-gallery\/orig\/).+"/);  
  6011.     return iUrl ? {imgUrl: hUrl + iUrl[1] + sUrl[7], status: "OK"} : {imgUrl: null, status: "ABORT"}
  6012. }]]></searchpattern>
  6013. </host>
  6014.  
  6015. <host id="jovoimage">
  6016. <urlpattern>^http:\/\/(?:www\.)?jovoimage\.com\/img-</urlpattern>
  6017. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6018.     var retVal = {};
  6019.    
  6020.     var req = new XMLHttpRequest();
  6021.     req.open("POST", pageUrl, false);
  6022.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  6023.     var postData = "imgContinue=Continue+to+image+...+";
  6024.     req.send(postData);
  6025.    
  6026.     var someData = req.responseText;
  6027.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  6028.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  6029.     if (!iUrl) {
  6030.         retVal.imgUrl = null;
  6031.         retVal.status = "ABORT";
  6032.         }
  6033.     else {
  6034.         retVal.imgUrl = iUrl[2];
  6035.         retVal.status = "OK";
  6036.         }
  6037.     return retVal;
  6038.     }]]></searchpattern>
  6039. </host>
  6040.  
  6041. <host id="jpeghoster">
  6042. <urlpattern>http:\/\/jpeghoster\.com\/viewer\.php\?file=.+</urlpattern>
  6043. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  6044. </host>
  6045.  
  6046. <host id="juggsnbuns.gallery">
  6047. <urlpattern>^http:\/\/www\.juggsnbuns\.com\/gallery\/show\.php\/.+\.html$</urlpattern>
  6048. <searchpattern>"ID: img_obj"</searchpattern>
  6049. </host>
  6050.  
  6051. <host id="juicyvixen">
  6052. <urlpattern>^http:\/\/(?:www\.)?juicyvixen\.com\/share\/show\.php\/.+\.html$</urlpattern>
  6053. <searchpattern>"REPLACE: 'show\.php\/(.+)\.html' , 'out.php/i$1'"</searchpattern>
  6054. </host>
  6055.  
  6056. <host id="justjared">
  6057. <urlpattern>^http:\/\/justjared(?:jr)?\.buzznet\.com\/photo-gallery\/\d+\/.+?\/$</urlpattern>
  6058. <searchpattern>"ID: feature_image"</searchpattern>
  6059. </host>
  6060.  
  6061. <host id="justjared2">
  6062. <urlpattern>^http:\/\/(?:www\.)?justjared\.com\/photo-gallery\/\d+\/.+?\/$</urlpattern>
  6063. <searchpattern>"ID: feature_image"</searchpattern>
  6064. </host>
  6065.  
  6066. <host id="kapanlagi">
  6067. <urlpattern>^http:\/\/upload\.kapanlagi\.com\/h\/.+</urlpattern>
  6068. <searchpattern>"ID: img_div"</searchpattern>
  6069. </host>
  6070.  
  6071. <host id="kapanlagi2">
  6072. <urlpattern>^http:\/\/www\.kapanlagi\.com\/foto\/.+\/.+\.html$</urlpattern>
  6073. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6074.     var retVal = new Object();
  6075.    
  6076.     var iUrl = pageData.match(/href="http:\/\/app\.kapanlagi\.com\/galeri\/\?i=(.+?)"/);
  6077.     if (!iUrl) {
  6078.         iUrl = pageData.match(/<iframe id="frame_selebriti" src="(http:\/\/www\.kapanlagi\.com\/u\/showimage\.php\?i=.+?)"/);
  6079.         if (iUrl) {
  6080.             var req = new XMLHttpRequest();
  6081.             req.open("GET", iUrl[1], false);
  6082.             req.send(null);
  6083.        
  6084.             iUrl = req.responseText.match(/href="http:\/\/www\.kapanlagi\.com\/u\/image_view\.php\?image=(.+?)"/);
  6085.         }
  6086.     }
  6087.  
  6088.     if (!iUrl) {
  6089.         retVal.imgUrl = null;
  6090.         retVal.status = "ABORT";
  6091.         }
  6092.     else {
  6093.         retVal.imgUrl = iUrl[1];
  6094.         retVal.status = "OK";
  6095.         }
  6096.  
  6097.     return retVal;
  6098.     }]]></searchpattern>
  6099. </host>
  6100.  
  6101. <host id="kate-mansi">
  6102. <urlpattern>^http:\/\/kate-mansi\.net\/displayimage\.php\?album=\d+.pid=\d+</urlpattern>
  6103. <searchpattern>"ID: thepic"</searchpattern>
  6104. </host>
  6105.  
  6106. <host id="kawaiidream">
  6107. <urlpattern>^http:\/\/www\.kawaiidream\.net\/details\.php\?image_id=.+</urlpattern>
  6108. <searchpattern>"\.\/data\/media\/"</searchpattern>
  6109. </host>
  6110.  
  6111. <host id="keepapic">
  6112. <urlpattern>http:\/\/www\.keepapic\.com\/viewer\.php\?file=.+\.jpg</urlpattern>
  6113. <searchpattern>"REPLACE: 'viewer\\.php\\?file=','images/'"</searchpattern>
  6114. </host>
  6115.  
  6116. <host id="keepmyfile">
  6117. <urlpattern>^http:\/\/www\.keepmyfile\.com\/image\/</urlpattern>
  6118. <searchpattern>"ID: image"</searchpattern>
  6119. </host>
  6120.  
  6121. <host id="kemipic">
  6122. <urlpattern>http:\/\/www\.kemipic\.com\/share(?:\.php\?id=.+|-.+\.html)</urlpattern>
  6123. <searchpattern>"http:\\/\\/www\\.kemipic\\.com\\/image-.+\\.jpg"</searchpattern>
  6124. </host>
  6125.  
  6126. <host id="keptarolo">
  6127. <urlpattern>http:\/\/keptarolo\.hu\/.+\/.+\..{3,4}</urlpattern>
  6128. <searchpattern>"REPLACE: 'http:\\/\\/keptarolo\\.hu\\/(.+\\/.+\\..{3,4})', 'http://keptarolo.hu/kep/$1'"</searchpattern>
  6129. </host>
  6130.  
  6131. <host id="kindgirls">
  6132. <urlpattern>^http:\/\/www\.kindgirls\.com\/photo2?\/.+\/\d+\/\d+\/\d+(\/)?(\d+-\d+)?</urlpattern>
  6133. <searchpattern>"galh450p|\/galsx\/|(\/gal-\w+\/.+\/.+\.jpg)"</searchpattern>
  6134. </host>
  6135.  
  6136. <host id="kinghost">
  6137. <urlpattern>^http:\/\/www\d*\.kinghost\.com\/.+\.jpg</urlpattern>
  6138. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6139.     var retVal = new Object();
  6140.  
  6141.     retVal.imgUrl = pageUrl;
  6142.     retVal.status = "OK";
  6143.            
  6144.     return retVal;
  6145.     }]]></searchpattern>
  6146. </host>
  6147.  
  6148. <host id="kinkyfile">
  6149. <urlpattern>http:\/\/www\.kinkyfile\.com\/image\/show\/.+\/.+</urlpattern>
  6150. <searchpattern>"REPLACE: 'show','direct'"</searchpattern>
  6151. </host>
  6152.  
  6153. <host id="kodiefiles">
  6154. <urlpattern>^http:\/\/images\.kodiefiles\.nl\/\d+\/.+\.html</urlpattern>
  6155. <searchpattern>"full\\/.+\\..{3,4}"</searchpattern>
  6156. </host>
  6157.  
  6158. <host id="komodogirls">
  6159. <urlpattern>^http:\/\/komodogirls\.com\/(?!(pages|tag|login))[^?]+$</urlpattern>
  6160. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6161.     var hUrl = pageUrl.substr(0,pageUrl.indexOf('/',pageUrl.indexOf('.')));
  6162.     var iUrl = pageData.match(/src="\/var\/resizes\/(.+?)" alt="(.+?)"/);
  6163.     return iUrl ? {imgUrl: hUrl + "/var/albums/" + iUrl[1], fileName: iUrl[2] + ".jpg", status: "OK"} : {imgUrl: null, status: "ABORT"};
  6164. }]]></searchpattern>
  6165. </host>
  6166.  
  6167. <host id="konachan">
  6168. <urlpattern>^http:\/\/konachan\.com\/post\/show\/.+</urlpattern>
  6169. <searchpattern>"ID: image"</searchpattern>
  6170. </host>
  6171.  
  6172. <host id="kosty555">
  6173. <urlpattern>http:\/\/kosty555\.pp\.ru\/show\.php\/</urlpattern>
  6174. <searchpattern>"out"</searchpattern>
  6175. </host>
  6176.  
  6177. <host id="kristenstewart">
  6178. <urlpattern>^http:\/\/www\.kristenstewart\.com\.br\/galeria\/displayimage\.php\?album=</urlpattern>
  6179. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6180.     var iUrl = pageData.match(/img src=("|')(.+?)("|').+?class=("|')image("|')/);
  6181.     var iUrl2 = pageUrl.match(/http.+?galeria/) + "/" + iUrl[2].replace("normal_",""); 
  6182.     return iUrl2 ? {imgUrl: iUrl2, status: "OK"} : {imgUrl: null, status: "ABORT"}
  6183. }]]></searchpattern>
  6184. </host>
  6185.  
  6186. <host id="labatidora">
  6187. <urlpattern>^http:\/\/www\.labatidora\.net\/gallery\/.+\/pic-\d+\/</urlpattern>
  6188. <searchpattern>"class=\"borde\""</searchpattern>
  6189. </host>
  6190.  
  6191. <host id="laisfans">
  6192. <urlpattern>^http:\/\/www\.laisfans\.net\/gallery\/details.+?$</urlpattern>
  6193. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6194.     var hUrl = pageUrl.substr(0,pageUrl.indexOf('/',pageUrl.indexOf('.')));
  6195.     var iUrl = pageData.match(/".+?thumbnails\/(.+?)" /);
  6196.     return iUrl ? {imgUrl: hUrl + "/gallery/data/media/" + iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"};
  6197. }]]></searchpattern>
  6198. </host>
  6199.  
  6200. <host id="largeimagehost">
  6201. <urlpattern>^http:\/\/\w+\.largeimagehost\.com\/img\/.+\.html</urlpattern>
  6202. <searchpattern>"ID: thepic"</searchpattern>
  6203. </host>
  6204.  
  6205. <host id="latex-model.de">
  6206. <urlpattern>^http:\/\/(?:www\.)?latex-model\.de\/details\.php\?image_id=\d+</urlpattern>
  6207. <searchpattern>"src="\.\/data\/media\/.+\/.+?\..{3,4}""</searchpattern>
  6208. </host>
  6209.  
  6210. <host id="latex-model.de2">
  6211. <urlpattern>^http:\/\/(?:www\.)?latex-model\.de\/.+?\/index\.php\?.+?\..{3,4}$</urlpattern>
  6212. <searchpattern>"REPLACE: '\/index\.php\?', '/image.php?'"</searchpattern>
  6213. </host>
  6214.  
  6215. <host id="lazygirls.info">
  6216. <urlpattern>^http:\/\/www\.lazygirls\.info\/[^\/]+\/[^\/]+</urlpattern>
  6217. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6218.     var retVal = new Object();
  6219.    
  6220.     var iUrl = pageData.match(/<img src="(.+?\.sized\..{3,4})"/);
  6221.  
  6222.     if (!iUrl) {
  6223.         retVal.imgUrl = null;
  6224.         retVal.status = "ABORT";
  6225.         }
  6226.     else {
  6227.         retVal.imgUrl = iUrl[1].replace(/(.+\.)sized\.(.{3,4})/, "$1$2");
  6228.         retVal.status = "OK";
  6229.         }
  6230.  
  6231.     return retVal;
  6232.     }]]></searchpattern>
  6233. </host>
  6234.  
  6235. <host id="ld-host.de">
  6236. <urlpattern>^http:\/\/(?:www\.)?ld-host\.de\/show\/</urlpattern>
  6237. <searchpattern>"ID: image"</searchpattern>
  6238. </host>
  6239.  
  6240. <host id="le-boxon-de-lex">
  6241. <urlpattern>^http:\/\/le-boxon-de-lex\.fr\/galerie\/image\/</urlpattern>
  6242. <searchpattern>"http:\/\/le-boxon-de-lex\.fr\/galerie\/originales\/"</searchpattern>
  6243. </host>
  6244.  
  6245. <host id="leathergirlsblog">
  6246. <urlpattern>^http:\/\/www\.leathercelebrities\.com\/photos\/viewgallery\/</urlpattern>
  6247. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6248.     var iUrl = pageData.match(/<a class="download"[^>]+?href="([^"]+)"/);
  6249.     return iUrl ? {imgUrl: iUrl[1],status:"OK"} : {imgUrl: null, status: "ABORT"};
  6250. }]]></searchpattern>
  6251. </host>
  6252.  
  6253. <host id="leechimg">
  6254. <urlpattern>^http:\/\/leechimg\.com\/.+$</urlpattern>
  6255. <searchpattern>"ID: full_image"</searchpattern>
  6256. </host>
  6257.  
  6258. <host id="lettherebeporn">
  6259. <urlpattern>^http:\/\/www\.lettherebeporn\.com\/galleries\/\d+\/\d+\/.+\/.+\.php</urlpattern>
  6260. <searchpattern>"ID: fullImage"</searchpattern>
  6261. </host>
  6262.  
  6263. <host id="levinpic">
  6264. <urlpattern>^http:\/\/levinpic\.org\/[a-zA-Z0-9]+\.html</urlpattern>
  6265. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6266.     var PostData = pageData.match(/(?=<Form\b)((.|\r|\n)+?)<\/form>/i)[1].match(/<input.+?\/?>/g);
  6267.     PostData = PostData.map(function(input){return input.match(/name=('|")(.+?)\1/)[2] + '=' + input.match(/value=('|")(.+?)\1/)[2]}).join('&');
  6268.  
  6269.     var req = new XMLHttpRequest();
  6270.     req.open("POST", pageUrl, false);
  6271.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  6272.     req.send(PostData);
  6273.  
  6274.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/img\/.+?\.jpe?g)\1/i);
  6275.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  6276. }]]></searchpattern>
  6277. </host>
  6278.  
  6279. <host id="lilect.net">
  6280. <urlpattern>^http:\/\/.+\.lilect\.net\/.+\/files\/.+\..{3,4}</urlpattern>
  6281. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6282.     return {imgUrl: pageUrl, status: "OK"};
  6283.     }]]></searchpattern>
  6284. </host>
  6285.  
  6286. <host id="lingerie.haberji">
  6287. <urlpattern>^http:\/\/lingerie\.haberji\.com\/.+\/.+\d+\/$</urlpattern>
  6288. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6289.     var retVal = new Object();
  6290.    
  6291.     var iUrl = pageData.match(/<p class="[^"]*attachment"><a href='(.+?)'/);
  6292.  
  6293.     if (!iUrl) {
  6294.         retVal.imgUrl = null;
  6295.         retVal.status = "ABORT";
  6296.         }
  6297.     else {
  6298.         retVal.imgUrl = iUrl[1];
  6299.         retVal.status = "OK";
  6300.         }
  6301.  
  6302.     return retVal;
  6303.     }]]></searchpattern>
  6304. </host>
  6305.  
  6306. <host id="link2you.ru">
  6307. <urlpattern>^http:\/\/link2you\.ru\/\d+\/.+</urlpattern>
  6308. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6309.     var retVal = new Object();
  6310.    
  6311.     retVal.imgUrl = pageUrl.replace(/^http:\/\/link2you\.ru\/\d+\//, "http://");
  6312.     retVal.status = "REQUEUE";
  6313.  
  6314.     return retVal;
  6315.     }]]></searchpattern>
  6316. </host>
  6317.  
  6318. <host id="linkbabes">
  6319. <urlpattern>^http:\/\/.+\.linkbabes\.com\/?$</urlpattern>
  6320. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6321.     var retVal = {imgUrl: null, status: "ABORT"};
  6322.    
  6323.     var newPageUrl = pageData.match(/Lbjs\.TargetUrl = '(.+?)'/);
  6324.     if (newPageUrl) {
  6325.         retVal.imgUrl = newPageUrl[1].replace(/&amp;/g, "&");
  6326.         retVal.status = "REQUEUE";
  6327.     }
  6328.  
  6329.     return retVal;
  6330. }]]></searchpattern>
  6331. </host>
  6332.  
  6333. <host id="linkbee">
  6334. <urlpattern>^http:\/\/linkbee\.com\/.+</urlpattern>
  6335. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6336.     var retVal = new Object();
  6337.    
  6338.     var iUrl = pageData.match(/iframe\ssrc="(.+?)"\sframeborder=/);
  6339.  
  6340.     if (!iUrl) {
  6341.         retVal.imgUrl = null;
  6342.         retVal.status = "ABORT";
  6343.         }
  6344.     else {
  6345.         retVal.imgUrl = iUrl[1];
  6346.         retVal.status = "REQUEUE";
  6347.         }
  6348.  
  6349.     return retVal;
  6350.     }]]></searchpattern>
  6351. </host>
  6352.  
  6353. <host id="linkbucks">
  6354. <urlpattern>^http:\/\/.+\.linkbucks\.com\/$</urlpattern>
  6355. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6356.     var retVal = new Object();
  6357.  
  6358.     var rottenDick = pageData.match(/<frame id="frame2".+src="(.+)">/);
  6359.     if (!rottenDick) rottenDick = pageData.match(/(?:linkDestUrl|TargetUrl) = '(.+?)'/);
  6360.     if (!rottenDick) rottenDick = pageData.match(/iframe id="content" src="(.+?)"/);
  6361.  
  6362.     if (!rottenDick) {
  6363.         retVal.status = "ABORT";
  6364.         retVal.imgUrl = null;
  6365.         }
  6366.     else {
  6367.         retVal.status = "REQUEUE";
  6368.         retVal.imgUrl = rottenDick[1];
  6369.         }
  6370.  
  6371.     return retVal;
  6372.     }]]></searchpattern>
  6373. </host>
  6374.  
  6375. <host id="linkshrink">
  6376. <urlpattern>http:\/\/linkshrink\.net\/.+\/imgchili\.net\/show\/.+\.jpg$</urlpattern>
  6377. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6378.     var retVal = {imgUrl: null, status: "ABORT"};
  6379.        
  6380.     var iUrl = pageUrl.replace(/linkshrink.+(?=imgchili\.net)/, "");
  6381.    
  6382.     if (iUrl) {
  6383.         retVal.imgUrl = iUrl;
  6384.         retVal.status = "REQUEUE";
  6385.         }
  6386.    
  6387.     return retVal;
  6388. }]]></searchpattern>
  6389. </host>
  6390.  
  6391. <host id="listal">
  6392. <urlpattern>^http:\/\/www\.listal\.com\/viewimage\/\d+h?</urlpattern>
  6393. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6394.     var retVal = new Object();
  6395.    
  6396.     /*if (pageUrl.match(/^http:\/\/www\.listal\.com\/viewimage\/\d+$/)) {
  6397.         var fullsize = pageData.match(/href='(\/viewimage\/\d+h)'/);
  6398.         if (fullsize) {
  6399.             retVal.imgUrl = "http:\/\/www\.listal\.com" + fullsize[1];
  6400.             retVal.status = "REQUEUE";
  6401.             return retVal;
  6402.             }
  6403.         }*/
  6404.    
  6405.     var iUrl = pageData.match(/rel="image_src" href="(http:\/\/img\.listal\.com\/image\/\d+\/\d+full-(.+?))"/);
  6406.    
  6407.     if (!iUrl) {
  6408.         retVal.imgUrl = null;
  6409.         retVal.status = "ABORT";
  6410.         }
  6411.     else {
  6412.         retVal.imgUrl = iUrl[1].replace(/(\/image\/\d+\/)\d+(full-)/, "$16000$2");
  6413.         retVal.status = "OK";
  6414.         var name = iUrl[2].match(/^(.+)(\..{3,4})$/);
  6415.         if (name) retVal.fileName = name[1] + Math.random().toString().substring(2,10) + name[2];
  6416.         else retVal.fileName = iUrl[2];
  6417.         }
  6418.  
  6419.     return retVal;
  6420.     }]]></searchpattern>
  6421. </host>
  6422.  
  6423. <host id="livejasminbabes">
  6424. <urlpattern>^http:\/\/(?:www\.)?livejasminbabes\.net\/.+\.html</urlpattern>
  6425. <searchpattern>"http:\/\/[^\/]+\/.+\/\d+\/\d{2}\..{3,4}"</searchpattern>
  6426. </host>
  6427.  
  6428. <host id="lkrak">
  6429. <urlpattern>^http:\/\/lkrak\.com\/.+\/\?v=.+\..{3,4}</urlpattern>
  6430. <searchpattern>"REPLACE: '\?v=(.+)' , 'images/$1'"</searchpattern>
  6431. </host>
  6432.  
  6433. <host id="lnk.co">
  6434. <urlpattern>^http:\/\/(?:www\.)?lnk\.co\/.+</urlpattern>
  6435. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6436.     var retVal = {};
  6437.  
  6438.     var newPageUrl = pageData.match(/<input[^>]+id='urlholder' value='([^']+)'/);
  6439.    
  6440.     if (!newPageUrl) {
  6441.         retVal.status = "ABORT";
  6442.         retVal.imgUrl = null;
  6443.         }
  6444.     else {
  6445.         retVal.status = "REQUEUE";
  6446.         retVal.imgUrl = newPageUrl[1];
  6447.         }
  6448.  
  6449.     return retVal;
  6450.     }]]></searchpattern>
  6451. </host>
  6452.  
  6453. <host id="loc.gov">
  6454. <urlpattern>http:\/\/(?:www\.)?loc\.gov\/pictures\/collection\/.+\/item\/.+\/(?:resource\/)?</urlpattern>
  6455. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6456.      var retVal = {};
  6457.    
  6458.     var dlUrls = pageData.match(/href="http:\/\/lcweb[0-9]*\.loc\.gov\/(?:service|master)\/pnp\/(?:[^\/]*\/)+?[a-zA-Z0-9]+\.[a-zA-Z]+"/g);
  6459.    
  6460.      if (!dlUrls) {
  6461.          retVal.imgUrl = null;
  6462.          retVal.status = "ABORT";
  6463.        
  6464.         return retVal;
  6465.     }
  6466.  
  6467.     var lastDlUrl = dlUrls[dlUrls.length - 1];
  6468.  
  6469.     var iUrl = lastDlUrl.match(/href="(.+)"/);
  6470.    
  6471.     if (!iUrl) {
  6472.         retVal.imgUrl = null;
  6473.         retVal.status = "ABORT"
  6474.        
  6475.         return retVal;
  6476.     }
  6477.    
  6478.     retVal.imgUrl = iUrl[1];
  6479.     retVal.status = "OK";
  6480.  
  6481.     return retVal;
  6482.     }]]></searchpattern>
  6483. </host>
  6484.  
  6485. <host id="lotsofsecrets">
  6486. <urlpattern>^http:\/\/lotsofsecrets\.com\/wp-content\/uploads\/\d+\/\d+\/.+</urlpattern>
  6487. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6488.     var retVal = new Object();
  6489.    
  6490.     retVal.imgUrl = pageUrl;
  6491.     retVal.status = "OK";
  6492.    
  6493.     return retVal;
  6494.     }]]></searchpattern>
  6495. </host>
  6496.  
  6497. <host id="lupiupload">
  6498. <urlpattern>^http:\/\/www\.lupiupload\.de\/file\.php\/file\/.+</urlpattern>
  6499. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6500.     var retVal = new Object();
  6501.  
  6502.     var iUrl = pageData.match(/<p class="file-img">.+?href="(.+?)"/);
  6503.  
  6504.     if(!iUrl) {
  6505.         retVal.imgUrl = null;
  6506.         retVal.status = "ABORT";
  6507.         }
  6508.     else {
  6509.         retVal.imgUrl = iUrl[1];
  6510.         retVal.status = "OK";
  6511.         }
  6512.  
  6513.     return retVal;
  6514.     }]]></searchpattern>
  6515. </host>
  6516.  
  6517. <host id="luscious">
  6518. <urlpattern>http:\/\/lu\.scio\.us\/.+\/albums\/.+?\/\d{2,}</urlpattern>
  6519. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6520.     var retVal = new Object();
  6521.  
  6522.     var tmpMatch = pageData.match(/<a.+title="Show fullsized image".+href="(.+?)"/);
  6523.  
  6524.     if (tmpMatch) var the_url = tmpMatch[1];
  6525.  
  6526.     if (!the_url) {
  6527.         retVal.status = "ABORT";
  6528.         retVal.imgUrl = null;
  6529.         }
  6530.     else {
  6531.         retVal.status = "OK";
  6532.         retVal.imgUrl = the_url;
  6533.         }
  6534.     return retVal;
  6535.     }]]></searchpattern>
  6536. </host>
  6537.  
  6538. <host id="luscious.net">
  6539. <urlpattern>^http:\/\/luscious\.net\/.+\/id\/\d+\/.+</urlpattern>
  6540. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6541.     var retVal = {imgUrl: null, status: "ABORT"};
  6542.    
  6543.     var iUrl = pageData.match(/<a href="(.+?)" class='button'>\s*Download&nbsp;Fullsize&nbsp;Picture/);
  6544.     if (iUrl) {
  6545.         retVal.imgUrl = iUrl[1];
  6546.         retVal.status = "OK";
  6547.     }
  6548.  
  6549.     return retVal;
  6550. }]]></searchpattern>
  6551. </host>
  6552.  
  6553. <host id="ma-collection-de-pubs.com">
  6554. <urlpattern>^http:\/\/(?:www\.)?ma-collection-de-pubs\.com\/.+\/html\/.+\.html</urlpattern>
  6555. <searchpattern>"REPLACE: '\\/html\\/(.+)\\.html' , '/$1.jpg'"</searchpattern>
  6556. </host>
  6557.  
  6558. <host id="madimage">
  6559. <urlpattern>^http:\/\/madimage\.org\/img-[\da-f]+\.html$</urlpattern>
  6560. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  6561. </host>
  6562.  
  6563. <host id="majhost">
  6564. <urlpattern>^http:\/\/www\.majhost\.com\/cgi-bin\/gallery\.cgi\?i=.+</urlpattern>
  6565. <searchpattern>"SRC="\/gallery\/.+"</searchpattern>
  6566. </host>
  6567.  
  6568. <host id="mediafire.com">
  6569. <urlpattern>^^http:\/\/www\.mediafire\.com\/view\/.+?/.+?.jpg</urlpattern>
  6570. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6571.     // Default returned value when no image or link URL found
  6572.     var retVal = {imgUrl: null, status: "ABORT"};
  6573.    
  6574.     var iUrl = pageData.match('content="(http:\/\/www\.mediafire\.com\/convkey\/.+?\/.+?.jpg)"');
  6575.    
  6576.     if (iUrl) {
  6577.         retVal.imgUrl = iUrl[1];
  6578.         retVal.status = "OK";
  6579.         }
  6580.    
  6581.     return retVal;
  6582. }]]></searchpattern>
  6583. </host>
  6584.  
  6585. <host id="megapix">
  6586. <urlpattern>^http:\/\/www\.megapix\.com\/\?p=</urlpattern>
  6587. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6588.     var retVal = {};
  6589.    
  6590.     var ext = pageData.match(/<div class="single_pic1"(?:.|\s)+?<img[^>]+src="http:\/\/www\.megapix\.com\/(\w+\.)(.{3,4})\?p=/);
  6591.    
  6592.     if (!ext) {
  6593.         retVal.imgUrl = null;
  6594.         retVal.status = "ABORT";
  6595.         }
  6596.     else {
  6597.         retVal.imgUrl = pageUrl + "." + ext[2] + "&action=download";
  6598.         retVal.status = "OK";
  6599.         retVal.fileName = ext[1] + ext[2];
  6600.         }
  6601.  
  6602.     return retVal;
  6603.     }]]></searchpattern>
  6604. </host>
  6605.  
  6606. <host id="meremmelek">
  6607. <urlpattern>^http:\/\/images\.meremmelek\.net\/viewer\.php\?file=.+</urlpattern>
  6608. <searchpattern>"REPLACE: 'viewer\\.php\\?file=','images/'"</searchpattern>
  6609. </host>
  6610.  
  6611. <host id="met-art">
  6612. <urlpattern>^http:\/\/hosted\.met-art\.com\/.+\/full\/.+\..{3,4}$</urlpattern>
  6613. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6614.     var retVal = new Object();
  6615.    
  6616.     retVal.imgUrl = pageUrl;
  6617.     retVal.status = "OK";
  6618.    
  6619.     return retVal;
  6620.     }]]></searchpattern>
  6621. </host>
  6622.  
  6623. <host id="met-nude">
  6624. <urlpattern>^http:\/\/www\.met-nude\.com\/FreeEroticNude.+?\/.+?\/jpg\/.+?\.html</urlpattern>
  6625. <searchpattern>"ID: imgImage"</searchpattern>
  6626. </host>
  6627.  
  6628. <host id="mexaupload">
  6629. <urlpattern>^http:\/\/www\.mexaupload\.com\/show\.php\/</urlpattern>
  6630. <searchpattern>"http:\\/\\/www\\.mexaupload\\.com\\/out\\.php\\/i.+"</searchpattern>
  6631. </host>
  6632.  
  6633. <host id="mih">
  6634. <urlpattern>^http:\/\/gallery\.myincesthentai\.com\/albums\/.+\/[^page\/][0-9]+$</urlpattern>
  6635. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6636.     var retVal = new Object();
  6637.  
  6638.     var srcPat = "http:\\/\\/static[0-9]+\\.myincesthentai\\.com\\/[0-9]+\\/[0-9]+\\/.+_(.+?|)\\.(jpg|jpeg|png)";
  6639.  
  6640.     var searchPat = new RegExp("<a.+href(?:\\s+)?=(?:\\s+)?(\"|')?(" + srcPat + ")\\1.*?>");
  6641.     var tmpMatch = pageData.match(searchPat);
  6642.  
  6643.     if (tmpMatch) var the_url = tmpMatch[2];
  6644.  
  6645.     if (!the_url) {
  6646.         retVal.status = "ABORT";
  6647.         retVal.imgUrl = null;
  6648.     }
  6649.     else {
  6650.         retVal.status = "OK";
  6651.         retVal.imgUrl = the_url;
  6652.     }
  6653.     var regex = new RegExp("albums\\/.+/(\\d+)");
  6654.     var imgs= pageUrl.match(regex);
  6655.     try {
  6656.         retVal.fileName = imgs[1] + ".jpg";
  6657.     }
  6658.     catch(e) {
  6659.         retVal.fileName = Math.random().toString().substring(2) + ".jpg";
  6660.     }
  6661.  
  6662.     return retVal;
  6663. }]]></searchpattern>
  6664. </host>
  6665.  
  6666. <host id="milftoon">
  6667. <urlpattern>^https?:\/\/(?:www\.)?y3df\.com\/members\/.+?content.+?$</urlpattern>
  6668. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6669.     var rad = pageUrl.match(/(https?:\/\/.+?\/content\/).+?\.html/);
  6670.     var iUrl = pageData.match(/img src="(images\/.+?)"/);
  6671.     return iUrl ? {imgUrl: rad[1] + iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  6672. }]]></searchpattern>
  6673. </host>
  6674.  
  6675. <host id="miliwoman">
  6676. <urlpattern>^http:\/\/www\.miliwoman\.com\/.+\/.+\..{3,4}\.html</urlpattern>
  6677. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6678.     var retVal = new Object();
  6679.    
  6680.     var iUrl = pageData.match(/href="(.+\/military_woman.+\?p=\*full-image)"/);
  6681.        
  6682.     if (!iUrl) {
  6683.         retVal.imgUrl = null;
  6684.         retVal.status = "ABORT";
  6685.         }
  6686.     else {
  6687.         retVal.imgUrl = "http://www.miliwoman.com/" + iUrl[1];
  6688.         retVal.status = "OK";
  6689.         }
  6690.  
  6691.     return retVal;
  6692.     }]]></searchpattern>
  6693. </host>
  6694.  
  6695. <host id="mjv-art">
  6696. <urlpattern>^http:\/\/mjv-art\.org\/jvwall\/view_post\/.+</urlpattern>
  6697. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6698.     var retVal = new Object();
  6699.    
  6700.     var iUrl = pageData.match(/href="(.+?\/get_image\/.+?)"/);
  6701.  
  6702.     if (!iUrl) {
  6703.         retVal.imgUrl = null;
  6704.         retVal.status = "ABORT";
  6705.         }
  6706.     else {
  6707.         retVal.imgUrl = iUrl[1];
  6708.         retVal.status = "OK";
  6709.         }
  6710.  
  6711.     return retVal;
  6712.     }]]></searchpattern>
  6713. </host>
  6714.  
  6715. <host id="moar-imagez">
  6716. <urlpattern>^http:\/\/moar-imagez\.com\/img-[\da-f]+\.html$</urlpattern>
  6717. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6718.     var iUrl = pageData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  6719.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"};
  6720. }]]></searchpattern>
  6721. </host>
  6722.  
  6723. <host id="modelmayhem">
  6724. <urlpattern>^http:\/\/www\.modelmayhem\.com\/portfolio\/pic\/.+</urlpattern>
  6725. <searchpattern>"\\/photos\\/"</searchpattern>
  6726. </host>
  6727.  
  6728. <host id="modelurl">
  6729. <urlpattern>^http:\/\/modelurl\.com\/.+\/photos\/.+\/\d+\.aspx</urlpattern>
  6730. <searchpattern>"http:\/\/media\.modelurl\.com\/album\/\d+\/\d+\/\d+\..{3,4}"</searchpattern>
  6731. </host>
  6732.  
  6733. <host id="moe.hm">
  6734. <urlpattern>^http:\/\/.+\.moe\.hm\/.+\/img\/.+\.(j|J)(p|P)(e|E)?(g|G)</urlpattern>
  6735. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6736.     return {imgUrl: pageUrl, status: "OK"};
  6737.     }]]></searchpattern>
  6738. </host>
  6739.  
  6740. <host id="moe.imouto">
  6741. <urlpattern>^http:\/\/moe\.imouto\.org\/post\/show\/.+</urlpattern>
  6742. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6743.     var retVal = new Object();
  6744.    
  6745.     var theId = "highres";
  6746.    
  6747.     var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  6748.     var tmpMatch = pageData.match(searchPat);
  6749.     if (tmpMatch) {
  6750.         tmpMatch = tmpMatch[0];
  6751.         var the_url = tmpMatch.match(/href(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  6752.         if (the_url) the_url = the_url[2];
  6753.         }
  6754.     else {
  6755.         theId = "image";
  6756.         searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  6757.         tmpMatch = pageData.match(searchPat);
  6758.         if (tmpMatch) {
  6759.             tmpMatch = tmpMatch[0];
  6760.             the_url = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  6761.             if (the_url) the_url = the_url[2];
  6762.             }
  6763.         }
  6764.  
  6765.     if(!the_url) {
  6766.         retVal.imgUrl = null;
  6767.         retVal.status = "ABORT";
  6768.         }
  6769.     else {
  6770.         retVal.imgUrl = the_url;
  6771.         retVal.status = "OK";
  6772.         }
  6773.  
  6774.     return retVal;
  6775.     }]]></searchpattern>
  6776. </host>
  6777.  
  6778. <host id="monkeymedia">
  6779. <urlpattern>^http:\/\/monkeymediaimagehosting\.com\/v\/.+\.html</urlpattern>
  6780. <searchpattern>"\\/d\\/.+\\/.+\\...."</searchpattern>
  6781. </host>
  6782.  
  6783. <host id="monsterfiles">
  6784. <urlpattern>^http:\/\/hosting\.monsterfiles\.com\/show\/\d+</urlpattern>
  6785. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6786.     var retVal = new Object();
  6787.    
  6788.     var iUrl = pageData.match(/"(http:\/\/[^\/]+\.monsterfiles\.com\/dl\/.+?)"/);
  6789.  
  6790.     if (!iUrl) {
  6791.         retVal.imgUrl = null;
  6792.         retVal.status = "ABORT";
  6793.         }
  6794.     else {
  6795.         retVal.imgUrl = iUrl[1];
  6796.         retVal.status = "OK";
  6797.         }
  6798.  
  6799.     return retVal;
  6800.     }]]></searchpattern>
  6801. </host>
  6802.  
  6803. <host id="morazzia">
  6804. <urlpattern>^http:\/\/www\.morazzia\.com\/galleries\/.+\.s?html</urlpattern>
  6805. <searchpattern>"morazzia\.com\/galleries\/.+\..{3,4}"</searchpattern>
  6806. </host>
  6807.  
  6808. <host id="morethanporn">
  6809. <urlpattern>^http:\/\/www\.morethanporn\.com\/attachment\.php\?attachmentid=\d+</urlpattern>
  6810. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6811.     var retVal = new Object();
  6812.  
  6813.     retVal.imgUrl = pageUrl;
  6814.     retVal.status = "OK";
  6815.  
  6816.     return retVal;
  6817.     }]]></searchpattern>
  6818. </host>
  6819.  
  6820. <host id="morpics">
  6821. <urlpattern>http:\/\/morpics\.org\/viewer\.php\?file=.+</urlpattern>
  6822. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  6823. </host>
  6824.  
  6825. <host id="motherless">
  6826. <urlpattern>^http:\/\/motherless\.com\/(?:g\/.+\/)?[A-Z0-9]+(?:\/[A-Z0-9]+)?$</urlpattern>
  6827. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6828.     var retVal = new Object();
  6829.  
  6830.     var iUrl = "";
  6831.     var isFlv = pageData.match(/<div.+id="mediaspace"/);
  6832.     if (isFlv) {
  6833.         /*var __file_url = pageData.match(/file_url = '(.+)'/);
  6834.         __file_url = __file_url[1];
  6835.  
  6836.         var b = [],
  6837.             c, i = __file_url.length,
  6838.             a = 'a'.charCodeAt(),
  6839.             z = a + 26,
  6840.             A = 'A'.charCodeAt(),
  6841.             Z = A + 26;
  6842.         while (i--) {
  6843.             c = __file_url.charCodeAt(i);
  6844.             if (c >= a && c < z) {
  6845.                 b[i] = String.fromCharCode(((c - a + 13) % (13 * 2)) + a);
  6846.             } else if (c >= A && c < Z) {
  6847.                 b[i] = String.fromCharCode(((c - A + 13) % (13 * 2)) + A);
  6848.             } else {
  6849.                 b[i] = __file_url.charAt(i);
  6850.             }
  6851.         }
  6852.         __file_url = b.join('');
  6853.        
  6854.         var main_url = pageData.match(/s1.addParam\('flashvars','file=(.+?)'/);
  6855.         main_url = main_url[1];
  6856.         iUrl = main_url + __file_url + ".flv";*/
  6857.        
  6858.         iUrl = pageData.match(/file=(.+?)&/)[1];
  6859.         }
  6860.     else {
  6861.         iUrl = pageData.match(/<img\s+src="(http:\/\/s\d+\.motherless(?:media)?\.com\/dev.+\/\d+\/\d+\/\d+\/.+\..{3,4})"\s+style="/);
  6862.         if (iUrl) iUrl = iUrl[1];
  6863.         }
  6864.        
  6865.     if (!iUrl) {
  6866.         retVal.imgUrl = null;
  6867.         retVal.status = "ABORT";
  6868.         }
  6869.     else {
  6870.         retVal.imgUrl = iUrl;
  6871.         retVal.status = "OK";
  6872.         }
  6873.  
  6874.     return retVal;
  6875.     }]]></searchpattern>
  6876. </host>
  6877.  
  6878. <host id="multiply.com">
  6879. <urlpattern>^http:\/\/(?:\w+\.)?multiply\.com\/photos\/photo\/</urlpattern>
  6880. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6881.     var retVal = new Object();
  6882.    
  6883.     var newUrl = pageUrl.replace(/\/photo\//,"/hi-res/");
  6884.     var req = new XMLHttpRequest();
  6885.     req.open("GET", newUrl, false);
  6886.     req.send(null);
  6887.    
  6888.     if (req.status != 200) {
  6889.         retVal.imgUrl = null;
  6890.         retVal.status = "ABORT";
  6891.         return retVal;
  6892.         }
  6893.    
  6894.     var newPage = req.responseText;
  6895.     var iUrl = newPage.match(/<img[^>]*?src='(.+?1200x1200.+?)'/);
  6896.    
  6897.     if (!iUrl) {
  6898.         retVal.imgUrl = null;
  6899.         retVal.status = "ABORT";
  6900.         }
  6901.     else {
  6902.         retVal.imgUrl = iUrl[1];
  6903.         retVal.status = "OK";
  6904.         }
  6905.  
  6906.     return retVal;
  6907.     }]]></searchpattern>
  6908. </host>
  6909.  
  6910. <host id="munemune">
  6911. <urlpattern>^http:\/\/www\.munemune\.net\/post\/view\/.+</urlpattern>
  6912. <searchpattern>"ID: main_image"</searchpattern>
  6913. </host>
  6914.  
  6915. <host id="muscleimg">
  6916. <urlpattern>^http:\/\/(?:www\.)?muscleimg\.com\/image\/</urlpattern>
  6917. <searchpattern>"ID: full_image"</searchpattern>
  6918. </host>
  6919.  
  6920. <host id="my-image-host">
  6921. <urlpattern>http:\/\/www\.my-image-host\.com\/viewer\.php\?file=.+</urlpattern>
  6922. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)', 'images/$1'"</searchpattern>
  6923. </host>
  6924.  
  6925. <host id="myadultimage">
  6926. <urlpattern>http:\/\/myadultimage\.com\/viewer\.php\?file=.+</urlpattern>
  6927. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  6928. </host>
  6929.  
  6930. <host id="myarchives">
  6931. <urlpattern>^http:\/\/www\.myarchives\.net\/gallery\/showimage\.php\?i=\d+</urlpattern>
  6932. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6933.     var retVal = new Object();
  6934.    
  6935.     var iUrl = pageData.match(/var bigPicUrl = '(.+?)'/);
  6936.     if (!iUrl) iUrl = pageData.match(/id="vbgbigimg".+src="(.+?)"/);
  6937.  
  6938.     if (!iUrl) {
  6939.         retVal.imgUrl = null;
  6940.         retVal.status = "ABORT";
  6941.         }
  6942.     else {
  6943.         retVal.imgUrl = iUrl[1];
  6944.         retVal.status = "OK";
  6945.         }
  6946.  
  6947.     return retVal;
  6948.     }]]></searchpattern>
  6949. </host>
  6950.  
  6951. <host id="myasianphotos">
  6952. <urlpattern>http:\/\/www\.myasianphotos\.com\/modules\/gallery\/img-.+\.htm</urlpattern>
  6953. <searchpattern>"\.\/data\/media\/\d+\/.+"</searchpattern>
  6954. </host>
  6955.  
  6956. <host id="myceleb">
  6957. <urlpattern>^http:\/\/myceleb\.net\/u\/v\/\?q=</urlpattern>
  6958. <searchpattern>"ID: img"</searchpattern>
  6959. </host>
  6960.  
  6961. <host id="myhentaicomics">
  6962. <urlpattern>^http:\/\/myhentaicomics\.com\/index\.php\/.+\/\d+$</urlpattern>
  6963. <searchpattern>"class="g-resize""</searchpattern>
  6964. </host>
  6965.  
  6966. <host id="myimg.club">
  6967. <urlpattern>^http:\/\/myimg\.club\/\w+$</urlpattern>
  6968. <searchpattern><![CDATA[function(pageData, pageUrl) {
  6969.     var id = pageUrl.match(/https?:\/\/[^/]+\/([^/\.]+)/);
  6970.     var req = new XMLHttpRequest();
  6971.     req.open("POST", pageUrl, false);
  6972.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  6973.     req.send("op=view&amp;id="+id[1]+"&amp;pre=2&amp;next=Continue to image...");
  6974.    
  6975.     var iUrl = (req.responseText).match(/<img src=\"(.+?)\" class=\"pic\" alt=\"(.+?)\"/);
  6976.     return iUrl ? {imgUrl: iUrl[1], fileName: iUrl[2].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  6977. }]]></searchpattern>
  6978. </host>
  6979.  
  6980. <host id="myimgallery">
  6981. <urlpattern>^http:\/\/www\.myimgallery\.com\/showimages\/.+\.html</urlpattern>
  6982. <searchpattern>"http:\\/\\/www\\.myimgallery\\.com\\/outimages\\/.+\\?id=.+"</searchpattern>
  6983. </host>
  6984.  
  6985. <host id="mymangacomics">
  6986. <urlpattern>^http:\/\/mymangacomics\.com\/index\.php\/.+\/\d+$</urlpattern>
  6987. <searchpattern>"class="g-resize""</searchpattern>
  6988. </host>
  6989.  
  6990. <host id="myphoto.to">
  6991. <urlpattern>http:\/\/myphoto\.to\/View\/.+\/.+</urlpattern>
  6992. <searchpattern>"REPLACE: 'View','Images'"</searchpattern>
  6993. </host>
  6994.  
  6995. <host id="myphotos">
  6996. <urlpattern>^http:\/\/celebs\.myphotos\.cc\/hosting2\/public\/pview\/</urlpattern>
  6997. <searchpattern>"REPLACE: 'pview\\/' , ''"</searchpattern>
  6998. </host>
  6999.  
  7000. <host id="myprops">
  7001. <urlpattern>http:\/\/myprops\.org\/.+content\/.+\/$</urlpattern>
  7002. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7003.     var retVal = new Object();
  7004.    
  7005.     var iUrl = pageData.match(/<img.+src="(http:\/\/myprops\.org\/.+?\/ImageProduct\/.+?\/.+?)"/);
  7006.    
  7007.     if (!iUrl) {
  7008.         retVal.imgUrl = null;
  7009.         retVal.status = "ABORT";
  7010.         }
  7011.     else {
  7012.         retVal.imgUrl =iUrl[1].replace(/_e(.{3,4})/, '_o$1');
  7013.         retVal.status = "OK";
  7014.         }
  7015.  
  7016.     return retVal;
  7017.     }]]></searchpattern>
  7018. </host>
  7019.  
  7020. <host id="mypublicpix">
  7021. <urlpattern>^http:\/\/www\d*\.mypublicpix\.com\/index\.php\?img=.+</urlpattern>
  7022. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7023.     var retVal = new Object();
  7024.     var newUrl;
  7025.     var req = new XMLHttpRequest()
  7026.  
  7027.     newUrl = pageUrl.replace(/(http:\/\/www\d*\.mypublicpix\.com\/index\.php)(.+)/, "http://imagearn.com/imagearn.php$2");
  7028.    
  7029.     req.open("GET", newUrl, false);
  7030.     req.send(null);
  7031.        
  7032.     newUrl = req.getResponseHeader("refresh");
  7033.     newUrl = newUrl.match(/url=(http:\/\/[^:"'<>]+)/i);
  7034.  
  7035.     if (!newUrl)
  7036.     {
  7037.         retVal.imgUrl = null;
  7038.         retVal.status = "ABORT";
  7039.     }
  7040.     else
  7041.     {
  7042.         retVal.imgUrl = newUrl[1];
  7043.         retVal.status = "REQUEUE";
  7044.     }
  7045.        
  7046.     return retVal;
  7047.     }]]></searchpattern>
  7048. </host>
  7049.  
  7050. <host id="myspace">
  7051. <urlpattern>^http:\/\/viewmorepics\.myspace\.com\/index\.cfm\?fuseaction=viewImage.+imageID=\d+</urlpattern>
  7052. <searchpattern>"ID: userImage"</searchpattern>
  7053. </host>
  7054.  
  7055. <host id="myspace2">
  7056. <urlpattern>^http:\/\/www\.myspace\.com\/.+\/photos\/\d+</urlpattern>
  7057. <searchpattern>"ID: singlePhotoImage"</searchpattern>
  7058. </host>
  7059.  
  7060. <host id="myspace3">
  7061. <urlpattern>^https?:\/\/myspace\.com\/.+?\/mixes\/.+?\/photo\/[0-9]+?$</urlpattern>
  7062. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7063.     var retVal = {};
  7064.    
  7065.     var iUrl = pageData.match(/https?:\/\/.+?-images\.myspacecdn\.com\/images[0-9]+\/[0-9]+\/(.+?)\/full.jpg/);
  7066.     var iID = pageData.match(/link(?:\\s+)?rel=\"canonical\"/);
  7067.  
  7068.     if (!iID) {
  7069.         retVal.imgUrl = null;
  7070.         retVal.status = "ABORT";
  7071.     } else {
  7072.         retVal.imgUrl = iUrl[0];
  7073.         retVal.status = "OK";
  7074.         retVal.fileName = iUrl[1];
  7075.     }
  7076.     return retVal;
  7077. }]]></searchpattern>
  7078. </host>
  7079.  
  7080. <host id="mytasteinwomen">
  7081. <urlpattern>^http:\/\/mytasteinwomen\.com\/post\/\d+</urlpattern>
  7082. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7083.     var retVal = new Object();
  7084.    
  7085.     var photo_div = pageData.match(/<div class="photo-post"(?:.|\s)+?<\/div>/);
  7086.     if (photo_div) {
  7087.         photo_div = photo_div[0];
  7088.         var iUrl = photo_div.match(/<a href="([^"]+)".+?<img src="([^"]+)"/);
  7089.         if (!iUrl) var directUrl = photo_div.match(/<img src="(.+?)"/);
  7090.     }
  7091.    
  7092.     if (directUrl) {
  7093.         retVal.imgUrl = directUrl[1];
  7094.         retVal.status = "OK";
  7095.         return retVal; 
  7096.     }
  7097.    
  7098.     if (!iUrl) {
  7099.         retVal.imgUrl = null;
  7100.         retVal.status = "ABORT";
  7101.         }
  7102.     else {
  7103.         if (iUrl[1].search(/^http:\/\/.+\.media\.tumblr\.com\/.+/) >= 0 ||
  7104.             iUrl[1].search(/^http:\/\/mytasteinwomen\.com\/photo\/\d+\/\d+\/.+/) >= 0) {
  7105.             retVal.imgUrl = iUrl[1];
  7106.             retVal.status = "OK";
  7107.             }
  7108.         else { 
  7109.             retVal.imgUrl = iUrl[2];
  7110.             retVal.status = "OK";
  7111.             }
  7112.         }
  7113.  
  7114.     return retVal;
  7115.     }]]></searchpattern>
  7116. </host>
  7117.  
  7118. <host id="nahrejto.cz">
  7119. <urlpattern>http:\/\/nahrejto\.cz\/viewer\.php\?file=.+</urlpattern>
  7120. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','files/$1'"</searchpattern>
  7121. </host>
  7122.  
  7123. <host id="nangaspace">
  7124. <urlpattern>^http:\/\/www\.nangaspace\.com\/view_image\.php\?img=.+</urlpattern>
  7125. <searchpattern>"upload\\/.+"</searchpattern>
  7126. </host>
  7127.  
  7128. <host id="netfotograf">
  7129. <urlpattern>^http:\/\/galeri\.netfotograf\.com\/fotograf\.asp\?.+\d+$</urlpattern>
  7130. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7131.     var retVal = new Object();
  7132.    
  7133.     var iUrl = pageData.match(/images\/medium\/(.+)"\s+alt/);
  7134.  
  7135.     if (!iUrl) {
  7136.         retVal.imgUrl = null;
  7137.         retVal.status = "ABORT";
  7138.         }
  7139.     else {
  7140.         retVal.imgUrl = "http://galeri.netfotograf.com/images/large/" + iUrl[1];
  7141.         retVal.status = "OK";
  7142.         }
  7143.  
  7144.     return retVal;
  7145.     }]]></searchpattern>
  7146. </host>
  7147.  
  7148. <host id="newsfilter">
  7149. <urlpattern>^http:\/\/(?:www\.)?newsfilter\.org\/.+?\/.+?\/\d+?$</urlpattern>
  7150. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7151.     var iUrl = pageData.match(/a href=\".+?\".+?data-lightbox=\"gallery\".+?\r?\n?.+?img src=\"(http:\/\/content\.newsfilter\.org\/galleries.+?)" alt=/i);
  7152.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  7153. }]]></searchpattern>
  7154. </host>
  7155.  
  7156. <host id="newsfilter2">
  7157. <urlpattern>^http:\/\/newsfilter\.org\/.+\/\d+$</urlpattern>
  7158. <searchpattern>"http:\/\/assets\.newsfilter\.org\/media\/gallery\/[0-9]+\/.+\.(?:jpe?g|JPE?G)"</searchpattern>
  7159. </host>
  7160.  
  7161. <host id="newsgab">
  7162. <urlpattern>^http:\/\/(?:www\.)?newsgab\.com\/attachments\/.+\..{3,4}$</urlpattern>
  7163. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7164.     return {imgUrl: pageUrl, status: "OK"};
  7165. }]]></searchpattern>
  7166. </host>
  7167.  
  7168. <host id="nhentai">
  7169. <urlpattern>^https?:\/\/nhentai\.net\/g\/\d+\/\d+\/$</urlpattern>
  7170. <searchpattern>"//i.nhentai.net/galleries/\d+/\d+"</searchpattern>
  7171. </host>
  7172.  
  7173. <host id="ning">
  7174. <urlpattern>^http:\/\/.+\.ning\.com\/photo\/[^\/]+$</urlpattern>
  7175. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7176.     var retVal = {};
  7177.    
  7178.     var iUrl = pageData.match(/<a[^>]+class="xg_sprite xg_sprite-view-fullsize"[^>]+href="(.+?)"/);
  7179.  
  7180.     if (!iUrl) {
  7181.         retVal.imgUrl = null;
  7182.         retVal.status = "ABORT";
  7183.         }
  7184.     else {
  7185.         retVal.imgUrl = iUrl[1];
  7186.         retVal.status = "OK";
  7187.         }
  7188.  
  7189.     return retVal;
  7190.     }]]></searchpattern>
  7191. </host>
  7192.  
  7193. <host id="no1amateurs" maxThreads="1">
  7194. <urlpattern>^http:\/\/www\.no1amateurs\.com\/\d+\/[^/]+\/\d+</urlpattern>
  7195. <searchpattern>"src="http:\/\/media\d+\."</searchpattern>
  7196. </host>
  7197.  
  7198. <host id="nonnudegirls">
  7199. <urlpattern>^http:\/\/(?:www\.)?nonnudegirls\.org\/forums\/attachment\.php\?attachmentid=\d+</urlpattern>
  7200. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7201.     var retVal = new Object();
  7202.  
  7203.     retVal.imgUrl = pageUrl;
  7204.     retVal.status = "OK";
  7205.    
  7206.     return retVal;
  7207.     }]]></searchpattern>
  7208. </host>
  7209.  
  7210. <host id="novohot">
  7211. <urlpattern>^http:\/\/www\.novohot\.com\/.+\/.+\.html$</urlpattern>
  7212. <searchpattern>"http:\/\/.+\/.+\/\d+\/\d{2,3}\..{3,4}"</searchpattern>
  7213. </host>
  7214.  
  7215. <host id="novojoy">
  7216. <urlpattern>^http:\/\/(?:www\.)?novojoy\.com\/.+\/.+\.html$</urlpattern>
  7217. <searchpattern>"http:\/\/[^\/]+\/.+\/\d+\/\d{2}\..{3,4}"</searchpattern>
  7218. </host>
  7219.  
  7220. <host id="novoporn">
  7221. <urlpattern>^http:\/\/(?:www\.)?novoporn\.com\/.+\/.+\.html$</urlpattern>
  7222. <searchpattern>"http:\/\/[^\/]+\/.+\/\d+\/\d{2}\..{3,4}"</searchpattern>
  7223. </host>
  7224.  
  7225. <host id="novostrong">
  7226. <urlpattern>^http:\/\/(?:www\.)?novoporn\.com\/.+\/.+\.html$</urlpattern>
  7227. <searchpattern>"http:\/\/[^\/]+\/.+\/\d+\/\d{2}\..{3,4}"</searchpattern>
  7228. </host>
  7229.  
  7230. <host id="nsfworld">
  7231. <urlpattern>^http:\/\/nsfworld\.com\/post\/\d+</urlpattern>
  7232. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7233.     var retVal = new Object();
  7234.    
  7235.     var photo_div = pageData.match(/<div class="post_photo"(?:.|\s)+?<\/div>/);
  7236.     if (photo_div) {
  7237.         photo_div = photo_div[0];
  7238.         var iUrl = photo_div.match(/(?:.|\s)+?<a href="(.+?)".+?<img src="(.+?)"/);
  7239.         if (!iUrl) var directUrl = photo_div.match(/(?:.|\s)+?<img src="(.+?)"/);
  7240.     }
  7241.    
  7242.     if (directUrl) {
  7243.         retVal.imgUrl = directUrl[1];
  7244.         retVal.status = "OK";
  7245.         return retVal; 
  7246.     }
  7247.    
  7248.     if (!iUrl) {
  7249.         retVal.imgUrl = null;
  7250.         retVal.status = "ABORT";
  7251.         }
  7252.     else {
  7253.         if (iUrl[1].search(/^http:\/\/.+\.media\.tumblr\.com\/.+/) >= 0 ||
  7254.             iUrl[1].search(/^http:\/\/nsfworld\.com\/photo\/\d+\/\d+\/.+/) >= 0) {
  7255.             retVal.imgUrl = iUrl[1];
  7256.             retVal.status = "OK";
  7257.             }
  7258.         else { 
  7259.             retVal.imgUrl = iUrl[2];
  7260.             retVal.status = "OK";
  7261.             }
  7262.         }
  7263.  
  7264.     return retVal;
  7265.     }]]></searchpattern>
  7266. </host>
  7267.  
  7268. <host id="nsfworld2">
  7269. <urlpattern>^http:\/\/nsfworld\.com\/post\/\d+</urlpattern>
  7270. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7271.     var retVal = new Object();
  7272.    
  7273.     var iUrl = pageData.match(/<a href="([^"]+?)" target="_blank">HighRes/);
  7274.    
  7275.     if (!iUrl) {
  7276.         retVal.imgUrl = null;
  7277.         retVal.status = "ABORT";
  7278.         }
  7279.     else {
  7280.         if (iUrl[1].match(/^http:\/\/.+\.media\.tumblr\.com\/.+/)) {
  7281.             retVal.imgUrl = iUrl[1];
  7282.             retVal.status = "OK";
  7283.             }
  7284.         else { 
  7285.             retVal.imgUrl = iUrl[1];
  7286.             retVal.status = "REQUEUE";
  7287.             }
  7288.         }
  7289.  
  7290.     return retVal;
  7291.     }]]></searchpattern>
  7292. </host>
  7293.  
  7294. <host id="nude art girls">
  7295. <urlpattern>^http:\/\/www\.nudeartgirls\.com\/galleries\/.+\/.+\/.+\.php</urlpattern>
  7296. <searchpattern>"http:\\/\\/www\\.nudeartgirls\\.com\\/galleries\\/.+\\/.+\\/pictures\\/.+\\.jpg"</searchpattern>
  7297. </host>
  7298.  
  7299. <host id="nudecollect">
  7300. <urlpattern>^https?:\/\/.+?nudecollect\.com.+?picture\/</urlpattern>
  7301. <searchpattern>"ID: theMainImage"</searchpattern>
  7302. </host>
  7303.  
  7304. <host id="nudestack">
  7305. <urlpattern>^http:\/\/nudestack\.com\/node\/\d+\/\d+</urlpattern>
  7306. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7307.     var retVal = {};
  7308.    
  7309.     var iUrl = pageData.match(/<div id="ga-image-display"(?:.|\s)+?<img src="([^"]+)"/);
  7310.  
  7311.     if (!iUrl) {
  7312.         retVal.imgUrl = null;
  7313.         retVal.status = "ABORT";
  7314.         }
  7315.     else {
  7316.         retVal.imgUrl = iUrl[1];
  7317.         retVal.status = "OK";
  7318.         }
  7319.  
  7320.     return retVal;
  7321.     }]]></searchpattern>
  7322. </host>
  7323.  
  7324. <host id="nued">
  7325. <urlpattern>^http:\/\/www\.neud\.org\/image\.php</urlpattern>
  7326. <searchpattern>"ID: thepic"</searchpattern>
  7327. </host>
  7328.  
  7329. <host id="nuts.co.uk">
  7330. <urlpattern>^http:\/\/www\.nuts\.co\.uk\/.+\/photo\/</urlpattern>
  7331. <searchpattern>"\/images\/gallery\/\d+\/\d+\/"</searchpattern>
  7332. </host>
  7333.  
  7334. <host id="ocaload">
  7335. <urlpattern>^http:\/\/ocaload\.com\/img-[\da-f]+\.html$</urlpattern>
  7336. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  7337. </host>
  7338.  
  7339. <host id="ofoto">
  7340. <urlpattern>^http:\/\/ofoto\.org\/image\/\d+</urlpattern>
  7341. <searchpattern>"onclick="imageSizeMaxMin"</searchpattern>
  7342. </host>
  7343.  
  7344. <host id="olaolaonline">
  7345. <urlpattern>^http:\/\/(?:www\.)?olaolaonline\.net\/page\.php\?.*image=</urlpattern>
  7346. <searchpattern>"ID: thepic"</searchpattern>
  7347. </host>
  7348.  
  7349. <host id="omega project">
  7350. <urlpattern>^http:\/\/www\.theomegaproject\.org\/galleries\/\d+\/\d+\/.+\/.+\.php</urlpattern>
  7351. <searchpattern>"REPLACE: 'php', 'jpg'"</searchpattern>
  7352. </host>
  7353.  
  7354. <host id="omgasia">
  7355. <urlpattern>http:\/\/.+\.omgasia\.net\/wpg2\?g2_itemId=\d+</urlpattern>
  7356. <searchpattern>"ID: IFid1"</searchpattern>
  7357. </host>
  7358.  
  7359. <host id="oneclickchicks">
  7360. <urlpattern>^http:\/\/forum\.oneclickchicks\.com\/attachment\.php\?attachmentid=\d+</urlpattern>
  7361. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7362.     var retVal = new Object();
  7363.    
  7364.     retVal.imgUrl = pageUrl;
  7365.     retVal.status = "OK";
  7366.    
  7367.     return retVal;
  7368.     }]]></searchpattern>
  7369. </host>
  7370.  
  7371. <host id="onlythebestfakes">
  7372. <urlpattern>^http:\/\/www\.onlythebestfakes\.com\/preview\/\d+</urlpattern>
  7373. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7374.     var retVal = {};
  7375.    
  7376.     var iUrl = pageData.match(/<img src="([^"]+)".+?class="mainimage"/);
  7377.  
  7378.     if (!iUrl) {
  7379.         retVal.imgUrl = null;
  7380.         retVal.status = "ABORT";
  7381.         }
  7382.     else {
  7383.         retVal.imgUrl = iUrl[1].replace(/\/previews\//, "/");
  7384.         retVal.status = "OK";
  7385.         }
  7386.  
  7387.     return retVal;
  7388.     }]]></searchpattern>
  7389. </host>
  7390.  
  7391. <host id="orsm.net">
  7392. <urlpattern>^http:\/\/.+\.orsm\.net\/gallery\/pictures\/.+\.html</urlpattern>
  7393. <searchpattern>"ID: bigimg"</searchpattern>
  7394. </host>
  7395.  
  7396. <host id="paheal">
  7397. <urlpattern>^http:\/\/.+\.paheal\.net\/post\/view\/\d+</urlpattern>
  7398. <searchpattern>"ID: main_image"</searchpattern>
  7399. </host>
  7400.  
  7401. <host id="paintedover">
  7402. <urlpattern>^http:\/\/paintedover\.com\/uploads\/show\.php\?</urlpattern>
  7403. <searchpattern>"subject"</searchpattern>
  7404. </host>
  7405.  
  7406. <host id="pantyhoz">
  7407. <urlpattern>^http:\/\/(?:www\.)?pantyhoz\.net\/product_info\.php\?.*products_id=[^?]+$</urlpattern>
  7408. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7409.     var retVal = {imgUrl: null, status: "ABORT"};
  7410.    
  7411.     var iUrl = pageData.match(/<div class="main"><div class="desc2"><img src="(.+?)"/);
  7412.     if (iUrl) {
  7413.         retVal.imgUrl = iUrl[1];
  7414.         retVal.status = "OK";
  7415.     }
  7416.  
  7417.     return retVal;
  7418. }]]></searchpattern>
  7419. </host>
  7420.  
  7421. <host id="partyimg">
  7422. <urlpattern>^http:\/\/partyimg\.info\/viewer\.php\?</urlpattern>
  7423. <searchpattern>"REPLACE: 'viewer\\.php\\?file=' , 'images/'"</searchpattern>
  7424. </host>
  7425.  
  7426. <host id="pawsru">
  7427. <urlpattern>^http:\/\/pawsru\.org\/.+\/src\/.+\..{3,4}</urlpattern>
  7428. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7429.     var retVal = new Object();
  7430.    
  7431.     retVal.imgUrl = pageUrl;
  7432.     retVal.status = "OK";
  7433.    
  7434.     return retVal;
  7435.     }]]></searchpattern>
  7436. </host>
  7437.  
  7438. <host id="peachesfantasy">
  7439. <urlpattern>^http:\/\/peachesfantasy\.com\/.+\/.+-\d+\.html</urlpattern>
  7440. <searchpattern>"http:\\/\\/content\\d+\\.peachesfantasy\\.com\\/.+\\/\\d+\\/\\d+\\.jpg"</searchpattern>
  7441. </host>
  7442.  
  7443. <host id="peepholist">
  7444. <urlpattern>^http:\/\/galleries\.peepholist\.com\/.+p\d+\.html$</urlpattern>
  7445. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7446.     var retVal = {imgUrl: null, status: "ABORT"};
  7447.    
  7448.     var iUrl = pageData.match(/<img class="image_file" src="(.+?)"/);
  7449.     if (iUrl) {
  7450.         //retVal.imgUrl = iUrl[1].replace(/_medium(\.\w{3,4})$/, "$1");
  7451.         retVal.imgUrl = iUrl[1];
  7452.         retVal.status = "OK";
  7453.     }
  7454.  
  7455.     return retVal;
  7456. }]]></searchpattern>
  7457. </host>
  7458.  
  7459. <host id="peopleimages">
  7460. <urlpattern>^https?:\/\/peopleimages\.com\/image\/.+?$</urlpattern>
  7461. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7462.     var iUrl = pageData.match(/src="((.+?cdn.+?)(fit_.+?\.jpg))"/);
  7463.     return iUrl ? {imgUrl: iUrl[2]+"zoom_90.jpg", status: "OK"} : {imgUrl: null, status: "ABORT"}
  7464. }]]></searchpattern>
  7465. </host>
  7466.  
  7467. <host id="perfectpeople">
  7468. <urlpattern>^http:\/\/www\.perfectpeople\.net\/photo-picture-image\/</urlpattern>
  7469. <searchpattern>"\\/photo-picture-image-media\\/.+\\.jpg"</searchpattern>
  7470. </host>
  7471.  
  7472. <host id="petiteteenager">
  7473. <urlpattern>^http:\/\/galleries\d+\.petiteteenager\.com\/\d+\/.+\/.+\..{3,4}$</urlpattern>
  7474. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7475.     var retVal = new Object();
  7476.    
  7477.     retVal.imgUrl = pageUrl;
  7478.     retVal.status = "OK";
  7479.    
  7480.     return retVal;
  7481.     }]]></searchpattern>
  7482. </host>
  7483.  
  7484. <host id="phantasi">
  7485. <urlpattern>^http:\/\/(?:www\.)?phantasi\.cc\/post\/view\/\d+</urlpattern>
  7486. <searchpattern>"ID: main_image"</searchpattern>
  7487. </host>
  7488.  
  7489. <host id="phil-flash">
  7490. <urlpattern>^http:\/\/members\.phil-flash\.com\/.+\/image\d*\.php</urlpattern>
  7491. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7492.     var retVal = new Object();
  7493.    
  7494.     var iUrl = pageData.match(/src="(..\/images\/.+?)"/);
  7495.  
  7496.     if (!iUrl) {
  7497.         retVal.imgUrl = null;
  7498.         retVal.status = "ABORT";
  7499.         }
  7500.     else {
  7501.         retVal.imgUrl = iUrl[1];
  7502.         retVal.status = "OK";
  7503.         }
  7504.  
  7505.     return retVal;
  7506.     }]]></searchpattern>
  7507. </host>
  7508.  
  7509. <host id="photo.net">
  7510. <urlpattern>^http:\/\/(?:www\.)?photo.net\/photodb\/photo\?photo_id=\d+</urlpattern>
  7511. <searchpattern>"REPLACE: 'http:\/\/photo\.net\/photodb\/photo\?photo_id=(\d+)' , 'http://gallery.photo.net/photo/$1-lg.jpg'"</searchpattern>
  7512. </host>
  7513.  
  7514. <host id="photobucket">
  7515. <urlpattern>^http:\/\/.+\.photobucket\.com\/albums\/.+\/\?action=view\&amp;current=.+\..{3,4}</urlpattern>
  7516. <searchpattern>"REPLACE: 'http:\\/\\/(.+)\\.photobucket\\.com\\/albums\\/(.+)\\/.+current=(.+\\....)' , 'http://$1.photobucket.com/albums/$2/$3'"</searchpattern>
  7517. </host>
  7518.  
  7519. <host id="photobucket2">
  7520. <urlpattern>^http:\/\/.+\.photobucket\.com\/albums\/.+\/.+\..{3,4}</urlpattern>
  7521. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7522.     var retVal = new Object();
  7523.    
  7524.     retVal.imgUrl = pageUrl;
  7525.     retVal.status = "OK";
  7526.    
  7527.     return retVal;
  7528.     }]]></searchpattern>
  7529. </host>
  7530.  
  7531. <host id="photobucket3">
  7532. <urlpattern>^http:\/\/.+\.photobucket\.com\/albums\/.+\/\?action=view\&amp;current=.+\..{3,4}</urlpattern>
  7533. <searchpattern>"REPLACE: 'http:\\/\\/(.+)\\.photobucket\\.com\\/albums\\/(.+)\\/.+current=(.+\\....)' , 'http://$1.photobucket.com/albums/$2/$3'"</searchpattern>
  7534. </host>
  7535.  
  7536. <host id="photobucket4">
  7537. <urlpattern>^http:\/\/.+\.photobucket\.com\/albums\/.+\/.+\..{3,4}</urlpattern>
  7538. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7539.     return {imgUrl: pageUrl, status: "OK"};
  7540.     }]]></searchpattern>
  7541. </host>
  7542.  
  7543. <host id="photocelebs">
  7544. <urlpattern>^http:\/\/www\.photocelebs\.info\/.+\/.+</urlpattern>
  7545. <searchpattern>"ID: thepic"</searchpattern>
  7546. </host>
  7547.  
  7548. <host id="photodom">
  7549. <urlpattern>^http:\/\/(?:www\.)?photodom\.com\/(?:photo|fullsize)\/\d+$</urlpattern>
  7550. <searchpattern>"ID: main_image"</searchpattern>
  7551. </host>
  7552.  
  7553. <host id="photodump.biz">
  7554. <urlpattern>^http:\/\/(?:www\.)?photodump\.biz\/viewer\.php\?file=.+\..{3,4}$</urlpattern>
  7555. <searchpattern>"REPLACE: '\/viewer\.php\?file=' , '/images/'"</searchpattern>
  7556. </host>
  7557.  
  7558. <host id="photopost_gallery">
  7559. <urlpattern>^http:\/\/.+\/showphoto\.php(?:\?photo=\d+&amp;size=big|\/photo\/\d+\/size\/big)</urlpattern>
  7560. <searchpattern>"data\/\d+\/[^\/]+\..{3,4}"</searchpattern>
  7561. </host>
  7562.  
  7563. <host id="photoshelter">
  7564. <urlpattern>^https?:\/\/[^\.]+?\.photoshelter\.com\/gallery-image\/[^\/]+?\/.+?\/.+?\/.+?\/$</urlpattern>
  7565. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7566.  
  7567.     var the_url = pageData.match(/src="(https?:\/\/cdn\..+?\.photoshelter\.com\/img-get[0-9]+?\/.+?\/fit=.+?\/.+?\/.+?)"/i);
  7568.  
  7569.     var retVal = new Object();
  7570.  
  7571.     retVal.imgUrl = the_url[1].replace(/&amp\;/gi, "&");
  7572.     retVal.status = "OK";
  7573.     return retVal;
  7574. }]]></searchpattern>
  7575. </host>
  7576.  
  7577. <host id="photosig">
  7578. <urlpattern>^http:\/\/www\.photosig\.com\/go\/photos\/view.+</urlpattern>
  7579. <searchpattern>"class=\\"outlined\\""</searchpattern>
  7580. </host>
  7581.  
  7582. <host id="phun">
  7583. <urlpattern>^http:\/\/(?:www\.)?phun\.org\/galleries\/.+\..{3,4}$</urlpattern>
  7584. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7585.     return {imgUrl: pageUrl, status: "OK"};
  7586.     }]]></searchpattern>
  7587. </host>
  7588.  
  7589. <host id="pic-maniac">
  7590. <urlpattern>^http:\/\/pic-maniac\.com\/.+$</urlpattern>
  7591. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7592.     var id = pageUrl.match(/http:\/\/[^/]+\/([^/\.]+)/);
  7593.     var req = new XMLHttpRequest();
  7594.     req.open("POST", pageUrl, false);
  7595.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  7596.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  7597.     var iUrl = (req.responseText).match(/src=("|')(http:\/\/[^/]+\/(img|i)\/.+?)\1.+alt=("|')(.+\.jpe?g)\4/i);
  7598.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  7599. }]]></searchpattern>
  7600. </host>
  7601.  
  7602. <host id="pic-upload">
  7603. <urlpattern>http:\/\/www\.pic-upload\.de\/view-\d+\/.+</urlpattern>
  7604. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7605.     var retVal = new Object();
  7606.  
  7607.     var sPattern = pageData.match(/<a href=("|')(http:\/\/www\d+\.pic-upload\.de\/.+\/.+?)\1.+title=("|')(.+)\3>/);
  7608.  
  7609.     if (!sPattern) {
  7610.         retVal.imgUrl = null;
  7611.         retVal.status = "ABORT";
  7612.         }
  7613.     else {
  7614.         retVal.imgUrl = sPattern[2];
  7615.         retVal.status = "OK";
  7616.  
  7617.         try {
  7618.             retVal.fileName = sPattern[4];
  7619.             }
  7620.         catch(e) {
  7621.             retVal.fileName = Math.random().toString().substring(2) + ".jpg";
  7622.             }
  7623.         }
  7624.  
  7625.     return retVal;
  7626.     }]]></searchpattern>
  7627. </host>
  7628.  
  7629. <host id="pic.re">
  7630. <urlpattern>^http:\/\/pic\.re\/[^/]+$</urlpattern>
  7631. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7632.     var id = pageUrl.match(/[^/]+?(?=(?:\.html)?$)/);
  7633.     var req = new XMLHttpRequest();
  7634.     req.open("POST", pageUrl, false);
  7635.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  7636.     req.send("op=view&id="+id+"&pre=1&next=Continue+to+image...");
  7637.     var iUrl= (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/img\/.+?)\1/);
  7638.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  7639. }]]></searchpattern>
  7640. </host>
  7641.  
  7642. <host id="pic911">
  7643. <urlpattern>http:\/\/www\.pic911\.com\/.+</urlpattern>
  7644. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7645.     var retVal = new Object();
  7646.    
  7647.     var iUrl = pageData.match(/<a href="(download\.php\?file=.+?)"/);
  7648.  
  7649.     if (!iUrl) {
  7650.         retVal.imgUrl = null;
  7651.         retVal.status = "ABORT";
  7652.         }
  7653.     else {
  7654.         retVal.imgUrl = "http://www.pic911.com/" + iUrl[1];
  7655.         retVal.status = "OK";
  7656.         }
  7657.  
  7658.     return retVal;
  7659.     }]]></searchpattern>
  7660. </host>
  7661.  
  7662. <host id="picasa">
  7663. <urlpattern>^https?:\/\/picasaweb\.google\.\w+(?:\.\w+)?\/.+\/.+#\d+</urlpattern>
  7664. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7665.     var retVal = new Object();
  7666.  
  7667.     var pageId = pageUrl.match(/#(\d+)/)[1];
  7668.    
  7669.     var searchPat = new RegExp(pageId + ".+?\"type\":\"image");
  7670.    
  7671.     var iUrl = pageData.match(searchPat);
  7672.     if (iUrl) iUrl = iUrl[0].match(/url":"(https?:\/\/.+?\..{3,4})"/);
  7673.     if (iUrl) iUrl = iUrl[1].replace(/(https?:\/\/\w+\.ggpht\.com\/.+\/.+\/.+\/.+\/)(.+\..{3,4})$/, "$1d/$2");
  7674.    
  7675.     if (!iUrl) {
  7676.         retVal.imgUrl = null;
  7677.         retVal.status = "ABORT";
  7678.         }
  7679.     else {
  7680.         retVal.imgUrl = iUrl;
  7681.         retVal.status = "OK";
  7682.         }
  7683.  
  7684.     return retVal;
  7685.     }]]></searchpattern>
  7686. </host>
  7687.  
  7688. <host id="picbucks">
  7689. <urlpattern>^http:\/\/.+\.picbucks\.com\/?$</urlpattern>
  7690. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7691.     var retVal = new Object();
  7692.  
  7693.     var rottenDick = pageData.match(/<frame id="frame2".+src="(.+)">/);
  7694.     if (!rottenDick) rottenDick = pageData.match(/(?:linkDestUrl|TargetUrl) = '(.+?)'/);
  7695.     if (!rottenDick) rottenDick = pageData.match(/iframe id="content" src="(.+?)"/);
  7696.  
  7697.     if (!rottenDick) {
  7698.         retVal.status = "ABORT";
  7699.         retVal.imgUrl = null;
  7700.         }
  7701.     else {
  7702.         retVal.status = "REQUEUE";
  7703.         retVal.imgUrl = rottenDick[1];
  7704.         }
  7705.  
  7706.     return retVal;
  7707.     }]]></searchpattern>
  7708. </host>
  7709.  
  7710. <host id="piccorner">
  7711. <urlpattern>^http:\/\/piccorner\.com\/view\.php\/.+</urlpattern>
  7712. <searchpattern>"ID: img_obj"</searchpattern>
  7713. </host>
  7714.  
  7715. <host id="picdir.de">
  7716. <urlpattern>http:\/\/picdir\.de\/viewer\.php\?file=.+</urlpattern>
  7717. <searchpattern>"\"images\/.+"</searchpattern>
  7718. </host>
  7719.  
  7720. <host id="picearns">
  7721. <urlpattern>^http:\/\/www\.picearns\.com\/show-image\.php\?id=.+</urlpattern>
  7722. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7723.     var retVal = new Object();
  7724.  
  7725.     var iUrl = pageData.match(/'(pictures\/.+?)'/);
  7726.  
  7727.     if(!iUrl) {
  7728.         retVal.imgUrl = null;
  7729.         retVal.status = "ABORT";
  7730.         }
  7731.     else {
  7732.         retVal.imgUrl = "http://www.picearns.com/" + iUrl[1];
  7733.         retVal.status = "OK";
  7734.         }
  7735.  
  7736.     return retVal;
  7737.     }]]></searchpattern>
  7738. </host>
  7739.  
  7740. <host id="picfoco">
  7741. <urlpattern>^http:\/\/img\d+\.picfoco\.com\/img\.php\?id=.+</urlpattern>
  7742. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7743.     var retVal = new Object();
  7744.  
  7745.     // use the following 4 lines if you are using the id attribute to find the image source.
  7746.     // just modify the "theId" variable to reflect the proper ID
  7747.     var theId = "img";
  7748.  
  7749.     var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1(?:.|\\s)+?>");
  7750.     var tmpMatch = pageData.match(searchPat);
  7751.     if (tmpMatch) {
  7752.         tmpMatch = tmpMatch[0];
  7753.         var imgMatch = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/i);
  7754.         }
  7755.     if(imgMatch) {
  7756.         retVal.imgUrl = imgMatch[2];
  7757.         retVal.status = "OK";
  7758.         retVal.fileName = Math.random().toString().substring(2) + ".jpg";
  7759.         return retVal;
  7760.         }
  7761.  
  7762.     var redirMatch = pageData.match(/<a href="(http:\/\/img\d+\.picfoco\.com\/img\.php\?id=.*&q=.*&jump=.*&ru=.*?)">/);
  7763.     if(redirMatch) {
  7764.         retVal.imgUrl = redirMatch[1];
  7765.         retVal.status = "REQUEUE";
  7766.         retVal.referer = pageUrl;
  7767.         }
  7768.  
  7769.     else {
  7770.         retVal.imgUrl = null;
  7771.         retVal.status = "ABORT";
  7772.         }
  7773.  
  7774.     return retVal;
  7775.     }]]></searchpattern>
  7776. </host>
  7777.  
  7778. <host id="picfury">
  7779. <urlpattern>http:\/\/www\.picfury\.com\/.+</urlpattern>
  7780. <searchpattern>"REPLACE: '(.+)\\/(.+)\\.html','$1/img/$2.jpg'"</searchpattern>
  7781. </host>
  7782.  
  7783. <host id="picland">
  7784. <urlpattern>^http:\/\/www\.picland\.to\/show\.php\?id=</urlpattern>
  7785. <searchpattern>"ID: image"</searchpattern>
  7786. </host>
  7787.  
  7788. <host id="picleet" maxThreads="3">
  7789. <urlpattern>^http:\/\/(?:www\.)?picleet\.com\/\w+\/[^.]+\..{3,4}\.html$</urlpattern>
  7790. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7791.    var retVal = {};
  7792.    
  7793.    var IDandName = pageUrl.match(/\/(\w+)\/([^.]+\..{3,4})\.html$/);
  7794.    var theID = IDandName[1];
  7795.    var fileName = IDandName[2];
  7796.    var SearchPatt = new RegExp("<img src=\"(.+?\/"+ theID +"\\..{3,4})\".+?>");
  7797.    var iUrl = pageData.match(SearchPatt);
  7798.    
  7799.    if (!iUrl) {
  7800.         retVal.imgUrl = null;
  7801.         retVal.status = "ABORT";
  7802.         }
  7803.    else {
  7804.         retVal.imgUrl = iUrl[1];
  7805.         retVal.fileName = fileName;
  7806.         retVal.status = "OK";
  7807.         }
  7808.    
  7809.    return retVal;
  7810.    }]]></searchpattern>
  7811. </host>
  7812.  
  7813. <host id="piclove">
  7814. <urlpattern>^http:\/\/piclove\.in\/\w+$</urlpattern>
  7815. <searchpattern>"class="pic""</searchpattern>
  7816. </host>
  7817.  
  7818. <host id="picposto">
  7819. <urlpattern>http:\/\/www\.picposto\.com\/viewer\.php\?file=.+</urlpattern>
  7820. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  7821. </host>
  7822.  
  7823. <host id="pics-and-pictures">
  7824. <urlpattern>^http:\/\/(?:www\.)?pics-and-pictures\.com\/.+\.html\?.*img=</urlpattern>
  7825. <searchpattern>"ID: bigimg"</searchpattern>
  7826. </host>
  7827.  
  7828. <host id="pics-hosting">
  7829. <urlpattern>^http:\/\/pics-hosting\.com\/viewer\.php\?file=.+</urlpattern>
  7830. <searchpattern>"REPLACE: 'viewer\.php\?file=(.+)' , 'files/$1'"</searchpattern>
  7831. </host>
  7832.  
  7833. <host id="picsapart">
  7834. <urlpattern>^http:\/\/(?:www\.)?picsapart\.com\/photo\/.+</urlpattern>
  7835. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7836.     var retVal = {};
  7837.    
  7838.     retVal.imgUrl = pageUrl.replace(/\/photo\//, "/download/"/);
  7839.     retVal.status = "OK";
  7840.  
  7841.     return retVal;
  7842.     }]]></searchpattern>
  7843. </host>
  7844.  
  7845. <host id="picsaway">
  7846. <urlpattern>http:\/\/www\.picsaway\.com\/view\/.+</urlpattern>
  7847. <searchpattern>"REPLACE: 'view\\/(.+)','uploads/$1'"</searchpattern>
  7848. </host>
  7849.  
  7850. <host id="picsbees">
  7851. <urlpattern>^http:\/\/(.+?)?picsbees\.com\/img-[a-z0-9]+?\.html</urlpattern>
  7852. <searchpattern>"class=("|')centred(_resized)?("|')"</searchpattern>
  7853. </host>
  7854.  
  7855. <host id="picscrazy">
  7856. <urlpattern>^http:\/\/www\.picscrazy\.com\/view\/</urlpattern>
  7857. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7858.     var retVal = new Object();
  7859.  
  7860.     var iUrl = pageData.match(/img src='(\/image\/.+?)'/);
  7861.    
  7862.     if (!iUrl) {
  7863.         retVal.imgUrl = null;
  7864.         retVal.status = "ABORT";
  7865.         }
  7866.     else {
  7867.         retVal.imgUrl = "http://www.picscrazy.com" + iUrl[1];
  7868.         retVal.status = "OK";
  7869.         }
  7870.        
  7871.     return retVal;
  7872.     }]]></searchpattern>
  7873. </host>
  7874.  
  7875. <host id="picscrazy2">
  7876. <urlpattern>^http:\/\/www\.picscrazy\.com\/image\/</urlpattern>
  7877. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7878.     var retVal = new Object();
  7879.  
  7880.     retVal.imgUrl = pageUrl;
  7881.     retVal.status = "OK";
  7882.            
  7883.     return retVal;
  7884.     }]]></searchpattern>
  7885. </host>
  7886.  
  7887. <host id="picseasy">
  7888. <urlpattern>http:\/\/www\.picseasy\.com\/picture\/(.+)_jpg</urlpattern>
  7889. <searchpattern>"REPLACE: 'picture\\/(.+)_jpg','files/$1.jpg'"</searchpattern>
  7890. </host>
  7891.  
  7892. <host id="picshareunit">
  7893. <urlpattern>^http:\/\/(?:www\.)?picshareunit\.com\/photo\/.+\..{3,4}\.html$</urlpattern>
  7894. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7895.     var retVal = {};
  7896.    
  7897.     var iUrl = pageData.match(/<div id="mainPhoto"><a href="(.+?)"/);
  7898.     if (!iUrl) iUrl = pageData.match(/<img id="thepic" src="(.+?)"/);
  7899.  
  7900.     if (!iUrl) {
  7901.         retVal.imgUrl = null;
  7902.         retVal.status = "ABORT";
  7903.         }
  7904.     else {
  7905.         retVal.imgUrl = iUrl[1];
  7906.         retVal.status = "OK";
  7907.         }
  7908.  
  7909.     return retVal;
  7910.     }]]></searchpattern>
  7911. </host>
  7912.  
  7913. <host id="picsie">
  7914. <urlpattern>^http:\/\/www\.picsie\.com\/image\/#.+</urlpattern>
  7915. <searchpattern>"REPLACE: '#(.+)' , 'files/$1'"</searchpattern>
  7916. </host>
  7917.  
  7918. <host id="picsplash">
  7919. <urlpattern>^http:\/\/www\.picsplash\.com\/c\.php\?</urlpattern>
  7920. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7921.     var retVal = {};
  7922.    
  7923.     var iUrl = pageData.match(/<img src="(http:\/\/[^\.]+\.picsplash\.com\/img\/.+?)"/);
  7924.  
  7925.     if (!iUrl) {
  7926.         retVal.imgUrl = null;
  7927.         retVal.status = "ABORT";
  7928.         }
  7929.     else {
  7930.         retVal.imgUrl = iUrl[1];
  7931.         retVal.status = "OK";
  7932.         }
  7933.  
  7934.     return retVal;
  7935.     }]]></searchpattern>
  7936. </host>
  7937.  
  7938. <host id="picstwist">
  7939. <urlpattern>^http:\/\/(?:www\.)?picstwist\.com\/img-</urlpattern>
  7940. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  7941. </host>
  7942.  
  7943. <host id="pict">
  7944. <urlpattern>^http:\/\/www\.pict\.com\/aview\/[0-9]+\/[0-9]+\/[0-9]+\/.+</urlpattern>
  7945. <searchpattern>"http:\\/\\/.+\\.pict\\.com\\/.+\\/.+\\/.+\\/.+\\/.+\\/.+\\.jpg"</searchpattern>
  7946. </host>
  7947.  
  7948. <host id="picttator">
  7949. <urlpattern>^http:\/\/picttator\.com\/img-[\da-f]+\.html$</urlpattern>
  7950. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  7951. </host>
  7952.  
  7953. <host id="picturedumper">
  7954. <urlpattern>http:\/\/(?:www\.)?picturedumper\.com\/picture\/.+\/.+\/.+\..{3,4}</urlpattern>
  7955. <searchpattern>"ID: image"</searchpattern>
  7956. </host>
  7957.  
  7958. <host id="picturescream">
  7959. <urlpattern>^http:\/\/(?:www\.)?picturescream\.com\/\?v=.+</urlpattern>
  7960. <searchpattern>"REPLACE: '\?v=' , 'images/'"</searchpattern>
  7961. </host>
  7962.  
  7963. <host id="pictureshoster">
  7964. <urlpattern>http:\/\/www\.pictureshoster\.com\/hosted-pictures\/jpg\/.+\.html</urlpattern>
  7965. <searchpattern>"REPLACE: 'hosted-pictures\\/jpg\\/(.+)\\.html','files/$1.jpg'"</searchpattern>
  7966. </host>
  7967.  
  7968. <host id="pictureshoster2">
  7969. <urlpattern>http:\/\/www\.pictureshoster\.com\/viewer\.php\?file=.+</urlpattern>
  7970. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','files/$1'"</searchpattern>
  7971. </host>
  7972.  
  7973. <host id="picve">
  7974. <urlpattern>http:\/\/picve\.com\/download\.php\?file=.+</urlpattern>
  7975. <searchpattern><![CDATA[function(pageData, pageUrl) {
  7976.     var retVal = new Object();
  7977.     retVal.imgUrl = pageUrl;
  7978.     retVal.status = "OK";
  7979.     return retVal;
  7980.     }]]></searchpattern>
  7981. </host>
  7982.  
  7983. <host id="picw.info">
  7984. <urlpattern>http:\/\/picw\.info\/share-.+\.html</urlpattern>
  7985. <searchpattern>"REPLACE: 'share-(.+)\.html','image-$1.jpg'"</searchpattern>
  7986. </host>
  7987.  
  7988. <host id="piczhost">
  7989. <urlpattern>^http:\/\/www\.piczhost\.com\/viewer\.php\?file=.+</urlpattern>
  7990. <searchpattern>"\\.\\/files\\/.+\\...."</searchpattern>
  7991. </host>
  7992.  
  7993. <host id="pikxzone">
  7994. <urlpattern>^http:\/\/pikxzone\.com\/img-[\da-f]+\.html$</urlpattern>
  7995. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  7996. </host>
  7997.  
  7998. <host id="pimpandhost">
  7999. <urlpattern>^https?:\/\/(?:image\.|www\.)?pimpandhost\.com\/image\/.+?$</urlpattern>
  8000. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8001. var iUrl = pageData.match(/img class="normal" src="(https?:\/\/.+?\.(jpe?g|png))"/);
  8002. return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  8003. }]]></searchpattern>
  8004. </host>
  8005.  
  8006. <host id="pimpshare">
  8007. <urlpattern>^http:\/\/img[0-9]+\.pimpshare\.com\/i\.php\?i=.+</urlpattern>
  8008. <searchpattern>"http:\\/\\/img[0-9]+\\.pimpshare\\.com\\/i\\/.+\\...."</searchpattern>
  8009. </host>
  8010.  
  8011. <host id="pinaydaily">
  8012. <urlpattern>^http:\/\/www\.pinaydaily\.com\/viewer\.php\?file=.+</urlpattern>
  8013. <searchpattern>"REPLACE: 'viewer\.php\?file=(.+)' , 'images/$1'"</searchpattern>
  8014. </host>
  8015.  
  8016. <host id="pinterest">
  8017. <urlpattern>^http:\/\/(?:www\.)?pinterest\.com\/pin\/\w+\/?$</urlpattern>
  8018. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8019.     var retVal = {imgUrl: null, status: "ABORT"};
  8020.    
  8021.     var iUrl = null;
  8022.    
  8023.     var theId = "(?:pinCloseupImage|ui-Image-\\d+)";
  8024.     var searchPat = new RegExp("<img[^>]+id\\s*=\\s*(\"|')?" + theId + "\\1[^>]+>", "i");
  8025.     var tmpMatch = pageData.match(searchPat);
  8026.     if (tmpMatch) {
  8027.         tmpMatch = tmpMatch[0];
  8028.         iUrl = tmpMatch.match(/src\s*=\s*("|')?(.+?)\1/i);
  8029.         if (iUrl) iUrl = iUrl[2];
  8030.     }
  8031.     if (!iUrl) {
  8032.         iUrl = pageData.match(/<img src="(.+?)"\s*class="pinImage"/);
  8033.         if (iUrl) iUrl = iUrl[1];
  8034.     }
  8035.  
  8036.     if (iUrl) {
  8037.         retVal.imgUrl = iUrl;
  8038.         retVal.status = "OK";
  8039.     }
  8040.  
  8041.     return retVal;
  8042. }]]></searchpattern>
  8043. </host>
  8044.  
  8045. <host id="pix.4gifs.com">
  8046. <urlpattern>^http:\/\/pix\.4gifs\.com\/gallery\/v\/.+\/.+\.jpg\.html</urlpattern>
  8047. <searchpattern>"\/gallery\/d\/[0-9]+-[0-2]\/.+"</searchpattern>
  8048. </host>
  8049.  
  8050. <host id="pix247">
  8051. <urlpattern>^http:\/\/(?:www\.)?pix247\.net\/.+\?albumid=\d+#photoid=\d+</urlpattern>
  8052. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8053.     var retVal = {};
  8054.    
  8055.     var photoid = pageUrl.match(/photoid=(\d+)/)[1];
  8056.     var searchPat = new RegExp("\{id: " + photoid + "(?:.|\\s)+?originalUrl: '([^']+)'");
  8057.     var iUrl = pageData.match(searchPat);
  8058.  
  8059.     if (!iUrl) {
  8060.         retVal.imgUrl = null;
  8061.         retVal.status = "ABORT";
  8062.         }
  8063.     else {
  8064.         retVal.imgUrl = iUrl[1];
  8065.         retVal.status = "OK";
  8066.         }
  8067.  
  8068.     return retVal;
  8069.     }]]></searchpattern>
  8070. </host>
  8071.  
  8072. <host id="pixhost">
  8073. <urlpattern>http:\/\/www\.pixhost\.org\/show\/.+</urlpattern>
  8074. <searchpattern>"ID: show_image"</searchpattern>
  8075. </host>
  8076.  
  8077. <host id="pixhub.eu">
  8078. <urlpattern>^http:\/\/(?:www\.)?pixhub\.eu\/images\/show\/</urlpattern>
  8079. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8080.     var retVal = {};
  8081.    
  8082.     var iUrl = pageData.match(/<div class="image-show(?:.|\s)+?<img[^>]+src="([^"]+)"/);
  8083.  
  8084.     if (!iUrl) {
  8085.         retVal.imgUrl = null;
  8086.         retVal.status = "ABORT";
  8087.         }
  8088.     else {
  8089.         retVal.imgUrl = iUrl[1];
  8090.         retVal.status = "OK";
  8091.         }
  8092.  
  8093.     return retVal;
  8094.     }]]></searchpattern>
  8095. </host>
  8096.  
  8097. <host id="pixiv">
  8098. <urlpattern>^http:\/\/www\.pixiv\.net\/member_illust\.php\?.*illust_id=\d+</urlpattern>
  8099. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8100.     var retVal = new Object();
  8101.    
  8102.     var iUrl = pageData.match(/src="(http:\/\/img\d+\.pixiv\.net\/img\/.+?)"/);
  8103.  
  8104.     if (!iUrl) {
  8105.         retVal.imgUrl = null;
  8106.         retVal.status = "ABORT";
  8107.         }
  8108.     else {
  8109.         retVal.imgUrl = iUrl[1].replace(/_m(\..{3,4})/, "$1");
  8110.         retVal.status = "OK";
  8111.         }
  8112.  
  8113.     return retVal;
  8114.     }]]></searchpattern>
  8115. </host>
  8116.  
  8117. <host id="pixkiss">
  8118. <urlpattern>http:\/\/pixkiss\.com\/show\.php\/.+</urlpattern>
  8119. <searchpattern>"ID: img_obj"</searchpattern>
  8120. </host>
  8121.  
  8122. <host id="pixliv">
  8123. <urlpattern>^http:\/\/(?:www\.)?pixliv\.com\/img-[\w-]+?\.(?:jpe?g|html)?$</urlpattern>
  8124. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8125.     var req = new XMLHttpRequest();
  8126.     req.open("POST", pageUrl, false);
  8127.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  8128.     req.send("");
  8129.     var iUrl= (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/uploads\/images\/.+?)\1/);
  8130.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  8131. }]]></searchpattern>
  8132. </host>
  8133.  
  8134. <host id="pixloads">
  8135. <urlpattern>^http:\/\/pixloads\.com\/public\/pview\/</urlpattern>
  8136. <searchpattern>"REPLACE: 'pview\\/' , ''"</searchpattern>
  8137. </host>
  8138.  
  8139. <host id="pixmix.me">
  8140. <urlpattern>http:\/\/pixmix\.me\/show\.php\/.+</urlpattern>
  8141. <searchpattern>"ID: img_obj"</searchpattern>
  8142. </host>
  8143.  
  8144. <host id="pixmix.us">
  8145. <urlpattern>http:\/\/www\.pixmix\.us\/hqviewer\.php\?file=.+</urlpattern>
  8146. <searchpattern>"REPLACE: 'hqviewer\\.php\\?file=(.+)','files/$1'"</searchpattern>
  8147. </host>
  8148.  
  8149. <host id="pixroute">
  8150. <urlpattern>^http:\/\/(?:www\.)?pixroute\.com\/.+\/.+\.html$</urlpattern>
  8151. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8152.     var retVal = new Object();
  8153.    
  8154.     var iUrl = pageData.match(/<img src="(http:\/\/img\d+\.pixroute\.com\/i\/.+?)"/);
  8155.     var fName = pageData.match(/Filename:.*?<\/td><td.*?>(.+?)<\/td>/);
  8156.     if (fName) fName = fName[1];
  8157.    
  8158.     if (!iUrl) {
  8159.         retVal.imgUrl = null;
  8160.         retVal.status = "ABORT";
  8161.         }
  8162.     else {
  8163.         retVal.imgUrl = iUrl[1];
  8164.         retVal.status = "OK";
  8165.         retVal.fileName = fName;
  8166.         }
  8167.  
  8168.     return retVal;
  8169.     }]]></searchpattern>
  8170. </host>
  8171.  
  8172. <host id="pixsense">
  8173. <urlpattern>^https?:\/\/www\.pixsense\.net\/site\/v\/</urlpattern>
  8174. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8175.     var iUrl = pageData.match(/content="1;URL=(.+?upload.+?)"/);
  8176.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  8177. }]]></searchpattern>
  8178. </host>
  8179.  
  8180. <host id="pixshock">
  8181. <urlpattern>^http:\/\/www\.pixshock\.net\/pic_\w+\/.+\..{3,4}</urlpattern>
  8182. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8183.     var retVal = new Object();
  8184.  
  8185.     retVal.imgUrl = pageUrl;
  8186.     retVal.status = "OK";
  8187.    
  8188.     return retVal;
  8189.     }]]></searchpattern>
  8190. </host>
  8191.  
  8192. <host id="pixslam">
  8193. <urlpattern>^http:\/\/www\.pixslam\.com\/show\/</urlpattern>
  8194. <searchpattern>"pic"</searchpattern>
  8195. </host>
  8196.  
  8197. <host id="pixsolid">
  8198. <urlpattern>^http:\/\/pixsolid\.com\/share-\w+\.html</urlpattern>
  8199. <searchpattern>"REPLACE: 'share(-\\w+\\.)html', 'image$1jpg'"</searchpattern>
  8200. </host>
  8201.  
  8202. <host id="pixterra">
  8203. <urlpattern>^http:\/\/(?:www\.)?pixterra\.com\/.+\.html</urlpattern>
  8204. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8205.     var retVal = {};
  8206.    
  8207.     var iUrl = pageData.match(/<a href="(.+?)" class="highslide"/);
  8208.  
  8209.     if (!iUrl) {
  8210.         retVal.imgUrl = null;
  8211.         retVal.status = "ABORT";
  8212.         }
  8213.     else {
  8214.         retVal.imgUrl = iUrl[1];
  8215.         retVal.status = "OK";
  8216.         }
  8217.  
  8218.     return retVal;
  8219.     }]]></searchpattern>
  8220. </host>
  8221.  
  8222. <host id="pixup.us">
  8223. <urlpattern>^http:\/\/(?:www\.)?pixup\.us\/img-</urlpattern>
  8224. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8225.     var retVal = {imgUrl: null, status: "ABORT"};
  8226.    
  8227.     var req = new XMLHttpRequest();
  8228.     req.open("POST", pageUrl, false);
  8229.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  8230.     var postData = "imgContinue=Continue+to+image+...+";
  8231.     req.send(postData);
  8232.    
  8233.     var someData = req.responseText;
  8234.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  8235.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  8236.     if (iUrl) {
  8237.         retVal.imgUrl = iUrl[2];
  8238.         retVal.status = "OK";
  8239.     }
  8240.  
  8241.     return retVal;
  8242. }]]></searchpattern>
  8243. </host>
  8244.  
  8245. <host id="pixxx">
  8246. <urlpattern>^http:\/\/pixxx\.me\/img-[\da-f]+\.html$</urlpattern>
  8247. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8248.     var retVal = {imgUrl: null, status: "ABORT"};
  8249.  
  8250.     var req = new XMLHttpRequest();
  8251.     req.open("POST", pageUrl, false);
  8252.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  8253.     var postData = "imgContinue=Continue to image ... ";
  8254.     req.send(postData);
  8255.  
  8256.     var someData = req.responseText;
  8257.     var iUrl= someData.match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  8258.     if (iUrl) {
  8259.         retVal.imgUrl = iUrl[2];
  8260.         retVal.status = "OK";
  8261.         }
  8262.  
  8263.     return retVal;
  8264. }]]></searchpattern>
  8265. </host>
  8266.  
  8267. <host id="pixxxview">
  8268. <urlpattern>^http:\/\/pixxxview\.com\/img-[\da-f]+\.html$</urlpattern>
  8269. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  8270. </host>
  8271.  
  8272. <host id="planetafamosas">
  8273. <urlpattern>http:\/\/www\.planetafamosas\.com\/.+\/.+\/\d+\/</urlpattern>
  8274. <searchpattern>"http:\\/\\/www\\.planetafamosas\\.com\\/fotos\\/"</searchpattern>
  8275. </host>
  8276.  
  8277. <host id="popoholic">
  8278. <urlpattern>^http:\/\/www\.popoholic\.com\/photo\d*\.php\?id=.+</urlpattern>
  8279. <searchpattern>"src="bigimages\/"</searchpattern>
  8280. </host>
  8281.  
  8282. <host id="popwarner">
  8283. <urlpattern>^http:\/\/www\.popwarner\.com\/\w+\/.+\/.+\.html</urlpattern>
  8284. <searchpattern>"images\/photo"</searchpattern>
  8285. </host>
  8286.  
  8287. <host id="porevo.info">
  8288. <urlpattern>^http:\/\/porevo\.info\/view\.php\?item=.+</urlpattern>
  8289. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8290.     var retVal = new Object();
  8291.  
  8292.     var tmpMatch = pageData.match(/url\(("|')?(.*\/pics?\.php\?\w+=.+)\1?\)/);
  8293.     if (tmpMatch) var the_url = tmpMatch[2];
  8294.  
  8295.     if (!the_url) {
  8296.         retVal.status = "ABORT";
  8297.         retVal.imgUrl = null;
  8298.         }
  8299.     else {
  8300.         retVal.status = "OK";
  8301.         retVal.imgUrl = the_url;
  8302.         }
  8303.     return retVal;
  8304.     }]]></searchpattern>
  8305. </host>
  8306.  
  8307. <host id="porn.jj">
  8308. <urlpattern>^http:\/\/porn\.jj\.am\/gallery\/.+\/.+\/.+\/.+\....\.....</urlpattern>
  8309. <searchpattern>"\\/gallery\\/.+\\/.+\\/.+\...."</searchpattern>
  8310. </host>
  8311.  
  8312. <host id="pornhost">
  8313. <urlpattern>^http:\/\/www\.pornhost\.com\/\d+</urlpattern>
  8314. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8315.     var retVal = new Object();
  8316.  
  8317.     var tmpMatch = pageData.match(/<div class="image"(?:.|\s)+?<img src="(.+?)"/);
  8318.     if (tmpMatch) var the_url = tmpMatch[1];
  8319.  
  8320.     if (!the_url) {
  8321.         retVal.status = "ABORT";
  8322.         retVal.imgUrl = null;
  8323.         }
  8324.     else {
  8325.         retVal.status = "OK";
  8326.         retVal.imgUrl = the_url;
  8327.         }
  8328.     return retVal;
  8329.     }]]></searchpattern>
  8330. </host>
  8331.  
  8332. <host id="pornimghost">
  8333. <urlpattern>^http:\/\/www\.pornimghost\.com\/viewer\.php\?</urlpattern>
  8334. <searchpattern>"REPLACE: 'viewer\\.php\\?file=' , 'fullsize/'"</searchpattern>
  8335. </host>
  8336.  
  8337. <host id="pornyhost">
  8338. <urlpattern>^http:\/\/.+\.pornyhost\.com\/</urlpattern>
  8339. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8340.     var retVal = new Object();
  8341.  
  8342.     var newPageUrl = pageData.match(/linkDestUrl = '(.+?)'/);
  8343.    
  8344.     if (!newPageUrl) {
  8345.         retVal.status = "ABORT";
  8346.         retVal.imgUrl = null;
  8347.         }
  8348.     else {
  8349.         retVal.status = "REQUEUE";
  8350.         retVal.imgUrl = newPageUrl[1];
  8351.         }
  8352.        
  8353.     return retVal;
  8354.     }]]></searchpattern>
  8355. </host>
  8356.  
  8357. <host id="postimage">
  8358. <urlpattern>^http:\/\/(?:www\.)?postimage\.org\/image(?:\.php\?|\/)</urlpattern>
  8359. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8360.     var retVal = new Object();
  8361.  
  8362.     if (!pageUrl.match(/\/full\//)) {
  8363.         var full = pageData.match(/<a href='(.+?)'>full size/);
  8364.         if (full) {
  8365.             retVal.imgUrl = full[1];
  8366.             retVal.status = "REQUEUE";
  8367.             return retVal;
  8368.             }
  8369.         }
  8370.    
  8371.     var iUrl = pageData.match(/src='(http:\/\/\w+\.postimage\.org\/.+?\..{3,4})'/);
  8372.  
  8373.     if (!iUrl) {
  8374.         retVal.imgUrl = null;
  8375.         retVal.status = "ABORT";
  8376.         }
  8377.     else {
  8378.         retVal.imgUrl = iUrl[1];
  8379.         retVal.status = "OK";
  8380.         }
  8381.  
  8382.     return retVal;
  8383.     }]]></searchpattern>
  8384. </host>
  8385.  
  8386. <host id="postimg">
  8387. <urlpattern>^https?:\/\/(?:www\.)?postimg\.org\/image(?:\.php\?|\/)</urlpattern>
  8388. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  8389.     var iUrl = pageData.match(/src="(https?:\/\/.+?\.jpg)"/);  
  8390.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  8391. }]]></searchpattern>
  8392. </host>
  8393.  
  8394. <host id="postyourimage">
  8395. <urlpattern>http:\/\/www\.postyourimage\.com\/view_image\.php\?img_id=.+</urlpattern>
  8396. <searchpattern>"\\.\\/images\\/.+"</searchpattern>
  8397. </host>
  8398.  
  8399. <host id="primejailbait">
  8400. <urlpattern>
  8401. ^https?:\/\/(?:www\.)?primejailbait\.com\/id\/</urlpattern>
  8402. <searchpattern>"name='pic'"</searchpattern>
  8403. </host>
  8404.  
  8405. <host id="primejailbait.com">
  8406. <urlpattern>^https:\/\/www\.primejailbait\.com\/id\/[0-9]+\/</urlpattern>
  8407. <searchpattern>"name='pic'"</searchpattern>
  8408. </host>
  8409.  
  8410. <host id="prinz.de">
  8411. <urlpattern>^http:\/\/prinz\.de\/[^\/]+\/[^\/]+\/[^\/]+\/\d+$</urlpattern>
  8412. <searchpattern>"Bildtitel"</searchpattern>
  8413. </host>
  8414.  
  8415. <host id="privatevoyeur">
  8416. <urlpattern>^http:\/\/www\.privatevoyeur\.com\/.+\/.+\..{3,4}</urlpattern>
  8417. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8418.     var retVal = new Object();
  8419.  
  8420.     retVal.imgUrl = pageUrl;
  8421.     retVal.status = "OK";
  8422.    
  8423.     return retVal;
  8424.     }]]></searchpattern>
  8425. </host>
  8426.  
  8427. <host id="ptclassic">
  8428. <urlpattern>^http:\/\/.+\.ptclassic\.com\/.+\/.+\..{3,4}$</urlpattern>
  8429. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8430.     return {imgUrl: pageUrl, status: "OK"};
  8431.     }]]></searchpattern>
  8432. </host>
  8433.  
  8434. <host id="pubimg">
  8435. <urlpattern>^https?:\/\/(?:www\.)?pubimg\.net\/image\/</urlpattern>
  8436. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  8437.     var iUrl = pageData.match(/src="(https?:\/\/pubimg\.net\/.+?\.jpg)"/); 
  8438.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  8439. }]]></searchpattern>
  8440. </host>
  8441.  
  8442. <host id="pubimg">
  8443. <urlpattern>^https?:\/\/(?:www\.)?pubimg\.net\/image\/</urlpattern>
  8444. <searchpattern><![CDATA[function(pageData, pageUrl) {  
  8445.     var iUrl = pageData.match(/src="(https?:\/\/pubimg\.net\/.+?\.jpg)"/); 
  8446.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  8447. }]]></searchpattern>
  8448. </host>
  8449.  
  8450. <host id="purepeople">
  8451. <urlpattern>http:\/\/www\.purepeople\.com\/(article|media).+?m\d+$</urlpattern>
  8452. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8453.     var num = pageUrl.match(/m(\d+)/);
  8454.     if (! num) {num = pageUrl.match(/a(\d+)/);}
  8455.     var iUrl = pageData.match('data-src="(.+?' + num[1] + '.+?)"');
  8456.     if (! iUrl) {iUrl = pageData.match('src="(.+?' + num[1] + '.+?)"');}
  8457.     var res = "";
  8458.     var sol = iUrl[1].match(/(.+?)114x114(-\d+\.jpg)/);
  8459.     if (! sol) {res = iUrl[1];} else {res = sol[1] + "950x0" + sol[2];}
  8460.     return iUrl ? {imgUrl: res, status: "OK"} : {imgUrl: null, status: "ABORT"}
  8461. }]]></searchpattern>
  8462. </host>
  8463.  
  8464. <host id="pururin">
  8465. <urlpattern>^http:\/\/pururin\.com\/view\/\d+\/\d+\/.+
  8466. </urlpattern>
  8467. <searchpattern>"class="b""</searchpattern>
  8468. </host>
  8469.  
  8470. <host id="pussystate">
  8471. <urlpattern>^http:\/\/www\.pussystate\.com\/.+\/.+\.html$</urlpattern>
  8472. <searchpattern>"pussystate\.com\/g\d+\/\d+\..{3,4}"</searchpattern>
  8473. </host>
  8474.  
  8475. <host id="pussyupload">
  8476. <urlpattern>^http:\/\/www\.pussyupload\.com\/view\.php\?</urlpattern>
  8477. <searchpattern>"gallery\\/[0-9].+\\...."</searchpattern>
  8478. </host>
  8479.  
  8480. <host id="pzy.be">
  8481. <urlpattern>^http:\/\/pzy\.be\/v\/.+</urlpattern>
  8482. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8483.     var retVal = {};
  8484.  
  8485.     var iUrl = pageData.match(/<img src=("|')(\/i\/.+?)\1/);
  8486.    
  8487.     if (!iUrl) {
  8488.         retVal.imgUrl = null;
  8489.         retVal.status = "ABORT";
  8490.         }
  8491.     else {
  8492.         retVal.imgUrl = "http://pzy.be" + iUrl[2];
  8493.         retVal.status = "OK";
  8494.         }
  8495.        
  8496.     return retVal;
  8497.     }]]></searchpattern>
  8498. </host>
  8499.  
  8500. <host id="qip.ru">
  8501. <urlpattern>^http:\/\/photo\.qip\.ru\/users\/.+\/\d+\/\d+\/(?:full_image\/)?$</urlpattern>
  8502. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8503.     var retVal = {};
  8504.    
  8505.     var iUrl = null;
  8506.     if (pageUrl.match(/full_image\/$/)) {
  8507.         iUrl = pageData.match(/<img src="(.+?)" onClick="window.close\(\);"/);
  8508.         }
  8509.     else {
  8510.         var newPageUrl = pageData.match(/<a href="[^"]+full_image\/"[^>]+onclick="open_window_prot/);
  8511.         if (newPageUrl) {
  8512.             retVal.imgUrl = pageUrl + "full_image/";
  8513.             retVal.status = "REQUEUE";
  8514.             return retVal;
  8515.             }
  8516.    
  8517.         iUrl = pageData.match(/<img src="(.+?)"[^>]+id="photo_preview_image"/);
  8518.         }
  8519.  
  8520.     if (!iUrl) {
  8521.         retVal.imgUrl = null;
  8522.         retVal.status = "ABORT";
  8523.         }
  8524.     else {
  8525.         retVal.imgUrl = iUrl[1];
  8526.         retVal.status = "OK";
  8527.         }
  8528.  
  8529.     return retVal;
  8530.     }]]></searchpattern>
  8531. </host>
  8532.  
  8533. <host id="quick-images">
  8534. <urlpattern>http:\/\/www\.quick-images\.com\/viewer\.php\?file=.+</urlpattern>
  8535. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  8536. </host>
  8537.  
  8538. <host id="quickmeme">
  8539. <urlpattern>^http:\/\/(?:www\.)?quickmeme\.com\/meme\/</urlpattern>
  8540. <searchpattern>"data-id=".+""</searchpattern>
  8541. </host>
  8542.  
  8543. <host id="qvvo">
  8544. <urlpattern>^http:\/\/\w+\.qvvo\.com</urlpattern>
  8545. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8546.     var retVal = new Object();
  8547.  
  8548.     var newPageUrl = pageData.match(/id="frame2".+?src="(.+?)"/);
  8549.    
  8550.     if (!newPageUrl) {
  8551.         retVal.status = "ABORT";
  8552.         retVal.imgUrl = null;
  8553.     }
  8554.     else {
  8555.         retVal.status = "REQUEUE";
  8556.         retVal.imgUrl = newPageUrl[1];
  8557.     }
  8558.     return retVal;
  8559. }]]></searchpattern>
  8560. </host>
  8561.  
  8562. <host id="r70.info">
  8563. <urlpattern>^http:\/\/r70.info\/img\/viewer\.php\?file=</urlpattern>
  8564. <searchpattern>"REPLACE: 'viewer\.php\?file=' , 'images/'"</searchpattern>
  8565. </host>
  8566.  
  8567. <host id="raagalahari">
  8568. <urlpattern>^http:\/\/www\.raagalahari\.com\/actress\/[0-9]+\/.+?\.aspx$</urlpattern>
  8569. <searchpattern>"http:\/\/(?:.*?cdn.*?|starzone)\.raagalahari\.com\/.+?\/(?:posters|starzone)\/.+?\/.+?"</searchpattern>
  8570. </host>
  8571.  
  8572. <host id="racyspace">
  8573. <urlpattern>^http:\/\/\w+\.racyspace\.com\/.+\/.+\.html$</urlpattern>
  8574. <searchpattern>"img src="..\/images\/[^"]+\.\w{3,4}""</searchpattern>
  8575. </host>
  8576.  
  8577. <host id="radical-foto">
  8578. <urlpattern>^http:\/\/radical-foto\.ru\/fp\/</urlpattern>
  8579. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8580.     var retVal = {imgUrl: null, status: "ABORT"};
  8581.    
  8582.     var iUrl = pageData.match(/"Url":"(http:\/\/[^"]+)"/);
  8583.     if (iUrl) {
  8584.         retVal.imgUrl = iUrl[1];
  8585.         retVal.status = "OK";
  8586.     }
  8587.  
  8588.     return retVal;
  8589. }]]></searchpattern>
  8590. </host>
  8591.  
  8592. <host id="radikal">
  8593. <urlpattern>^http:\/\/foto\.radikal\.ru\/f\.aspx\?i=.+</urlpattern>
  8594. <searchpattern>"http:\\/\\/.+\\.foto\\.radikal\\.ru\\/.+\\/.+/.+\\...."</searchpattern>
  8595. </host>
  8596.  
  8597. <host id="radikal2">
  8598. <urlpattern>^http:\/\/radikal\.ru\/.+\.html</urlpattern>
  8599. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8600.     var retVal = new Object();
  8601.     var iUrl = pageData.match(/MainImg\.Url\s=\s'(.+)'/);  
  8602.  
  8603.     if (!iUrl) {
  8604.         retVal.imgUrl = null;
  8605.         retVal.status = "ABORT";
  8606.         }
  8607.     else {
  8608.         retVal.imgUrl = iUrl[1];
  8609.         retVal.status = "OK";
  8610.         }
  8611.  
  8612.     return retVal;
  8613.     }]]></searchpattern>
  8614. </host>
  8615.  
  8616. <host id="ragalahari">
  8617. <urlpattern>^http:\/\/www\.ragalahari\.com\/.+?\/image\d+.aspx</urlpattern>
  8618. <searchpattern>"img src=.+?id=\"\w+__pagecontent_photoimg(?:\d+)?\""</searchpattern>
  8619. </host>
  8620.  
  8621. <host id="rajce.idnes.cz">
  8622. <urlpattern>^http:\/\/img\d+\.rajce\.idnes\.cz\/d\d{4}\/\d\/(\d{4})\/\1\w+\/images\/\w+\..{3,4}$</urlpattern>
  8623. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8624.     var retVal = new Object();
  8625.    
  8626.     retVal.imgUrl = pageUrl;
  8627.     retVal.status = "OK";
  8628.    
  8629.     return retVal;
  8630.     }]]></searchpattern>
  8631. </host>
  8632.  
  8633. <host id="rapidimg">
  8634. <urlpattern>^http:\/\/rapidimg\.net\/.+$</urlpattern>
  8635. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8636.     var req = new XMLHttpRequest();
  8637.     req.open("POST", pageUrl, false);
  8638.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  8639.     req.send("imgContinue=Continue+to+image+...+");
  8640.     var iUrl = (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  8641.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  8642. }]]></searchpattern>
  8643. </host>
  8644.  
  8645. <host id="rdlnk">
  8646. <urlpattern>^http:\/\/rdlnk\.co\/\w+\/\?rdu=.+</urlpattern>
  8647. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8648.     var iUrl = pageUrl.replace(/^http:\/\/rdlnk\.co\/\w+\/\?rdu=/, '');
  8649.     return {imgUrl: iUrl, status: "REQUEUE"};
  8650. }]]></searchpattern>
  8651. </host>
  8652.  
  8653. <host id="recapped">
  8654. <urlpattern>^http:\/\/www\.recapped\.com\/\d+\/\d+\/\d+\/.+</urlpattern>
  8655. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8656.    var retVal = new Object();
  8657.  
  8658.    retVal.imgUrl = pageUrl;
  8659.    retVal.status = "OK";
  8660.    
  8661.    return retVal;
  8662.    }]]></searchpattern>
  8663. </host>
  8664.  
  8665. <host id="red-xxx">
  8666. <urlpattern>^http:\/\/red-xxx\.servik\.net\/.+\/imagepages\/image.+\.html</urlpattern>
  8667. <searchpattern>"\.\.\/images\/.+"</searchpattern>
  8668. </host>
  8669.  
  8670. <host id="redasphalt">
  8671. <urlpattern>^http:\/\/img\.redasphalt\.com\/.+\..{3,4}$</urlpattern>
  8672. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8673.     return {imgUrl: pageUrl, status: "OK"};
  8674.     }]]></searchpattern>
  8675. </host>
  8676.  
  8677. <host id="redblow">
  8678. <urlpattern>^http:\/\/redblow\.com\/(?!tag\/)[^/]+\/[^/]+\/$</urlpattern>
  8679. <searchpattern>"redblow\.com\/stuff\/(?!media\/)"</searchpattern>
  8680. </host>
  8681.  
  8682. <host id="refn.ru">
  8683. <urlpattern>^http:\/\/refn\.ru\/\w+\/$</urlpattern>
  8684. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8685.     var retVal = new Object();
  8686.    
  8687.     var shit = pageData.match(/var \w+(?:.|\s)+?var \w+=([^;]+?);/);
  8688.     if (!shit) {
  8689.         retVal.imgUrl = null;
  8690.         retVal.status = "ABORT";
  8691.         return retVal;
  8692.         }
  8693.        
  8694.     shit = shit[1].replace(/[\+\n"]/g, "");
  8695.     var daChar = shit.match(/^\d+(.)/);
  8696.    
  8697.     var sshit = shit.split(daChar[1]);
  8698.     var clean = "";
  8699.     for (var i = 0; i < sshit.length; i++){
  8700.         clean += String.fromCharCode(parseInt(sshit[i]));
  8701.     }
  8702.    
  8703.     var iUrl = clean.match(/top\.frames\.length(?:.|\n)+?url = '(.+?)'/);
  8704.    
  8705.     if (!iUrl) {
  8706.         retVal.imgUrl = null;
  8707.         retVal.status = "ABORT";
  8708.         }
  8709.     else {
  8710.         retVal.imgUrl = "http://refn.ru" + iUrl[1];
  8711.         retVal.status = "REQUEUE";
  8712.         }
  8713.  
  8714.     return retVal;
  8715.     }]]></searchpattern>
  8716. </host>
  8717.  
  8718. <host id="refn.ru2">
  8719. <urlpattern>^http:\/\/refn\.ru\/\w+\/\w+</urlpattern>
  8720. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8721.     var retVal = new Object();
  8722.    
  8723.     var iUrl = pageData.match(/iframe src="(.+?)"/);
  8724.    
  8725.     if (!iUrl) {
  8726.         retVal.imgUrl = null;
  8727.         retVal.status = "ABORT";
  8728.         }
  8729.     else {
  8730.         retVal.imgUrl = iUrl[1];
  8731.         retVal.status = "REQUEUE";
  8732.         }
  8733.  
  8734.     return retVal;
  8735.     }]]></searchpattern>
  8736. </host>
  8737.  
  8738. <host id="renderotica">
  8739. <urlpattern>http:\/\/www\.renderotica\.com\/modules\.php.+do=showpic.+</urlpattern>
  8740. <searchpattern>"modules\\/My_eGallery\\/gallery\\/.+\\.\\D\\D\\D"</searchpattern>
  8741. </host>
  8742.  
  8743. <host id="ressim">
  8744. <urlpattern>^http:\/\/www\.ressim\.net\/show\.php\/.+\.html$</urlpattern>
  8745. <searchpattern>"ID: img_obj"</searchpattern>
  8746. </host>
  8747.  
  8748. <host id="rollinpatrol">
  8749. <urlpattern>http:\/\/rollinpatrol\.net\/imagehost\/viewer\.php\?file=.+</urlpattern>
  8750. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)', 'images/$1'"</searchpattern>
  8751. </host>
  8752.  
  8753. <host id="rule34.xxx">
  8754. <urlpattern>^http:\/\/rule34\.xxx\/index\.php\?page=post&amp;s=view.+</urlpattern>
  8755. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8756.     var retVal = {imgUrl: null, status: "ABORT"};
  8757.    
  8758.     var iUrl = pageData.match(/href=["']([^"']+)[^<]*>Original image/);
  8759.     if (iUrl) {
  8760.         retVal.imgUrl = iUrl[1];
  8761.         retVal.status = "OK";
  8762.     }
  8763.  
  8764.     return retVal;
  8765. }]]></searchpattern>
  8766. </host>
  8767.  
  8768. <host id="sadew">
  8769. <urlpattern>http:\/\/www\.sadew\.com\/viewer\.php\?file=.+</urlpattern>
  8770. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  8771. </host>
  8772.  
  8773. <host id="safebooru">
  8774. <urlpattern>^http:\/\/safebooru\.org\/index\.php\?page=post.s=view.+</urlpattern>
  8775. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8776.     var retVal = new Object();
  8777.    
  8778.     var theId = "highres";
  8779.    
  8780.     var searchPat = new RegExp("href=[\"|']([^\"|']*)\"[^<]*>Original image");
  8781.     var tmpMatch = pageData.match(searchPat);
  8782.     if (tmpMatch) {
  8783.         var the_url = tmpMatch[1];
  8784.         }
  8785.  
  8786.     if(!the_url) {
  8787.         retVal.imgUrl = null;
  8788.         retVal.status = "ABORT";
  8789.         }
  8790.     else {
  8791.         retVal.imgUrl = the_url;
  8792.         retVal.status = "OK";
  8793.         }
  8794.  
  8795.     return retVal;
  8796.     }]]></searchpattern>
  8797. </host>
  8798.  
  8799. <host id="sankakucomplex">
  8800. <urlpattern>^http:\/\/.+\.sankakucomplex\.com\/post\/show\/.+</urlpattern>
  8801. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8802.     var retVal = new Object();
  8803.    
  8804.     var theId = "highres";
  8805.    
  8806.     var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  8807.     var tmpMatch = pageData.match(searchPat);
  8808.     if (tmpMatch) {
  8809.         tmpMatch = tmpMatch[0];
  8810.         var the_url = tmpMatch.match(/href(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  8811.         if (the_url) the_url = the_url[2];
  8812.         }
  8813.     else {
  8814.         theId = "image";
  8815.         searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  8816.         tmpMatch = pageData.match(searchPat);
  8817.         if (tmpMatch) {
  8818.             tmpMatch = tmpMatch[0];
  8819.             the_url = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  8820.             if (the_url) the_url = the_url[2];
  8821.             }
  8822.         }
  8823.  
  8824.     if(!the_url) {
  8825.         retVal.imgUrl = null;
  8826.         retVal.status = "ABORT";
  8827.         }
  8828.     else {
  8829.         retVal.imgUrl = the_url;
  8830.         retVal.status = "OK";
  8831.         }
  8832.  
  8833.     return retVal;
  8834.     }]]></searchpattern>
  8835. </host>
  8836.  
  8837. <host id="sankakustatic">
  8838. <urlpattern>^http:\/\/img\d*\.sankakustatic\.com\/wp-content\/gallery\/[\w-]+\/[\w-]+\..{3,4}</urlpattern>
  8839. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8840.    var retVal = new Object();
  8841.  
  8842.    retVal.imgUrl = pageUrl;
  8843.    retVal.status = "OK";
  8844.    
  8845.    return retVal;
  8846.    }]]></searchpattern>
  8847. </host>
  8848.  
  8849. <host id="sawfirst">
  8850. <urlpattern>^http:\/\/www\.sawfirst\.com\/[\w-]+\.html\/[^/]+$</urlpattern>
  8851. <searchpattern>"class="attachment- size-""</searchpattern>
  8852. </host>
  8853.  
  8854. <host id="scanlover">
  8855. <urlpattern>http:\/\/forum\.scanlover\.com\/attachment\.php\?attachmentid=.+</urlpattern>
  8856. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8857.     var retVal = new Object();
  8858.     retVal.imgUrl = pageUrl;
  8859.     retVal.status = "OK";
  8860.     return retVal;
  8861.     }]]></searchpattern>
  8862. </host>
  8863.  
  8864. <host id="scoopcelebrity.gallery">
  8865. <urlpattern>^http:\/\/www\.scoopcelebrity\.com\/gallery\/show\.php\/.+\.html$</urlpattern>
  8866. <searchpattern>"ID: img_obj"</searchpattern>
  8867. </host>
  8868.  
  8869. <host id="security-forum">
  8870. <urlpattern>^http:\/\/forums\.security-forum\.net\/redirector\.php\?url=</urlpattern>
  8871. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8872.     var retVal = new Object();
  8873.  
  8874.     retVal.imgUrl = pageUrl.replace(/http.+url=(.+)/, "$1");
  8875.     retVal.status = "REQUEUE";
  8876.  
  8877.     return retVal;
  8878.     }]]></searchpattern>
  8879. </host>
  8880.  
  8881. <host id="security-forum2">
  8882. <urlpattern>^http:\/\/forums\.security-forum\.net\/attachments\/.+</urlpattern>
  8883. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8884.     var retVal = new Object();
  8885.    
  8886.     retVal.imgUrl = pageUrl;
  8887.     retVal.status = "OK";
  8888.  
  8889.     return retVal;
  8890.     }]]></searchpattern>
  8891. </host>
  8892.  
  8893. <host id="sensualarousalblog">
  8894. <urlpattern>^http:\/\/(?:www\.)?sensualarousalblog\.com\/galleries\/.+\/.+\.php</urlpattern>
  8895. <searchpattern>"REPLACE: 'php', 'jpg'"</searchpattern>
  8896. </host>
  8897.  
  8898. <host id="sensualgirls">
  8899. <urlpattern>http:\/\/(?:www\.)?sensualgirls\.org\/.+\/.+\/\d+\/</urlpattern>
  8900. <searchpattern>"\/media\/pictures\/[^\/]+\/.+?\..{3,4}" border="0""</searchpattern>
  8901. </host>
  8902.  
  8903. <host id="sex">
  8904. <urlpattern>^http:\/\/(?:www\.)?sex\.com\/picture\/</urlpattern>
  8905. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8906.     var retVal = {};
  8907.    
  8908.     var iUrl = pageData.match(/<div class="image_frame">((.|\s)+?)<\/div>/);
  8909.     if (iUrl) iUrl = iUrl[1].match(/ src="(.+?)"/);
  8910.    
  8911.     if (!iUrl) {
  8912.         retVal.imgUrl = null;
  8913.         retVal.status = "ABORT";
  8914.     }
  8915.     else {
  8916.         retVal.imgUrl = iUrl[1];
  8917.         retVal.status = "OK";
  8918.     }
  8919.     return retVal;
  8920.     }]]></searchpattern>
  8921. </host>
  8922.  
  8923. <host id="sexole">
  8924. <urlpattern>^http:\/\/www\.sexole\.com\/galerias\/foto\.aspx\?</urlpattern>
  8925. <searchpattern>"http:\\/\\/hosted\\.ifw\\.es\\/galerias\\/.+\\/.+\\.jpg"</searchpattern>
  8926. </host>
  8927.  
  8928. <host id="sexyandfunny">
  8929. <urlpattern>^http:\/\/www\.sexyandfunny\.com\/image_gallery\/.+_\d+_\d+\.html</urlpattern>
  8930. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8931.     var retVal = new Object();
  8932.    
  8933.     var iUrl = pageData.match(/src="(http:\/\/files\.sexyandfunny\.com\/photos\/img_disp\/.+?)"/);
  8934.  
  8935.     if (!iUrl) {
  8936.         retVal.imgUrl = null;
  8937.         retVal.status = "ABORT";
  8938.         }
  8939.     else {
  8940.         retVal.imgUrl = iUrl[1].replace("img_disp", "img_orig");
  8941.         retVal.status = "OK";
  8942.         }
  8943.  
  8944.     return retVal;
  8945.     }]]></searchpattern>
  8946. </host>
  8947.  
  8948. <host id="sexybabepics">
  8949. <urlpattern>^http:\/\/sexybabepics\.net\/img-[\da-f]+\.html$</urlpattern>
  8950. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  8951. </host>
  8952.  
  8953. <host id="sexycoolfun">
  8954. <urlpattern>^http:\/\/(?:www\.)?sexycoolfun\.com\/image\/.+</urlpattern>
  8955. <searchpattern>"ID: img"</searchpattern>
  8956. </host>
  8957.  
  8958. <host id="sexyimg">
  8959. <urlpattern>http:\/\/sexyimg\.eu\/(?:[a-z\d]+\/.+|img-)</urlpattern>
  8960. <searchpattern>"class='centred_resized'"</searchpattern>
  8961. </host>
  8962.  
  8963. <host id="seyvet">
  8964. <urlpattern>^http:\/\/www\.seyvet\.com\/foto\/\d+\/$</urlpattern>
  8965. <searchpattern>"www\\.seyvet\\.com\\/resim\\/.+"</searchpattern>
  8966. </host>
  8967.  
  8968. <host id="sh.st">
  8969. <urlpattern>http:\/\/(?:www.)?sh\.st\/</urlpattern>
  8970. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8971.     var imgHoster = pageUrl.match(/imgchili\.net.+?$/);
  8972.     if (!imgHoster) { imgHoster = pageUrl.match(/imagebam\.com.+?$/); }
  8973.     return imgHoster ?  {imgUrl: "http://"+imgHoster, status: "REQUEUE"} : {imgUrl: null, status: "ABORT"}
  8974. }]]></searchpattern>
  8975. </host>
  8976.  
  8977. <host id="shades3.3host">
  8978. <urlpattern>http:\/\/shades3\.3host\.com\/.+\/.+\/.+</urlpattern>
  8979. <searchpattern>"\\.\\.\\/images\\/.+"</searchpattern>
  8980. </host>
  8981.  
  8982. <host id="share-amateur">
  8983. <urlpattern>^http:\/\/(?:www\.)?share-amateur\.com\/\?pic.+</urlpattern>
  8984. <searchpattern>"http:\/\/pictures\.share-image\.com\/shareimagebig\/.+"</searchpattern>
  8985. </host>
  8986.  
  8987. <host id="share-image">
  8988. <urlpattern>^http:\/\/www\.share-image\.com\/gallery\/.+</urlpattern>
  8989. <searchpattern>"http:\\/\\/pictures\\.share-image\\.com\\/pictures\\/big\\/.+"</searchpattern>
  8990. </host>
  8991.  
  8992. <host id="shareapic">
  8993. <urlpattern>^http:\/\/www\.shareapic\.net\/content\.php\?</urlpattern>
  8994. <searchpattern><![CDATA[function(pageData, pageUrl) {
  8995.     var retVal = new Object();
  8996.  
  8997.     /* old code:
  8998.     var srcPat = "http:\\/\\/images\\.shareapic\\.net\\/images(\\d+)\\/(.+?)";
  8999.     var searchPat = new RegExp("<img.+src(?:\\s+)?=(?:\\s+)?(\"|')?(" + srcPat + ")\\1(?:.+?)?>");
  9000.     var tmpMatch = pageData.match(searchPat);
  9001.     if (tmpMatch) var the_url = "http://images.shareapic.net/fullsize"+ tmpMatch[3] + "/" + tmpMatch[4];
  9002.     */
  9003.     var the_url = pageData.match(/"(http:\/\/images\.shareapic\.net\/images\d+\/.+?)"/)[1];
  9004.        
  9005.     if (!the_url) {
  9006.         retVal.status = "ABORT";
  9007.         retVal.imgUrl = null;
  9008.         }
  9009.     else {
  9010.         retVal.status = "OK";
  9011.         retVal.imgUrl = the_url;
  9012.         }
  9013.     return retVal;
  9014.     }]]></searchpattern>
  9015. </host>
  9016.  
  9017. <host id="shareapic2">
  9018. <urlpattern>^http:\/\/www\.shareapic\.net\/View.+html</urlpattern>
  9019. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9020.     var retVal = new Object();
  9021.  
  9022.     var srcPat = "http:\\/\\/images\\.shareapic\\.net\\/images(\\d+)\\/(.+?)";
  9023.  
  9024.     var searchPat = new RegExp("<img.+src(?:\\s+)?=(?:\\s+)?(\"|')?(" + srcPat + ")\\1(?:.+?)?>");
  9025.     var tmpMatch = pageData.match(searchPat);
  9026.  
  9027.     if (tmpMatch) var the_url = "http://images.shareapic.net/fullsize"+ tmpMatch[3] + "/" + tmpMatch[4];
  9028.  
  9029.     if (!the_url) {
  9030.         retVal.status = "ABORT";
  9031.         retVal.imgUrl = null;
  9032.         }
  9033.     else {
  9034.         retVal.status = "OK";
  9035.         retVal.imgUrl = the_url;
  9036.         }
  9037.     return retVal;
  9038.     }]]></searchpattern>
  9039. </host>
  9040.  
  9041. <host id="sharedimages">
  9042. <urlpattern>^http:\/\/img\d+\.sharedimages\.org\/img\.php\?id=\d+</urlpattern>
  9043. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9044.     var retVal = new Object();
  9045.    
  9046.     var theId = "img";
  9047.  
  9048.     var searchPat = new RegExp("<.+id(?:\\s+)?=(?:\\s+)?(\"|')?" + theId + "\\1.+?>");
  9049.     var tmpMatch = pageData.match(searchPat);
  9050.     if (tmpMatch) {
  9051.         tmpMatch = tmpMatch[0];
  9052.         var the_url = tmpMatch.match(/src(?:\s+)?=(?:\s+)?("|')?(.+?)\1/);
  9053.         if (the_url) the_url = the_url[2];
  9054.         }
  9055.    
  9056.     if (the_url) {
  9057.         if (the_url.match(/http:\/\/img\d+\.hotlinkimage\.com\/showimg\.php\?id=\d+&v=\d+&ext=\w+$/)) {
  9058.             retVal.imgUrl = the_url.replace(/show(img\.php)/, "$1");
  9059.             retVal.status = "REQUEUE";
  9060.             return retVal;
  9061.             }
  9062.         }
  9063.    
  9064.     if (!the_url) {
  9065.         retVal.imgUrl = null;
  9066.         retVal.status = "ABORT";
  9067.         }
  9068.     else {
  9069.         retVal.imgUrl = the_url;
  9070.         retVal.status = "OK";
  9071.         }
  9072.  
  9073.     return retVal;
  9074.     }]]></searchpattern>
  9075. </host>
  9076.  
  9077. <host id="shareimages">
  9078. <urlpattern>http:\/\/www\.shareimages\.com\/image-r\.php\?.+</urlpattern>
  9079. <searchpattern>"ShareImages.com - Free image hosting in one easy step! No account needed!"</searchpattern>
  9080. </host>
  9081.  
  9082. <host id="shareimgs">
  9083. <urlpattern>^http:\/\/www\.shareimgs\.com/show\.php/.+</urlpattern>
  9084. <searchpattern>"ID: img_obj"</searchpattern>
  9085. </host>
  9086.  
  9087. <host id="shareloading">
  9088. <urlpattern>^http:\/\/www\.shareloading\.com\/file\.php\?</urlpattern>
  9089. <searchpattern>"\\/share[0-9]+\\/"</searchpattern>
  9090. </host>
  9091.  
  9092. <host id="sharenxs">
  9093. <urlpattern>^http:\/\/(?:www\.)?sharenxs\.com\/view\/\?id=.+</urlpattern>
  9094. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9095.     var retVal = new Object();
  9096.        
  9097.     if (pageUrl.match(/pjk=l/)) {
  9098.         var iUrl = pageData.match(/src="(http:\/\/cache\.sharenxs\.com\/images\/.+\/.+?)" id=img1/);
  9099.         if (!iUrl) iUrl = pageData.match(/src="(http:\/\/(?:www\.)?sharenxs\.com\/images\/.+?)"/);
  9100.         if (!iUrl) iUrl = pageData.match(/src="(http:\/\/images\.sharenxs\.com\/.+?)"/);
  9101.        
  9102.         if (!iUrl) {
  9103.             retVal.imgUrl = null;
  9104.             retVal.status = "ABORT";
  9105.             }
  9106.         else {
  9107.             retVal.imgUrl = iUrl[1];
  9108.             retVal.status = "OK";
  9109.             }
  9110.         }
  9111.     else {
  9112.         retVal.imgUrl = pageUrl + "&pjk=l";
  9113.         retVal.status = "REQUEUE";
  9114.         }
  9115.    
  9116.     return retVal;
  9117.     }]]></searchpattern>
  9118. </host>
  9119.  
  9120. <host id="sharepics">
  9121. <urlpattern>^http:\/\/www\.sharepics\.biz\/image\/.+\.jpg</urlpattern>
  9122. <searchpattern>"REPLACE: '\\/image\\/' , '/upload/'"</searchpattern>
  9123. </host>
  9124.  
  9125. <host id="shermsshack">
  9126. <urlpattern>^http:\/\/(?:www\.)?shermsshack\.com\/.+which_image=</urlpattern>
  9127. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9128.     var retVal = {};
  9129.    
  9130.     var iUrl = pageData.match(/<div class="photo-holder">(?:.|\s)+?<img src="(.+?)"/);
  9131.  
  9132.     if (!iUrl) {
  9133.         retVal.imgUrl = null;
  9134.         retVal.status = "ABORT";
  9135.         }
  9136.     else {
  9137.         retVal.imgUrl = iUrl[1];
  9138.         retVal.status = "OK";
  9139.         }
  9140.  
  9141.     return retVal;
  9142.     }]]></searchpattern>
  9143. </host>
  9144.  
  9145. <host id="shinyuploads">
  9146. <urlpattern>http:\/\/www\.shinyuploads\.com\/detail\.asp\?id.+</urlpattern>
  9147. <searchpattern>"show\\.asp\\?id=.+"</searchpattern>
  9148. </host>
  9149.  
  9150. <host id="shotimg">
  9151. <urlpattern>^http:\/\/(?:www\.)?shotimg\.net\/img-</urlpattern>
  9152. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9153.     var retVal = {};
  9154.    
  9155.     var req = new XMLHttpRequest();
  9156.     req.open("POST", pageUrl, false);
  9157.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  9158.     var postData = "imgContinue=Continue+to+image+...+";
  9159.     req.send(postData);
  9160.    
  9161.     var someData = req.responseText;
  9162.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9163.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9164.     if (!iUrl) {
  9165.         retVal.imgUrl = null;
  9166.         retVal.status = "ABORT";
  9167.         }
  9168.     else {
  9169.         retVal.imgUrl = iUrl[2];
  9170.         retVal.status = "OK";
  9171.         }
  9172.     return retVal;
  9173.     }]]></searchpattern>
  9174. </host>
  9175.  
  9176. <host id="sicknote">
  9177. <urlpattern>^http:\/\/scans\.sicknote\.org\.uk\/pictures\/.+\/.+(?:_\d+\/)$</urlpattern>
  9178. <searchpattern>"ID: ts"</searchpattern>
  9179. </host>
  9180.  
  9181. <host id="sideburns">
  9182. <urlpattern>^http:\/\/www\.sideburns\.co\.uk\/image\/\d+$</urlpattern>
  9183. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9184.     var retVal = new Object();
  9185.    
  9186.     var iUrl = pageData.match(/<a link rel='image_src' href='(.+?)'/);
  9187.     if (!iUrl) iUrl = pageData.match(/<div class="fullimagewrap"(?:.|\s)+?src='(.+?)'/);
  9188.  
  9189.     if (!iUrl) {
  9190.         retVal.imgUrl = null;
  9191.         retVal.status = "ABORT";
  9192.         }
  9193.     else {
  9194.         retVal.imgUrl = iUrl[1];
  9195.         retVal.status = "OK";
  9196.         }
  9197.  
  9198.     return retVal;
  9199.     }]]></searchpattern>
  9200. </host>
  9201.  
  9202. <host id="simplyrandom">
  9203. <urlpattern>^http:\/\/www\.simplyrandom\.com\/.+\/.+\.php(?:\/|\?).+</urlpattern>
  9204. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9205.     var retVal = new Object();
  9206.    
  9207.     var iUrl = pageData.match(/<img src='(\.\.\/images\/.+?)'/);
  9208.  
  9209.     if (!iUrl) {
  9210.         retVal.imgUrl = null;
  9211.         retVal.status = "ABORT";
  9212.         }
  9213.     else {
  9214.         retVal.imgUrl = iUrl[1];
  9215.         retVal.status = "OK";
  9216.         }
  9217.  
  9218.     return retVal;
  9219.     }]]></searchpattern>
  9220. </host>
  9221.  
  9222. <host id="sinemalar">
  9223. <urlpattern>^http:\/\/www\.sinemalar\.com\/galeri\/\d+\/.+\/\d+\/#picture</urlpattern>
  9224. <searchpattern>".+artist_buyuk.+"</searchpattern>
  9225. </host>
  9226.  
  9227. <host id="skins.be" maxThreads="2">
  9228. <urlpattern>^http:\/\/image\.skins\.be\/[0-9]+\/.+\/</urlpattern>
  9229. <searchpattern>"ID: wallpaper_image"</searchpattern>
  9230. </host>
  9231.  
  9232. <host id="skoften">
  9233. <urlpattern>^http:\/\/www\.skoftenmedia\.com\/(?:images|babes)\/.+\/.+\..{3,4}</urlpattern>
  9234. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9235.     var retVal = new Object();
  9236.  
  9237.     retVal.imgUrl = pageUrl;
  9238.     retVal.status = "OK";
  9239.    
  9240.     return retVal;
  9241.     }]]></searchpattern>
  9242. </host>
  9243.  
  9244. <host id="sleekpix">
  9245. <urlpattern>^http:\/\/(?:www\.)?sleekpix\.com\/(?:view-file|view\.php\?file)</urlpattern>
  9246. <searchpattern>"ID: imgTag"</searchpattern>
  9247. </host>
  9248.  
  9249. <host id="sleepyjohn">
  9250. <urlpattern>^http:\/\/sleepyjohn\.com\/wp-content\/uploads\/\d+\/\d+\/.+</urlpattern>
  9251. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9252.    var retVal = new Object();
  9253.  
  9254.    retVal.imgUrl = pageUrl;
  9255.    retVal.status = "OK";
  9256.    
  9257.    return retVal;
  9258.    }]]></searchpattern>
  9259. </host>
  9260.  
  9261. <host id="slide">
  9262. <urlpattern>^http:\/\/www\.slide\.com\/s\/</urlpattern>
  9263. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9264.     var retVal = new Object();
  9265.  
  9266.     var iUrl = pageData.match(/id="singleThemePreview"(?:.|\s)+?href="(.+?)"/);
  9267.     iUrl = iUrl[1].replace(/(.+)\/$/gi, "$1");
  9268.  
  9269.     if (!iUrl) {
  9270.         retVal.imgUrl = null;
  9271.         retVal.status = "ABORT";
  9272.         }
  9273.     else {
  9274.         retVal.imgUrl = iUrl;
  9275.         retVal.status = "OK";
  9276.         }
  9277.        
  9278.     return retVal;
  9279.     }]]></searchpattern>
  9280. </host>
  9281.  
  9282. <host id="slutified">
  9283. <urlpattern>^http:\/\/slutified\.com\/.+\.php\/</urlpattern>
  9284. <searchpattern>"ID: img_obj"</searchpattern>
  9285. </host>
  9286.  
  9287. <host id="smugmug">
  9288. <urlpattern>http:\/\/.+\/\d+_.+#\d+?_.{5}$</urlpattern>
  9289. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9290.     var retVal = new Object();
  9291.     var sUrl  = pageUrl.match(/http:\/\/.+?\//) + "rpc/gallery.mg";
  9292.     var postArray = new Object();
  9293.     postArray.getNewPage = "false";
  9294.     postArray.pageOn = pageData.match(/pageOn = ("|')?(.*)\1;/)[2];
  9295.     postArray.pageType = pageData.match(/pageType = ("|')?(.*)\1;/)[2];
  9296.     postArray.AlbumID = pageUrl.match(/(\d+)_(.{5})#/)[1];
  9297.     postArray.AlbumKey = pageUrl.match(/(\d+)_(.{5})#/)[2];
  9298.     postArray.ImageID = pageUrl.match(/#(\d+)_(.{5})/)[1];
  9299.     postArray.siteUser = pageData.match(/siteUser = ("|')?(.*)\1;/)[2];
  9300.     postArray.pageScope = pageData.match(/pageScope = ("|')?(.*)\1;/)[2];
  9301.     postArray.community = pageData.match(/community = ("|')?(.*)\1;/)[2];
  9302.     postArray.pageDrawBy = pageData.match(/pageDrawBy = ("|')?(.*)\1;/)[2];
  9303.     postArray.pageTypeDetails = pageData.match(/pageTypeDetails = ("|')?(.*)\1;/)[2];
  9304.     postArray.galleryStyle = pageData.match(/galleryStyle = ("|')?(.*)\1;/)[2];
  9305.     postArray.photosPerPage = "15";
  9306.     postArray.photoSizes = "all";
  9307.     postArray.thumbSize = "Tiny";
  9308.     postArray.mainPhotoSize = "Medium";
  9309.     postArray.lightboxSize = "XLarge";
  9310.     var postData = "tool=ajaxGallery";
  9311.     for (var i in postArray) { postData += "&" + i + "=" + postArray[i]; }
  9312.     var req = new XMLHttpRequest();
  9313.     req.open("POST", sUrl, false);
  9314.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  9315.     req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
  9316.     req.send(postData);
  9317.    
  9318.     var someData = req.responseText;
  9319.    
  9320.     var searchPat = new RegExp("\"Images\".+?{(\"ImageID\":" + postArray.ImageID + ".+?)}");
  9321.     var imageInfo = someData.match(searchPat);
  9322.     if (imageInfo) imageInfo = imageInfo[1];
  9323.     else {
  9324.         retVal.status = "ABORT";
  9325.         retVal.imgUrl = null;
  9326.         return retVal;
  9327.         }
  9328.    
  9329.     var iUrl = imageInfo.match(/"OriginalSrc":"(.+?)"/);
  9330.     if (!iUrl) iUrl = imageInfo.match(/"X2LargeSrc":"(.+?)"/);
  9331.     if (!iUrl) iUrl = imageInfo.match(/"XLargeSrc":"(.+?)"/);
  9332.     if (!iUrl) iUrl = imageInfo.match(/"MediumSrc":"(.+?)"/);
  9333.     if (!iUrl) iUrl = imageInfo.match(/"SmallSrc":"(.+?)"/);
  9334.    
  9335.     if (iUrl) {
  9336.         retVal.status = "OK";
  9337.         retVal.imgUrl = iUrl[1].replace(/\\\//g, "/");
  9338.         }
  9339.     else {
  9340.         retVal.status = "ABORT";
  9341.         retVal.imgUrl = null;
  9342.         }
  9343.    
  9344.     return retVal;
  9345.     }]]></searchpattern>
  9346. </host>
  9347.  
  9348. <host id="smutty">
  9349. <urlpattern>^http:\/\/smutty\.com\/s\/[^/]+\/$</urlpattern>
  9350. <searchpattern>"class="image_perma_img""</searchpattern>
  9351. </host>
  9352.  
  9353. <host id="snapfish">
  9354. <urlpattern>http:\/\/www\d+\.snapfish\.com\/snapfish/slideshow\/AlbumID=\d+\/PictureID=\d+\/a=.+</urlpattern>
  9355. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9356.     var retVal = new Object();
  9357.    
  9358.     var ssIndex = pageData.match(/setStartImage\((.+)\)/);
  9359.     if(ssIndex) ssIndex = ssIndex[1];
  9360.     else {
  9361.         retVal.imgUrl = null;
  9362.         retVal.status = "ABORT";
  9363.         return retVal;
  9364.         }
  9365.  
  9366.     var ssImgList = pageData.match(/setProperty\(slImage, "src", ".+"\);/g);
  9367.     if (ssImgList) var iUrl = ssImgList[ssIndex];
  9368.     else {
  9369.         retVal.imgUrl = null;
  9370.         retVal.status = "ABORT";
  9371.         return retVal;
  9372.         }
  9373.    
  9374.     iUrl = iUrl.match(/"(http.+)"/);
  9375.     if (iUrl) iUrl = iUrl[1];
  9376.     else {
  9377.         retVal.imgUrl = null;
  9378.         retVal.status = "ABORT";
  9379.         return retVal;
  9380.         }
  9381.  
  9382.     retVal.imgUrl = iUrl;
  9383.     retVal.status = "OK";
  9384.     return retVal;
  9385.     }]]></searchpattern>
  9386. </host>
  9387.  
  9388. <host id="snapshotgirlz">
  9389. <urlpattern>^http:\/\/www\.snapshotgirlz\.com\/snapshotz\/view\.php\/</urlpattern>
  9390. <searchpattern>"http:\\/\\/www\\.snapshotgirlz\\.com\\/snapshotz\\/images\\.php\\/.+\\...."</searchpattern>
  9391. </host>
  9392.  
  9393. <host id="snimka">
  9394. <urlpattern>^http:\/\/\w+\.snimka\.bg\/[\w-]+\/[\w-]+\.\d+\.\d+$</urlpattern>
  9395. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9396.     var retVal = new Object();
  9397.    
  9398.     var iUrl = pageData.match(/<img id="bigImage" src="(.+?)"/);
  9399.    
  9400.     if (!iUrl) {
  9401.         retVal.imgUrl = null;
  9402.         retVal.status = "ABORT";
  9403.         }
  9404.     else {
  9405.         retVal.imgUrl = iUrl[1].replace(/(.+)(\..{3,4})$/, "$1-big$2");
  9406.         retVal.status = "OK";
  9407.         }
  9408.  
  9409.     return retVal;
  9410.     }]]></searchpattern>
  9411. </host>
  9412.  
  9413. <host id="socwall">
  9414. <urlpattern>^https?:\/\/www\.socwall\.com\/desktop-wallpaper\/.+$</urlpattern>
  9415. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9416.     var hUrl = pageUrl.substr(0,pageUrl.indexOf('/',pageUrl.indexOf('.')));
  9417.     var iUrl = pageData.match(/src="(\/images\/wallpapers\/\d+-\d+x\d+\.jpe?g)"/);
  9418.     return iUrl ? {imgUrl: hUrl + iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  9419. }]]></searchpattern>
  9420. </host>
  9421.  
  9422. <host id="softcandies">
  9423. <urlpattern>^http:\/\/www\.softcandies\.com\/albums\/.+\/.+\/.+\.html</urlpattern>
  9424. <searchpattern>"REPLACE: 'html', 'jpg'"</searchpattern>
  9425. </host>
  9426.  
  9427. <host id="sofurry">
  9428. <urlpattern>^http:\/\/www\.sofurry\.com\/page\/\d+</urlpattern>
  9429. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9430.     var retVal = new Object();
  9431.    
  9432.     var iUrl = pageData.match(/<a href="(.+?)" id="zoompicture">/);
  9433.  
  9434.     if (!iUrl) {
  9435.         retVal.imgUrl = null;
  9436.         retVal.status = "ABORT";
  9437.         }
  9438.     else {
  9439.         retVal.imgUrl = iUrl[1];
  9440.         retVal.status = "OK";
  9441.         }
  9442.  
  9443.     return retVal;
  9444.     }]]></searchpattern>
  9445. </host>
  9446.  
  9447. <host id="solopic">
  9448. <urlpattern>^http:\/\/(?:www\.)?solopic\.com\/[^.]+$</urlpattern>
  9449. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9450.     var retVal = {imgUrl: null, status: "ABORT"};
  9451.    
  9452.     var iUrl = pageData.match(/<div id="postImgs">\s*<a class="postImg" href="([^"]+)"/);
  9453.     if (iUrl) {
  9454.         retVal.imgUrl = iUrl[1];
  9455.         retVal.status = "OK";
  9456.     }
  9457.  
  9458.     return retVal;
  9459. }]]></searchpattern>
  9460. </host>
  9461.  
  9462. <host id="someimage">
  9463. <urlpattern>^https:\/\/someimage\.com\/(?!login|abuse|tos)?\w+$</urlpattern>
  9464. <searchpattern>"ID: viewimage"</searchpattern>
  9465. </host>
  9466.  
  9467. <host id="southern-charms">
  9468. <urlpattern>^http:\/\/(?:www\.)?southern-charms\.com\/.+\/.+x\d+\..{3,4}</urlpattern>
  9469. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9470.     var retVal = new Object();
  9471.    
  9472.     retVal.imgUrl = pageUrl;
  9473.     retVal.status = "OK";
  9474.    
  9475.     return retVal;
  9476.     }]]></searchpattern>
  9477. </host>
  9478.  
  9479. <host id="southwc.ru">
  9480. <urlpattern>http:\/\/southwc\.ru\/viewer\.php\?id=.+</urlpattern>
  9481. <searchpattern>"REPLACE: 'viewer\\.php\\?id=(.+)','images/$1'"</searchpattern>
  9482. </host>
  9483.  
  9484. <host id="squirrelturd">
  9485. <urlpattern>^https?:\/\/squirrelturd\.com\/img\.php</urlpattern>
  9486. <searchpattern>"images\\/photos"</searchpattern>
  9487. </host>
  9488.  
  9489. <host id="starity">
  9490. <urlpattern>^http:\/\/starity\.hu\/forum\/csatolas\/.+</urlpattern>
  9491. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9492.     var retVal = new Object();
  9493.  
  9494.     retVal.imgUrl = pageUrl;
  9495.     retVal.status = "OK";
  9496.  
  9497.     return retVal;
  9498.     }]]></searchpattern>
  9499. </host>
  9500.  
  9501. <host id="stickypix">
  9502. <urlpattern>http:\/\/stickypix\.net\/up\/view\/full\/.+</urlpattern>
  9503. <searchpattern>"http:\\/\\/stickypix\\.net\\/up\\/files\\/.+\\/.+\\.jpg"</searchpattern>
  9504. </host>
  9505.  
  9506. <host id="stooorage">
  9507. <urlpattern>^http:\/\/www\.stooorage\.com\/show\/.+\/.+</urlpattern>
  9508. <searchpattern>"stooorage\.com\/images\/"</searchpattern>
  9509. </host>
  9510.  
  9511. <host id="storeimgs">
  9512. <urlpattern>^http:\/\/(www\.)?storeimgs\.com\/(out|show)\.php\/.+</urlpattern>
  9513. <searchpattern>"http:\\/\\/storeimgs\\.com\\/out\\.php\\/.+"</searchpattern>
  9514. </host>
  9515.  
  9516. <host id="storeimgs.net">
  9517. <urlpattern>^http:\/\/(?:www\.)?storeimgs\.net\/img-</urlpattern>
  9518. <searchpattern>"centred(?:_resized)?"</searchpattern>
  9519. </host>
  9520.  
  9521. <host id="storepics">
  9522. <urlpattern>^http:\/\/storepics\.net\/view\/.+</urlpattern>
  9523. <searchpattern>"http:\\/\\/img1\\.storepics\\.net\\/.+?\\/\\d+\\/.+"</searchpattern>
  9524. </host>
  9525.  
  9526. <host id="studio31">
  9527. <urlpattern>^http:\/\/.+\.studio31\.org\/.+\/index\.php\?album=.+&amp;image=.+</urlpattern>
  9528. <searchpattern>"REPLACE: '(http:\\/\\/.+\\.studio31\\.org\\/.+\\/index\\.php\\?album=.+&amp;image=.+)', '$1&amp;p=*full-image'"</searchpattern>
  9529. </host>
  9530.  
  9531. <host id="stylebistro">
  9532. <urlpattern>^http:\/\/(?:www\.)?stylebistro\.com\/runway\/[^/]+\/.+?\/[-_a-zA-Z0-9]{8,12}($|\/\w+\+)</urlpattern>
  9533. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9534.     var retVal = {imgUrl: null, status: "ABORT"};
  9535.    
  9536.     var iUrl = pageData.match(/Image_Toolbar\.init\(\{\s*zoomUrl:'(.+?)'/);
  9537.     if (iUrl) {
  9538.         retVal.imgUrl = iUrl[1];
  9539.         retVal.status = "OK";
  9540.     }
  9541.  
  9542.     return retVal;
  9543. }]]></searchpattern>
  9544. </host>
  9545.  
  9546. <host id="subimg">
  9547. <urlpattern>^http:\/\/subimg\.net\/jpg\?id=[^&amp;]+$</urlpattern>
  9548. <searchpattern>"REPLACE: 'jpg\?id=(.+)' , '$1.jpg'"</searchpattern>
  9549. </host>
  9550.  
  9551. <host id="subirimagenes">
  9552. <urlpattern>^http:\/\/(?:www\.)?subirimagenes\.com\/.+\.html$</urlpattern>
  9553. <searchpattern>"ID: ImagenVisualizada"</searchpattern>
  9554. </host>
  9555.  
  9556. <host id="subirporno">
  9557. <urlpattern>^http:\/\/www\.subirporno\.com\/view\.php\?idgal=</urlpattern>
  9558. <searchpattern>"ID: thepic"</searchpattern>
  9559. </host>
  9560.  
  9561. <host id="supertangas">
  9562. <urlpattern>^http:\/\/www\.supertangas\.com\/fotos\/.+?\.jpg$</urlpattern>
  9563. <searchpattern>"REPLACE: '\/fotos\/', '/fotos/images/'"</searchpattern>
  9564. </host>
  9565.  
  9566. <host id="supload">
  9567. <urlpattern>^http:\/\/www\.supload\.(com|us)\/free\/</urlpattern>
  9568. <searchpattern>"http:\\/\\/.+\\.supload\\.(com|us)\\/\\.\\/files"</searchpattern>
  9569. </host>
  9570.  
  9571. <host id="swagirl">
  9572. <urlpattern>^http:\/\/((host)\.)?swagirl\.com\/(\2\/|image-)</urlpattern>
  9573. <searchpattern>"class="img_full_screen""</searchpattern>
  9574. </host>
  9575.  
  9576. <host id="sweetandhotgirls">
  9577. <urlpattern>^http:\/\/www\.sweetandhotgirls\.com\/img\.php\?img=</urlpattern>
  9578. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9579.     var retVal = new Object();
  9580.  
  9581.     retVal.imgUrl = pageUrl.replace(/http:\/\/www.sweetandhotgirls\.com\/img\.php\?img=(.+)/, "$1");
  9582.     retVal.status = "REQUEUE";
  9583.  
  9584.     return retVal;
  9585.     }]]></searchpattern>
  9586. </host>
  9587.  
  9588. <host id="sximg">
  9589. <urlpattern>^http:\/\/(?:www\.)?sximg\.nl\/img-</urlpattern>
  9590. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9591.     var retVal = {};
  9592.  
  9593.     var req = new XMLHttpRequest();
  9594.     req.open("POST", pageUrl, false);
  9595.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  9596.     var postData = "imgContinue=Continue+to+image+...+";
  9597.     req.send(postData);
  9598.  
  9599.     var someData = req.responseText;
  9600.     var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9601.     if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9602.     if (!iUrl) {
  9603.         retVal.imgUrl = null;
  9604.         retVal.status = "ABORT";
  9605.         }
  9606.     else {
  9607.         retVal.imgUrl = iUrl[2];
  9608.         retVal.status = "OK";
  9609.         }
  9610.     return retVal;
  9611. }]]></searchpattern>
  9612. </host>
  9613.  
  9614. <host id="sxpics">
  9615. <urlpattern>^http:\/\/(?:www\.)?sxpics\.net\/img-</urlpattern>
  9616. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9617.      var retVal = {};
  9618.  
  9619.      var req = new XMLHttpRequest();
  9620.      req.open("POST", pageUrl, false);
  9621.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  9622.      var postData = "imgContinue=Continue+to+image+...+";
  9623.      req.send(postData);
  9624.  
  9625.      var someData = req.responseText;
  9626.      var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9627.      if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9628.      if (!iUrl) {
  9629.          retVal.imgUrl = null;
  9630.          retVal.status = "ABORT";
  9631.          }
  9632.      else {
  9633.          retVal.imgUrl = iUrl[2];
  9634.          retVal.status = "OK";
  9635.          }
  9636.      return retVal;
  9637. }]]></searchpattern>
  9638. </host>
  9639.  
  9640. <host id="sxpics2">
  9641. <urlpattern>^http:\/\/(?:www\.)?sxpics\.nl\/img-</urlpattern>
  9642. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9643.      var retVal = {};
  9644.  
  9645.      var req = new XMLHttpRequest();
  9646.      req.open("POST", pageUrl, false);
  9647.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  9648.      var postData = "imgContinue=Continue+to+image+...+";
  9649.      req.send(postData);
  9650.  
  9651.      var someData = req.responseText;
  9652.      var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9653.      if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9654.      if (!iUrl) {
  9655.          retVal.imgUrl = null;
  9656.          retVal.status = "ABORT";
  9657.          }
  9658.      else {
  9659.          retVal.imgUrl = iUrl[2];
  9660.          retVal.status = "OK";
  9661.          }
  9662.      return retVal;
  9663. }]]></searchpattern>
  9664. </host>
  9665.  
  9666. <host id="sxpix">
  9667. <urlpattern>^http:\/\/(?:www\.)?sxpix\.nl\/img-</urlpattern>
  9668. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9669.      var retVal = {};
  9670.  
  9671.      var req = new XMLHttpRequest();
  9672.      req.open("POST", pageUrl, false);
  9673.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  9674.      var postData = "imgContinue=Continue+to+image+...+";
  9675.      req.send(postData);
  9676.  
  9677.      var someData = req.responseText;
  9678.      var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9679.      if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  9680.      if (!iUrl) {
  9681.          retVal.imgUrl = null;
  9682.          retVal.status = "ABORT";
  9683.          }
  9684.      else {
  9685.          retVal.imgUrl = iUrl[2];
  9686.          retVal.status = "OK";
  9687.          }
  9688.      return retVal;
  9689. }]]></searchpattern>
  9690. </host>
  9691.  
  9692. <host id="sxxxy">
  9693. <urlpattern>^http:\/\/www\.sxxxy\.org\/gallery\/details\.php\?image_id=\d+$</urlpattern>
  9694. <searchpattern>"REPLACE: 'details','download'"</searchpattern>
  9695. </host>
  9696.  
  9697. <host id="sztar">
  9698. <urlpattern>^http:\/\/sztar\.com\/attachment\.php\?attachmentid=</urlpattern>
  9699. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9700.     var retVal = new Object();
  9701.  
  9702.     retVal.imgUrl = pageUrl;
  9703.     retVal.status = "OK";
  9704.    
  9705.     return retVal;
  9706.     }]]></searchpattern>
  9707. </host>
  9708.  
  9709. <host id="tadanohito">
  9710. <urlpattern>http:\/\/www\.tadanohito\.net\/galleries\/.+/.+\..{3,4}</urlpattern>
  9711. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9712.     var retVal = new Object();
  9713.  
  9714.     retVal.imgUrl = pageUrl;
  9715.     retVal.status = "OK";
  9716.  
  9717.     return retVal;
  9718.     }]]></searchpattern>
  9719. </host>
  9720.  
  9721. <host id="taod">
  9722. <urlpattern>^http:\/\/www\.taod\.com\/modules\.php\?name=gal&amp;file=photo&amp;a=\d+&amp;p=\d+</urlpattern>
  9723. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9724.     var retVal = new Object();
  9725.  
  9726.     if (pageData.match(/gal\/preview/))
  9727.         {
  9728.         var srcPat = "modules\\.php\\?name=gal&file=photo&a=\\d+&p=\\d+&f=(?:\\d+)";
  9729.  
  9730.         var searchPat = new RegExp("<a.+href(?:\\s+)?=(?:\\s+)?(\"|')?(" + srcPat + ")\\1(?:.+?)?>");
  9731.         var the_url = pageData.match(searchPat);
  9732.         if (the_url) the_url = the_url[2];
  9733.  
  9734.         the_url = pageUrl + '&f=' + the_url;
  9735.  
  9736.         retVal.status = "RETRY";
  9737.         retVal.imgUrl = the_url;
  9738.         }
  9739.  
  9740.     else
  9741.         {
  9742.         var img_tags = pageData.match(/<img.+src(?:\s+)?=(?:\s+)?(\"|')?.+?\1(?:.+?)?>/g);
  9743.  
  9744.         for (i=0; i < img_tags.length; i++) {
  9745.             if (img_tags[i].match(/gal\/albums/)) {
  9746.                 var the_url = img_tags[i].match(/src(?:\s+)?=(?:\s+)?(\"|')?(.+?)\1/);
  9747.                 if (the_url) the_url = the_url[2];
  9748.                 }
  9749.             }
  9750.  
  9751.         if (!the_url) {
  9752.             retVal.imgUrl = null;
  9753.             retVal.status = "ABORT";
  9754.             }
  9755.         else {
  9756.             retVal.imgUrl = the_url;
  9757.             retVal.status = "OK";
  9758.             }
  9759.         }
  9760.  
  9761.     return retVal;
  9762.     }]]></searchpattern>
  9763. </host>
  9764.  
  9765. <host id="tapiture">
  9766. <urlpattern>^http:\/\/(?:www\.)?tapiture\.com\/image\/</urlpattern>
  9767. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9768.     var retVal = {};
  9769.    
  9770.     var iUrl = pageData.match(/<div class="single-image">((.|\s)+?)<\/div>/);
  9771.     if (iUrl) iUrl = iUrl[1].match(/img src="(.+?)"/);
  9772.    
  9773.     if (!iUrl) {
  9774.         retVal.imgUrl = null;
  9775.         retVal.status = "ABORT";
  9776.     }
  9777.     else {
  9778.         retVal.imgUrl = iUrl[1];
  9779.         retVal.status = "OK";
  9780.     }
  9781.     return retVal;
  9782.     }]]></searchpattern>
  9783. </host>
  9784.  
  9785. <host id="teensexposed">
  9786. <urlpattern>^http:\/\/teensexposed\.in\/out\.php\?.+url=</urlpattern>
  9787. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9788.     var retVal = new Object();
  9789.  
  9790.     retVal.imgUrl = pageUrl.replace(/http.+url=(.+)/, "$1");
  9791.     retVal.status = "REQUEUE";
  9792.  
  9793.     return retVal;
  9794.     }]]></searchpattern>
  9795. </host>
  9796.  
  9797. <host id="telestrekoza">
  9798. <urlpattern>^http:\/\/photos\.telestrekoza\.com\/.+\/.+\/.+\/.+\/.+\/.+</urlpattern>
  9799. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9800.     var retVal = {};
  9801.    
  9802.     var iUrl = pageData.match(/<a href="(.+?)" class="g-fullsize-link"/);
  9803.  
  9804.     if (!iUrl) {
  9805.         retVal.imgUrl = null;
  9806.         retVal.status = "ABORT";
  9807.         }
  9808.     else {
  9809.         retVal.imgUrl = iUrl[1];
  9810.         retVal.status = "OK";
  9811.         }
  9812.  
  9813.     return retVal;
  9814.     }]]></searchpattern>
  9815. </host>
  9816.  
  9817. <host id="theatlantic">
  9818. <urlpattern>^https?:\/\/www\.theatlantic\.com\/photo\/.+\/#img\d+$</urlpattern>
  9819. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9820.     var tmp = pageUrl.replace(/^https?:.+?(?=\/photo\/)/,'').replace(/\//g,'\\\/');
  9821.     if (tmp) var link = pageData.match(new RegExp("<a[^>]+?data-share-url=\"" + tmp+ "\"[^]+?>"));
  9822.     if (link) var iUrl = link.toString().match(/data-share-image="([^"]+)"/);
  9823.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"};
  9824. }]]></searchpattern>
  9825. </host>
  9826.  
  9827. <host id="thecandidforum" maxThreads="2">
  9828. <urlpattern>^http:\/\/(?:images|www)\.thecandidforum\.com\/(?:images|attachments)\/</urlpattern>
  9829. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9830.     return {imgUrl: pageUrl, status: "OK"};
  9831. }]]></searchpattern>
  9832. </host>
  9833.  
  9834. <host id="thechive">
  9835. <urlpattern>^http:\/\/thechive\.com\/\d+\/\d+\/.+\/.+\/$</urlpattern>
  9836. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9837.     var retVal = new Object();
  9838.     retVal.imgUrl = pageUrl.replace(/.+\/(\d+)\/(\d+)\/.+\/(.+)\/$/g, "http://thechive.com/wp-content/uploads/$1/$2/$3.jpg");
  9839.     retVal.status = "OK";
  9840.     return retVal;
  9841. }]]></searchpattern>
  9842. </host>
  9843.  
  9844. <host id="thedailyfix">
  9845. <urlpattern>^http:\/\/thedailyfix\.com\/\d+\/\d+\/\d+\/.+?\/.+?\/$</urlpattern>
  9846. <searchpattern>"class="attachment-large""</searchpattern>
  9847. </host>
  9848.  
  9849. <host id="thedoujin">
  9850. <urlpattern>^http:\/\/thedoujin\.com\/index\.php\?.+s=view.+</urlpattern>
  9851. <searchpattern>"ID: image"</searchpattern>
  9852. </host>
  9853.  
  9854. <host id="thefuckpics">
  9855. <urlpattern>^http:\/\/(?:www\.)?thefuckpics\.com\/image\/</urlpattern>
  9856. <searchpattern>"src="http:\/\/(?:www\.)?thefuckpics\.com\/view\.php\?pic="</searchpattern>
  9857. </host>
  9858.  
  9859. <host id="theimagehosting">
  9860. <urlpattern>^http:\/\/server[0-9]+\.theimagehosting\.com\/image\.php\?(.*&amp;)?img=.+$</urlpattern>
  9861. <searchpattern>"hosted by TheImageHosting.com"</searchpattern>
  9862. </host>
  9863.  
  9864. <host id="thenudeboard">
  9865. <urlpattern>^http:\/\/(?:www\.)?thenudeboard\.com\/attachment\.php\?attachmentid=\d+</urlpattern>
  9866. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9867.     var retVal = new Object();
  9868.  
  9869.     retVal.imgUrl = pageUrl;
  9870.     retVal.status = "OK";
  9871.    
  9872.     return retVal;
  9873.     }]]></searchpattern>
  9874. </host>
  9875.  
  9876. <host id="thepictures">
  9877. <urlpattern>http:\/\/www\.thepictures\.us\/viewer\.php\?file=.+</urlpattern>
  9878. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  9879. </host>
  9880.  
  9881. <host id="theplace.ru">
  9882. <urlpattern>http:\/\/www\.theplace\.ru\/forum\/pic_out\.php\?id=.+</urlpattern>
  9883. <searchpattern>"\\/forum\\/pics\\/.+"</searchpattern>
  9884. </host>
  9885.  
  9886. <host id="theplace2">
  9887. <urlpattern>^http:\/\/www\.theplace2\.ru\/photos\/[^/]+\/pic-\d+\.html$</urlpattern>
  9888. <searchpattern>"itemprop="contentUrl""</searchpattern>
  9889. </host>
  9890.  
  9891. <host id="theselittlepix">
  9892. <urlpattern>^http:\/\/www\.theselittlepix\.com\/post\/\d+</urlpattern>
  9893. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9894.     var retVal = new Object();
  9895.    
  9896.     var photo_div = pageData.match(/<div class="photoWrapper"(?:.|\s)+?<\/div>/);
  9897.     if (photo_div) {
  9898.         photo_div = photo_div[0];
  9899.         var iUrl = photo_div.match(/<a href="([^"]+)".+?<img src="([^"]+)"/);
  9900.         if (!iUrl) var directUrl = photo_div.match(/<img src="(.+?)"/);
  9901.     }
  9902.    
  9903.     if (directUrl) {
  9904.         retVal.imgUrl = directUrl[1];
  9905.         retVal.status = "OK";
  9906.         return retVal; 
  9907.     }
  9908.    
  9909.     if (!iUrl) {
  9910.         retVal.imgUrl = null;
  9911.         retVal.status = "ABORT";
  9912.         }
  9913.     else {
  9914.         if (iUrl[1].search(/^http:\/\/.+\.media\.tumblr\.com\/.+/) >= 0 ||
  9915.             iUrl[1].search(/^http:\/\/www\.theselittlepix\.com\/photo\/\d+\/\d+\/.+/) >= 0) {
  9916.             retVal.imgUrl = iUrl[1];
  9917.             retVal.status = "OK";
  9918.             }
  9919.         else { 
  9920.             retVal.imgUrl = iUrl[2];
  9921.             retVal.status = "OK";
  9922.             }
  9923.         }
  9924.  
  9925.     return retVal;
  9926.     }]]></searchpattern>
  9927. </host>
  9928.  
  9929. <host id="thesuperficial">
  9930. <urlpattern>^http:\/\/(?:www\.)?thesuperficial\.com\/[^\/]+\/[^?#\/]+$</urlpattern>
  9931. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9932.     var retVal = new Object();
  9933.            
  9934.     var iUrl = pageData.match(/<a href="(.+?)" >View Original<\/a>/);
  9935.    
  9936.     if (!iUrl) {
  9937.         retVal.imgUrl = null;
  9938.         retVal.status = "ABORT";
  9939.         }
  9940.     else {
  9941.         retVal.imgUrl = iUrl[1];
  9942.         retVal.status = "OK";
  9943.         }
  9944.  
  9945.     return retVal;
  9946.     }]]></searchpattern>
  9947. </host>
  9948.  
  9949. <host id="thesupermodelsgallery">
  9950. <urlpattern>^http:\/\/www\.thesupermodelsgallery\.com\/wp-content\/uploads\/\d+\/\d+\/.+\/.+\..{3,4}$</urlpattern>
  9951. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9952.     var retVal = new Object();
  9953.    
  9954.     retVal.imgUrl = pageUrl;
  9955.     retVal.status = "OK";
  9956.    
  9957.     return retVal;
  9958.     }]]></searchpattern>
  9959. </host>
  9960.  
  9961. <host id="tieguyuk">
  9962. <urlpattern>^http:\/\/(?:www\.)?tieguyuk\.net\/.+\/.+\/.+\.html?</urlpattern>
  9963. <searchpattern>"\.\.\/images\/.+\..{3,4}"</searchpattern>
  9964. </host>
  9965.  
  9966. <host id="tinypic">
  9967. <urlpattern>^http:\/\/tinypic\.com\/.+pic=.+$</urlpattern>
  9968. <searchpattern>"ID: imgElement"</searchpattern>
  9969. </host>
  9970.  
  9971. <host id="tinypic2">
  9972. <urlpattern>^http:\/\/i\d+\.tinypic\.com\/.+\..{3,4}$</urlpattern>
  9973. <searchpattern><![CDATA[function(pageData, pageUrl) {
  9974.     var retVal = new Object();
  9975.    
  9976.     retVal.imgUrl = pageUrl;
  9977.     retVal.status = "OK";
  9978.  
  9979.     return retVal;
  9980.     }]]></searchpattern>
  9981. </host>
  9982.  
  9983. <host id="tollywood24">
  9984. <urlpattern>^http:\/\/tollywood24\.com\/.+?\/Photo</urlpattern>
  9985. <searchpattern>"ID: photo"</searchpattern>
  9986. </host>
  9987.  
  9988. <host id="toppichost">
  9989. <urlpattern>^http:\/\/www\.toppichost\.com\/i\/.+\/.+\.php\?.+\.jpg</urlpattern>
  9990. <searchpattern>"ID: thepic"</searchpattern>
  9991. </host>
  9992.  
  9993. <host id="toppichost2">
  9994. <urlpattern>http:\/\/www\.toppichost\.com\/viewer\.php\?file=.+</urlpattern>
  9995. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','files/$1'"</searchpattern>
  9996. </host>
  9997.  
  9998. <host id="tpgtoday">
  9999. <urlpattern>^http:\/\/(?:www\.)?tpgtoday\.com\/show\.php\?</urlpattern>
  10000. <searchpattern>"ID: thepic"</searchpattern>
  10001. </host>
  10002.  
  10003. <host id="tpowis">
  10004. <urlpattern>^http:\/\/(?:www\.)?tpowis\.net\/forum\/download\/file\.php\?id=\d+</urlpattern>
  10005. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10006.     var retVal = new Object();
  10007.    
  10008.     retVal.imgUrl = pageUrl;
  10009.     retVal.status = "OK";
  10010.  
  10011.     return retVal;
  10012.     }]]></searchpattern>
  10013. </host>
  10014.  
  10015. <host id="truepic">
  10016. <urlpattern>^http:\/\/truepic\.org\/\w+$</urlpattern>
  10017. <searchpattern><![CDATA["<img src="[^"]+">"]]></searchpattern>
  10018. </host>
  10019.  
  10020. <host id="tumblr">
  10021. <urlpattern>^http:\/\/.+\.tumblr\.com\/post\/.+</urlpattern>
  10022. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10023.     var retVal = new Object();
  10024.    
  10025.     var iUrl = pageData.match(/href="(http:\/\/.+\.tumblr\.com\/photo\/\d+\/.+?)"/);
  10026.     if (!iUrl) iUrl = pageData.match(/src="(http:\/\/.+\.tumblr\.com.+tumblr_.+?)"/);
  10027.  
  10028.     if (!iUrl) {
  10029.         retVal.imgUrl = null;
  10030.         retVal.status = "ABORT";
  10031.         }
  10032.     else {
  10033.         retVal.imgUrl = iUrl[1];
  10034.         retVal.status = "OK";
  10035.         }
  10036.  
  10037.     return retVal;
  10038.     }]]></searchpattern>
  10039. </host>
  10040.  
  10041. <host id="turboimagehost">
  10042. <urlpattern>^http:\/\/www\.turboimagehost\.com\/p\/.+\.html</urlpattern>
  10043. <searchpattern>"ID: imageid"</searchpattern>
  10044. </host>
  10045.  
  10046. <host id="tuspics">
  10047. <urlpattern>^http:\/\/(?:www\.)?tuspics\.net\/.+</urlpattern>
  10048. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10049.     var retVal = {};
  10050.    
  10051.     var iUrl = pageData.match(/<img[^>]+?class="pic"[^>]+>/)[0];
  10052.    
  10053.     if (!iUrl) {
  10054.         retVal.imgUrl = null;
  10055.         retVal.status = "ABORT";
  10056.         }
  10057.     else {
  10058.         retVal.imgUrl = iUrl.match(/src="([^"]+)"/)[1];
  10059.         retVal.fileName = iUrl.match(/alt="([^"]+)"/)[1];
  10060.         retVal.status = "OK";
  10061.         }
  10062.    
  10063.     return retVal;
  10064.     }]]></searchpattern>
  10065. </host>
  10066.  
  10067. <host id="tutushost">
  10068. <urlpattern>http:\/\/www\.tutushost\.info\/Pics\/ViewerT\.php\?file=.+</urlpattern>
  10069. <searchpattern>"ID: dpic"</searchpattern>
  10070. </host>
  10071.  
  10072. <host id="twitpic">
  10073. <urlpattern>^http:\/\/(?:www\.)?twitpic\.com\/[^\/\.]+$</urlpattern>
  10074. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10075.     var retVal = new Object();
  10076.    
  10077.     var iUrl = pageData.match(/id="photo-display" src="(.+?)"/);
  10078.  
  10079.     if (iUrl) {
  10080.         if (iUrl[1].match(/\/large\//)) {
  10081.             retVal.imgUrl = pageUrl + "/full";
  10082.             retVal.status = "REQUEUE";
  10083.             return retVal;
  10084.             }
  10085.         }
  10086.        
  10087.     if (!iUrl) {
  10088.         retVal.imgUrl = null;
  10089.         retVal.status = "ABORT";
  10090.         }
  10091.     else {
  10092.         retVal.imgUrl = iUrl[1];
  10093.         retVal.status = "OK";
  10094.         }
  10095.  
  10096.     return retVal;
  10097.     }]]></searchpattern>
  10098. </host>
  10099.  
  10100. <host id="twitpic2">
  10101. <urlpattern>^http:\/\/(?:www\.)?twitpic\.com\/.+\/full$</urlpattern>
  10102. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10103.     var retVal = new Object();
  10104.    
  10105.     var iUrl = pageData.match(/img src="(.+?\/full\/.+?)"/);
  10106.    
  10107.     if (!iUrl) {
  10108.         retVal.imgUrl = null;
  10109.         retVal.status = "ABORT";
  10110.         }
  10111.     else {
  10112.         retVal.imgUrl = iUrl[1];
  10113.         retVal.status = "OK";
  10114.         }
  10115.  
  10116.     return retVal;
  10117.     }]]></searchpattern>
  10118. </host>
  10119.  
  10120. <host id="uImagehost">
  10121. <urlpattern>^http:\/\/uimagehost\.com\/viewer\.php\?file=</urlpattern>
  10122. <searchpattern>"REPLACE: 'viewer\\.php\\?file=' , 'images/'"</searchpattern>
  10123. </host>
  10124.  
  10125. <host id="uaimage">
  10126. <urlpattern>^http:\/\/uaimage\.com\/i\/</urlpattern>
  10127. <searchpattern>"REPLACE: '\\/i\\/' , '/im/'"</searchpattern>
  10128. </host>
  10129.  
  10130. <host id="uaimage2">
  10131. <urlpattern>^http:\/\/uaimage\.com\/image\/</urlpattern>
  10132. <searchpattern>"REPLACE: '\\/image\\/' , '/im/'"</searchpattern>
  10133. </host>
  10134.  
  10135. <host id="uaimage3">
  10136. <urlpattern>^http:\/\/uaimage\.com\/\?page=i&amp;u=</urlpattern>
  10137. <searchpattern>"ID: im"</searchpattern>
  10138. </host>
  10139.  
  10140. <host id="ubucks">
  10141. <urlpattern>^http:\/\/.+\.ubucks\.net\/$</urlpattern>
  10142. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10143.     var retVal = new Object();
  10144.    
  10145.     var iUrl = pageData.match(/<iframe id="content" src="(.+?)"/);
  10146.  
  10147.     if (!iUrl) {
  10148.         retVal.imgUrl = null;
  10149.         retVal.status = "ABORT";
  10150.         }
  10151.     else {
  10152.         retVal.imgUrl = iUrl[1];
  10153.         retVal.status = "REQUEUE";
  10154.         }
  10155.  
  10156.     return retVal;
  10157.     }]]></searchpattern>
  10158. </host>
  10159.  
  10160. <host id="ultimages">
  10161. <urlpattern>http:\/\/www\.ultimages\.com\/viewer\.php\?file=.+\.jpg</urlpattern>
  10162. <searchpattern>"REPLACE: 'viewer\\.php\\?file=(.+)','images/$1'"</searchpattern>
  10163. </host>
  10164.  
  10165. <host id="unleashedpics">
  10166. <urlpattern>^http:\/\/www\.unleashedpics\.com\/Pics\/Viewer\.php\?file=</urlpattern>
  10167. <searchpattern>"REPLACE: 'Viewer\\.php\\?file=' , ''"</searchpattern>
  10168. </host>
  10169.  
  10170. <host id="upix.me">
  10171. <urlpattern>^http:\/\/(?:www\.)?upix\.me\/files\d*\/.+\/#.+</urlpattern>
  10172. <searchpattern>"REPLACE: '\/#' , '/'"</searchpattern>
  10173. </host>
  10174.  
  10175. <host id="upix.me2">
  10176. <urlpattern>http:\/\/(?:www\.)?upix\.me\/.\/.\/\?q=</urlpattern>
  10177. <searchpattern>"ID: img"</searchpattern>
  10178. </host>
  10179.  
  10180. <host id="uplimg">
  10181. <urlpattern>^http:\/\/(?:www\.)?uplimg\.com/img-</urlpattern>
  10182. <searchpattern>"centred(?:_resized)?"</searchpattern>
  10183. </host>
  10184.  
  10185. <host id="upload.ee">
  10186. <urlpattern>^http:\/\/www\.upload\.ee\/image\/.+\..{3,4}</urlpattern>
  10187. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10188.     return {imgUrl: pageUrl, status: "OK"};
  10189.     }]]></searchpattern>
  10190. </host>
  10191.  
  10192. <host id="uploadem">
  10193. <urlpattern>^http:\/\/www\.uploadem\.com\/view</urlpattern>
  10194. <searchpattern>"http:\\/\\/i[0-9]+\\.uploadem\\.com\\/[0-9]+\\/"</searchpattern>
  10195. </host>
  10196.  
  10197. <host id="uploadhouse">
  10198. <urlpattern>http:\/\/www\.uploadhouse\.com\/viewfile\.php\?id=.+</urlpattern>
  10199. <searchpattern>"ID: dispImg"</searchpattern>
  10200. </host>
  10201.  
  10202. <host id="uploadrr">
  10203. <urlpattern>^https?:\/\/uploadrr\.com\/.+</urlpattern>
  10204. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10205.     var id = pageUrl.match(/https?:\/\/[^/]+\/([^/\.]+)/);
  10206.     var req = new XMLHttpRequest();
  10207.     req.open("POST", pageUrl, false);
  10208.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  10209.     req.send("op=view&id="+id[1]+"&pre=1&next=Continue to image...");
  10210.     var iUrl = (req.responseText).match(/("|')(http:\/\/[^/]+\/(img|i)\/[^/]+\/[-\w]+\.jpe?g)\1.+alt=("|')(.+\.jpe?g)\4/i);
  10211.     return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5].replace(/\.jpe?g/i, ".jpg"), status: "OK"} : {imgUrl: null, status: "ABORT"}
  10212. }]]></searchpattern>
  10213. </host>
  10214.  
  10215. <host id="upmyphoto">
  10216. <urlpattern>^http:\/\/(?:www\.)?upmyphoto\.com\/(?:img\/image\.php\?image=.+|image\/.+)</urlpattern>
  10217. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10218.     var retVal = new Object();
  10219.  
  10220.     var iUrl = pageData.match(/id="resize"(?:.|\s)+?<img(?:.|\s)+?id="image">/);
  10221.     if (iUrl) iUrl = iUrl[0].match(/src="(.+?)"/);
  10222.    
  10223.     if (!iUrl) {
  10224.         retVal.imgUrl = null;
  10225.         retVal.status = "ABORT";
  10226.         }
  10227.     else {
  10228.         retVal.imgUrl = iUrl[1];
  10229.         retVal.status = "OK";
  10230.         }
  10231.     return retVal;
  10232.     }]]></searchpattern>
  10233. </host>
  10234.  
  10235. <host id="uppix">
  10236. <urlpattern>^http:\/\/www\.uppix\.info\/.+\/.+\/</urlpattern>
  10237. <searchpattern>"ID: dpic"</searchpattern>
  10238. </host>
  10239.  
  10240. <host id="upqt">
  10241. <urlpattern>^http:\/\/upqt\.com\/image\.asp\?</urlpattern>
  10242. <searchpattern>"uploads"</searchpattern>
  10243. </host>
  10244.  
  10245. <host id="upsimple">
  10246. <urlpattern>^http:\/\/(?:www\.)?upsimple\.com\/view\/</urlpattern>
  10247. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10248.     var retVal = {};
  10249.    
  10250.     var iUrl = pageData.match(/=('|")\.(\/uploads\/[^/]+\/.+?)\1/);
  10251.  
  10252.     if (!iUrl) {
  10253.         retVal.imgUrl = null;
  10254.         retVal.status = "ABORT";
  10255.         }
  10256.     else {
  10257.         retVal.imgUrl = "http://upsimple.com" + iUrl[2];
  10258.         retVal.status = "OK";
  10259.         }
  10260.  
  10261.     return retVal;
  10262.     }]]></searchpattern>
  10263. </host>
  10264.  
  10265. <host id="upurimg">
  10266. <urlpattern>^http:\/\/upurimg\.com\/img-[\da-f]+\.html$</urlpattern>
  10267. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10268.     var req = new XMLHttpRequest();
  10269.     req.open("POST", pageUrl, false);
  10270.     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  10271.     var postData = "imgContinue=Continue to image ... ";
  10272.     req.send(postData);
  10273.     var iUrl= (req.responseText).match(/(?:href|src)=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  10274.     return iUrl ? {imgUrl: iUrl[2], status: "OK"} : {imgUrl: null, status: "ABORT"}
  10275. }]]></searchpattern>
  10276. </host>
  10277.  
  10278. <host id="urimages">
  10279. <urlpattern>http:\/\/urimages\.com\/.+</urlpattern>
  10280. <searchpattern>"id="photo""</searchpattern>
  10281. </host>
  10282.  
  10283. <host id="urlcash">
  10284. <urlpattern>^http:\/\/.*urlcash\.net\/?</urlpattern>
  10285. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10286.     var retVal = new Object();
  10287.  
  10288.     var newPageUrl = pageData.match(/linkDestUrl = '(.+?)'/);
  10289.    
  10290.     if (!newPageUrl) {
  10291.         retVal.status = "ABORT";
  10292.         retVal.imgUrl = null;
  10293.         }
  10294.     else {
  10295.         retVal.status = "REQUEUE";
  10296.         retVal.imgUrl = newPageUrl[1];
  10297.         }
  10298.     return retVal;
  10299.     }]]></searchpattern>
  10300. </host>
  10301.  
  10302. <host id="urlgalleries">
  10303. <urlpattern>^http:\/\/.*urlgalleries\.(com\/|net\/image\.php\?)</urlpattern>
  10304. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10305.     var retVal = new Object();
  10306.  
  10307.     var newPageUrl = pageData.match(/linkDestUrl = '(.+?)'/);
  10308.    
  10309.     if (!newPageUrl) {
  10310.         retVal.status = "ABORT";
  10311.         retVal.imgUrl = null;
  10312.         }
  10313.     else {
  10314.         retVal.status = "REQUEUE";
  10315.         retVal.imgUrl = newPageUrl[1];
  10316.         }
  10317.     return retVal;
  10318.     }]]></searchpattern>
  10319. </host>
  10320.  
  10321. <host id="usemycomputer">
  10322. <urlpattern>^http:\/\/usemycomputer\.com\/show\.html\?.+\.jpg</urlpattern>
  10323. <searchpattern>"REPLACE: 'show\\.html.+i=(.+\\.jpg)' , '$1'"</searchpattern>
  10324. </host>
  10325.  
  10326. <host id="usercash">
  10327. <urlpattern>^http:\/\/.*usercash\.com\/</urlpattern>
  10328. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10329.     var retVal = new Object();
  10330.  
  10331.     var filtered = pageData.replace(/\n/g, " ");
  10332.     var frameElems = filtered.match(/<frame.+?>/ig);
  10333.  
  10334.     if (!frameElems) {
  10335.         var redirUrl = filtered.match(/<a href="(.+?)">/);
  10336.         newPageUrl = redirUrl[1];
  10337.         }
  10338.     else {
  10339.         var numElems = frameElems.length - 1;
  10340.  
  10341.         var newPageUrl = frameElems[numElems].match(/src(?:\s+)?=(?:\s+)?(\"|')?(.+?)\1/);
  10342.    
  10343.         if (newPageUrl) newPageUrl = newPageUrl[2];
  10344.         }
  10345.  
  10346.     if (!newPageUrl) {
  10347.         retVal.status = "ABORT";
  10348.         retVal.imgUrl = null;
  10349.         }
  10350.     else {
  10351.         retVal.status = "REQUEUE";
  10352.         retVal.imgUrl = newPageUrl;
  10353.         }
  10354.     return retVal;
  10355.     }]]></searchpattern>
  10356. </host>
  10357.  
  10358. <host id="vestimage">
  10359. <urlpattern>^https?:\/\/www\.vestimage\.site\/site\/v\/</urlpattern>
  10360. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10361.     var rUrl = pageData.match(/redirect_url="(.+?)"/);
  10362.     return {imgUrl: rUrl[1], status: "REQUEUE"};
  10363. }]]></searchpattern>
  10364. </host>
  10365.  
  10366. <host id="vettri">
  10367. <urlpattern>^http:\/\/(?:www\.)?vettri\.net\/gallery\/.+\/.+\/.+\/.+\.html</urlpattern>
  10368. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10369.     var retVal = new Object();
  10370.    
  10371.     var iUrl = pageData.match(/class="PhotoPad".+?src="(.+?)"/);
  10372.  
  10373.     if (!iUrl) {
  10374.         retVal.imgUrl = null;
  10375.         retVal.status = "ABORT";
  10376.         }
  10377.     else {
  10378.         retVal.imgUrl = iUrl[1];
  10379.         retVal.status = "OK";
  10380.         }
  10381.  
  10382.     return retVal;
  10383.     }]]></searchpattern>
  10384. </host>
  10385.  
  10386. <host id="vfl.ru">
  10387. <urlpattern>^http:\/\/vfl\.ru\/fotos\/[^/]+\.html</urlpattern>
  10388. <searchpattern>"ID: img_foto"</searchpattern>
  10389. </host>
  10390.  
  10391. <host id="videolist.biz">
  10392. <urlpattern>^http:\/\/videolist\.biz\/host\/photo\/view\.php</urlpattern>
  10393. <searchpattern>"ID: image"</searchpattern>
  10394. </host>
  10395.  
  10396. <host id="vip.nudiehost">
  10397. <urlpattern>http:\/\/vip\.nudiehost\.com\/content\.php\?id=.+</urlpattern>
  10398. <searchpattern>"ID: thepic"</searchpattern>
  10399. </host>
  10400.  
  10401. <host id="viperii">
  10402. <urlpattern>^http:\/\/viperii\.com\/[a-z\d]+$</urlpattern>
  10403. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10404.      var iUrl = pageData.match(/img src=("|')(.+)\1 class=("|')pic\3 alt=("|')(.+)\4 onLoad=["|']/);
  10405.      return iUrl ? {imgUrl: iUrl[2], fileName: iUrl[5], status: "OK"} : {imgUrl: null, status: "ABORT"};
  10406. }]]></searchpattern>
  10407. </host>
  10408.  
  10409. <host id="vk" maxThreads="1">
  10410. <urlpattern>^https?:\/\/vk\.com\/photo-?\d+.+?$</urlpattern>
  10411. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10412.     var id = pageUrl.match(/-?\d+_\d+/);
  10413.     var pDat = pageData.match("\\{\"id\":\"" + id + "\".+?(?:,\"(\\w_)src\":\"([^\"]+)\",\"\\1\":\\[[^\\]]+\\])+\\}");
  10414.     var iUrl = null;
  10415.     ["x","y","z"].forEach(function(srcVal) {
  10416.         let tUrl = pDat[0].match("\"" + srcVal + "_src\":\"([^\"]+)\"");
  10417.         if (tUrl) iUrl = tUrl[1];
  10418.     });
  10419.     return iUrl ? {imgUrl: iUrl.replace(/\\\//g,"/"), status: "OK"} : {imgUrl: null, status: "ABORT"};
  10420. }]]></searchpattern>
  10421. </host>
  10422.  
  10423. <host id="voyazteca">
  10424. <urlpattern>http:\/\/www\.voyazteca\.com\/vb\/redirector\.php\?url=</urlpattern>
  10425. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10426.     var retVal = new Object();
  10427.  
  10428.     var iUrl = pageUrl.match(/http.+url=(.+)/);
  10429.     iUrl = iUrl[1];
  10430.     iUrl = iUrl.replace(/%3A/gi, ":");
  10431.     iUrl = iUrl.replace(/%2F/gi, "/");
  10432.     iUrl = iUrl.replace(/%3F/gi, "?");
  10433.     iUrl = iUrl.replace(/%3D/gi, "=");
  10434.    
  10435.     if (!iUrl) {
  10436.         retVal.imgUrl = null;
  10437.         retVal.status = "ABORT";
  10438.         }
  10439.     else {
  10440.         retVal.imgUrl = iUrl;
  10441.         retVal.status = "REQUEUE";
  10442.         }
  10443.        
  10444.     return retVal;
  10445.     }]]></searchpattern>
  10446. </host>
  10447.  
  10448. <host id="voyeurweb">
  10449. <urlpattern>^http:\/\/.+\.voyeurweb\.com\/.+\/show_pic\.php\?id=\d+</urlpattern>
  10450. <searchpattern>"bigimages\/.+\..{3,4}"</searchpattern>
  10451. </host>
  10452.  
  10453. <host id="wallbase">
  10454. <urlpattern>http:\/\/wallbase\.net\/wallpaper\/\d+</urlpattern>
  10455. <searchpattern>"http:\\/\\/wallbase\\d+\\.net\\/.+\\/.+\\/wallpaper.+"</searchpattern>
  10456. </host>
  10457.  
  10458. <host id="wankamateurs">
  10459. <urlpattern>^http:\/\/www\.wankamateurs\.com\/img\.php\?url=</urlpattern>
  10460. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10461.     var retVal = new Object();
  10462.  
  10463.     retVal.imgUrl = pageUrl.replace(/http.+url=(.+)/, "$1");
  10464.     retVal.status = "REQUEUE";
  10465.  
  10466.     return retVal;
  10467.     }]]></searchpattern>
  10468. </host>
  10469.  
  10470. <host id="webgirlsonline">
  10471. <urlpattern>^http:\/\/www\.webgirlsonline\.net\/.+\/gals\/.+\/.+\..{3,4}</urlpattern>
  10472. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10473.     var retVal = new Object();
  10474.    
  10475.     retVal.imgUrl = pageUrl;
  10476.     retVal.status = "OK";
  10477.    
  10478.     return retVal;
  10479.     }]]></searchpattern>
  10480. </host>
  10481.  
  10482. <host id="webshots">
  10483. <urlpattern>^http:\/\/.+\.webshots\.com\/photo\/</urlpattern>
  10484. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10485.     var retVal = new Object();
  10486.    
  10487.     var iUrl = pageData.match(/name="flashvars" value="src=(.+?)"/);
  10488.     if (iUrl) iUrl = iUrl[1].replace(/_ph\.(.{3,4})/, "_fs.$1");
  10489.        
  10490.     if (!iUrl) {
  10491.         retVal.imgUrl = null;
  10492.         retVal.status = "ABORT";
  10493.         }
  10494.     else {
  10495.         retVal.imgUrl = iUrl;
  10496.         retVal.status = "OK";
  10497.         }
  10498.  
  10499.     return retVal;
  10500.     }]]></searchpattern>
  10501. </host>
  10502.  
  10503. <host id="wellofporn">
  10504. <urlpattern>^http:\/\/www\.gallery\.wellofporn\.com\/watch\.php\?.+</urlpattern>
  10505. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10506.     var retVal = new Object();
  10507.  
  10508.     retVal.imgUrl = pageUrl.replace(/http.+watch\.php\?(.+)/, "$1");
  10509.     retVal.status = "REQUEUE";
  10510.  
  10511.     return retVal;
  10512.     }]]></searchpattern>
  10513. </host>
  10514.  
  10515. <host id="whatboyswant">
  10516. <urlpattern>^http:\/\/(?:www\.)?whatboyswant\.com\/showpicture\/</urlpattern>
  10517. <searchpattern>"ID: normal"</searchpattern>
  10518. </host>
  10519.  
  10520. <host id="whosay">
  10521. <urlpattern>^http:\/\/www\.whosay\.com\/.+\/photos\/\d+</urlpattern>
  10522. <searchpattern>"ID: mediaPhotoMedia"</searchpattern>
  10523. </host>
  10524.  
  10525. <host id="wicked-adult-images">
  10526. <urlpattern>^http:\/\/(?:www\.)?wicked-adult-images\.com\/share\.php\?id=.+</urlpattern>
  10527. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10528.     var retVal = {};
  10529.    
  10530.     var iUrl = pageData.match(/src='(.+?)'\s+id='iimg'/);
  10531.  
  10532.     if (!iUrl) {
  10533.         retVal.imgUrl = null;
  10534.         retVal.status = "ABORT";
  10535.         }
  10536.     else {
  10537.         retVal.imgUrl = iUrl[1];
  10538.         retVal.status = "OK";
  10539.         }
  10540.  
  10541.     return retVal;
  10542.     }]]></searchpattern>
  10543. </host>
  10544.  
  10545. <host id="wikifeet">
  10546. <urlpattern>^http:\/\/www\.wikifeet\.com\/pictures\/.+\..{3,4}$</urlpattern>
  10547. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10548.    var retVal = new Object();
  10549.  
  10550.    retVal.imgUrl = pageUrl;
  10551.    retVal.status = "OK";
  10552.    
  10553.    return retVal;
  10554.    }]]></searchpattern>
  10555. </host>
  10556.  
  10557. <host id="wikifeet2">
  10558. <urlpattern>^http:\/\/pics\.wikifeet\.com\/.+\..{3,4}$</urlpattern>
  10559. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10560.     return {imgUrl: pageUrl, status: "OK"};
  10561.     }]]></searchpattern>
  10562. </host>
  10563.  
  10564. <host id="wikimedia">
  10565. <urlpattern>^http:\/\/commons\.wikimedia\.org\/wiki\/File:.+</urlpattern>
  10566. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10567.     var retVal = new Object();
  10568.    
  10569.     var iUrl = pageData.match(/Size of this preview.+?href="(.+?)"/);
  10570.    
  10571.     if (!iUrl) iUrl = pageData.match(/No higher resolution available.+?href="(.+?)"/);
  10572.  
  10573.     if (!iUrl) {
  10574.         retVal.imgUrl = null;
  10575.         retVal.status = "ABORT";
  10576.         }
  10577.     else {
  10578.         retVal.imgUrl = iUrl[1];
  10579.         retVal.status = "OK";
  10580.         }
  10581.  
  10582.     return retVal;
  10583.     }]]></searchpattern>
  10584. </host>
  10585.  
  10586. <host id="wwoecforum">
  10587. <urlpattern>^http:\/\/www\.wwoecforum\.com\/attachment\.php\?attachmentid=\d+</urlpattern>
  10588. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10589.     var retVal = new Object();
  10590.  
  10591.     retVal.imgUrl = pageUrl;
  10592.     retVal.status = "OK";
  10593.    
  10594.     return retVal;
  10595.     }]]></searchpattern>
  10596. </host>
  10597.  
  10598. <host id="wwtdd">
  10599. <urlpattern>^http:\/\/www\.wwtdd\.com\/\d+\/\d+\/.+\/.+\/$</urlpattern>
  10600. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10601.     var retVal = new Object();
  10602.    
  10603.     var iUrl = pageData.match(/href="(.+\/enlargedimage\/.+?)"/);
  10604.    
  10605.     if (!iUrl) {
  10606.         retVal.imgUrl = null;
  10607.         retVal.status = "ABORT";
  10608.         }
  10609.     else {
  10610.         retVal.imgUrl = iUrl[1];
  10611.         retVal.status = "REQUEUE";
  10612.         }
  10613.  
  10614.     return retVal;
  10615.     }]]></searchpattern>
  10616. </host>
  10617.  
  10618. <host id="wwtdd2">
  10619. <urlpattern>^http:\/\/www\.wwtdd\.com\/enlargedimage\/.+</urlpattern>
  10620. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10621.     var retVal = new Object();
  10622.    
  10623.     var iUrl = pageData.match(/img src="(.+?)".+?class="attachment-full"/);
  10624.    
  10625.     if (!iUrl) {
  10626.         retVal.imgUrl = null;
  10627.         retVal.status = "ABORT";
  10628.         }
  10629.     else {
  10630.         retVal.imgUrl = iUrl[1];
  10631.         retVal.status = "OK";
  10632.         }
  10633.  
  10634.     return retVal;
  10635.     }]]></searchpattern>
  10636. </host>
  10637.  
  10638. <host id="x-art">
  10639. <urlpattern>^http:\/\/hosted\.x-art\.com\/galleries\/\w+\/view_image\.php.+</urlpattern>
  10640. <searchpattern>"ID: gallery_image"</searchpattern>
  10641. </host>
  10642.  
  10643. <host id="x.xximg">
  10644. <urlpattern>^http:\/\/(?:www\.)?x.xximg\.net\/img-</urlpattern>
  10645. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10646.      var retVal = {};
  10647.  
  10648.      var req = new XMLHttpRequest();
  10649.      req.open("POST", pageUrl, false);
  10650.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  10651.      var postData = "imgContinue=Continue+to+image+...+";
  10652.      req.send(postData);
  10653.  
  10654.      var someData = req.responseText;
  10655.      var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  10656.      if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  10657.      if (!iUrl) {
  10658.          retVal.imgUrl = null;
  10659.          retVal.status = "ABORT";
  10660.          }
  10661.      else {
  10662.          retVal.imgUrl = iUrl[2];
  10663.          retVal.status = "OK";
  10664.          }
  10665.      return retVal;
  10666. }]]></searchpattern>
  10667. </host>
  10668.  
  10669. <host id="x05">
  10670. <urlpattern>^http:\/\/(?:www\.)?x05\.org\/show\.php\/</urlpattern>
  10671. <searchpattern>"http:\/\/(?:[^\.]+\.)?x05\.org\/out\.php\/"</searchpattern>
  10672. </host>
  10673.  
  10674. <host id="xamateurs">
  10675. <urlpattern>^http:\/\/xamateurs\.co\.uk\/g\d+-.+\/\d+</urlpattern>
  10676. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10677.     var retVal = {};
  10678.    
  10679.     var iUrl = pageData.match(/<img src="(http:\/\/[^\/]+\/foto\/.+?\/g\d+\/\d+\/[^\/]+\..{3,4})"/);
  10680.  
  10681.     if (!iUrl) {
  10682.         retVal.imgUrl = null;
  10683.         retVal.status = "ABORT";
  10684.         }
  10685.     else {
  10686.         retVal.imgUrl = iUrl[1].replace(/\/\d+(\/[^\/]+\..{3,4})$/, "$1");
  10687.         retVal.status = "OK";
  10688.         }
  10689.  
  10690.     return retVal;
  10691.     }]]></searchpattern>
  10692. </host>
  10693.  
  10694. <host id="xbbs.asia">
  10695. <urlpattern>^http:\/\/(?:www\.)?xbbs\.asia\/attachment\.php\?attachmentid=</urlpattern>
  10696. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10697.     return {imgUrl: pageUrl, status: "OK"};
  10698. }]]></searchpattern>
  10699. </host>
  10700.  
  10701. <host id="xbooru">
  10702. <urlpattern>^http:\/\/xbooru\.com\/index.php\?page=post.s=view.id=[0-9]+</urlpattern>
  10703. <searchpattern>"ID: image"</searchpattern>
  10704. </host>
  10705.  
  10706. <host id="xhamster">
  10707. <urlpattern>^http:\/\/xhamster\.com\/photos\/view\/</urlpattern>
  10708. <searchpattern>"imgId\s*="</searchpattern>
  10709. </host>
  10710.  
  10711. <host id="xjz">
  10712. <urlpattern>^http:\/\/xjz\.nl\/url\/view\/\w{30,}=+\/\d+</urlpattern>
  10713. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10714.     var retVal = {};
  10715.    
  10716.     var iUrl = pageData.match(/URL=(http:\/\/.+?)"/i);
  10717.     if (!iUrl) iUrl=pageData.match(/contents by going to: <a href="(.+?)"/i);
  10718.  
  10719.     if (!iUrl) {
  10720.         retVal.imgUrl = null;
  10721.         retVal.status = "ABORT";
  10722.         }
  10723.     else {
  10724.         retVal.imgUrl = iUrl[1];
  10725.         retVal.status = "REQUEUE";
  10726.         }
  10727.  
  10728.     return retVal;
  10729.     }]]></searchpattern>
  10730. </host>
  10731.  
  10732. <host id="xlocker">
  10733. <urlpattern>http:\/\/xlocker\.net\/\w+(?:\/.+\.html|\.html)</urlpattern>
  10734. <searchpattern>"class="pic""</searchpattern>
  10735. </host>
  10736.  
  10737. <host id="xoze.in">
  10738. <urlpattern>^http:\/\/xoze\.in\/\w+\/.+\.jpg\.html$</urlpattern>
  10739. <searchpattern>"class="pic""</searchpattern>
  10740. </host>
  10741.  
  10742. <host id="xportalbiz">
  10743. <urlpattern>^http:\/\/x-portal\.biz\/share.+</urlpattern>
  10744. <searchpattern>"ID: iimg"</searchpattern>
  10745. </host>
  10746.  
  10747. <host id="xs.to">
  10748. <urlpattern>^http?:\/\/xs\.to\/xs\.php\?(.*&amp;)?h=.+$</urlpattern>
  10749. <searchpattern>"https\\?:\\/\\/xs[0-9]+\\.xs\\.to"</searchpattern>
  10750. </host>
  10751.  
  10752. <host id="xuk">
  10753. <urlpattern>^http:\/\/pic\.xuk\.ru\/files\/.+\.jpg</urlpattern>
  10754. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10755.     var retVal = new Object();
  10756.  
  10757.     retVal.imgUrl = pageUrl;
  10758.     retVal.status = "OK";
  10759.  
  10760.     return retVal;
  10761.     }]]></searchpattern>
  10762. </host>
  10763.  
  10764. <host id="xximg">
  10765. <urlpattern>^http:\/\/(?:www\.)?xximg\.net\/img-</urlpattern>
  10766. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10767.      var retVal = {};
  10768.  
  10769.      var req = new XMLHttpRequest();
  10770.      req.open("POST", pageUrl, false);
  10771.      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  10772.      var postData = "imgContinue=Continue+to+image+...+";
  10773.      req.send(postData);
  10774.  
  10775.      var someData = req.responseText;
  10776.      var iUrl = someData.match(/href=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  10777.      if (!iUrl) iUrl = someData.match(/src=('|")(http:\/\/[^/]+\/upload\/big\/.+?)\1/);
  10778.      if (!iUrl) {
  10779.          retVal.imgUrl = null;
  10780.          retVal.status = "ABORT";
  10781.          }
  10782.      else {
  10783.          retVal.imgUrl = iUrl[2];
  10784.          retVal.status = "OK";
  10785.          }
  10786.      return retVal;
  10787.      }]]></searchpattern>
  10788. </host>
  10789.  
  10790. <host id="xxxupl">
  10791. <urlpattern>^http:\/\/xxxupl\.com\/share-.+\.html</urlpattern>
  10792. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10793.     var retVal = new Object();
  10794.    
  10795.     retVal.imgUrl = pageUrl.replace(/(.+)\/share-(.+)\.html/g, "$1/image-$2.jpg");
  10796.     retVal.status = "OK";
  10797.     return retVal;
  10798.     }]]></searchpattern>
  10799. </host>
  10800.  
  10801. <host id="xxxupload">
  10802. <urlpattern>^http:\/\/xxxupload\.org\/img-[\da-f]+\.html$</urlpattern>
  10803. <searchpattern>"class='centred(?:_resized)?'"</searchpattern>
  10804. </host>
  10805.  
  10806. <host id="yahoo.jp">
  10807. <urlpattern>^http:\/\/blogs\.yahoo\.co\.jp\/nadagi_blog\/GALLERY\/show.+$</urlpattern>
  10808. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10809.     var iUrl = pageData.match(/src="(http:\/\/blogs\.c\.yimg\.jp\/res\/[^\/]+\/nadagi_blog\/folder\/\d+\/\d+\/\d+\/img_\d+\?\d+)/i);   
  10810.     return iUrl ? {imgUrl: iUrl[1], status: "OK"} : {imgUrl: null, status: "ABORT"}
  10811. }]]></searchpattern>
  10812. </host>
  10813.  
  10814. <host id="yankoimages">
  10815. <urlpattern>^http:\/\/(?:www\.)?yankoimages\.net\/.+\/.+\.html</urlpattern>
  10816. <searchpattern>"http:\/\/img\d*\.imageporter\.com\/i\/.+\/.+\.\w{3,4}"</searchpattern>
  10817. </host>
  10818.  
  10819. <host id="ychan.ca">
  10820. <urlpattern>^http:\/\/ychan\.ca\/view\/\d+</urlpattern>
  10821. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10822.     var retVal = new Object();
  10823.    
  10824.     var iUrl = pageData.match(/<a href="(.+?)">Download/);
  10825.  
  10826.     if (!iUrl) {
  10827.         retVal.imgUrl = null;
  10828.         retVal.status = "ABORT";
  10829.         }
  10830.     else {
  10831.         retVal.imgUrl = iUrl[1];
  10832.         retVal.status = "OK";
  10833.         }
  10834.  
  10835.     return retVal;
  10836.     }]]></searchpattern>
  10837. </host>
  10838.  
  10839. <host id="yfrog">
  10840. <urlpattern>^http:\/\/yfrog\.com\/\w+$</urlpattern>
  10841. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10842.     var retVal = new Object();
  10843.    
  10844.     var iUrl = pageData.match(/Direct:.+?href="(.+?)"/);
  10845.    
  10846.     if (!iUrl) {
  10847.         retVal.imgUrl = null;
  10848.         retVal.status = "ABORT";
  10849.         }
  10850.     else {
  10851.         retVal.imgUrl = iUrl[1];
  10852.         retVal.status = "OK";
  10853.         }
  10854.        
  10855.     return retVal;
  10856.     }]]></searchpattern>
  10857. </host>
  10858.  
  10859. <host id="your-ex">
  10860. <urlpattern>^http:\/\/your-ex\.com\/go\.php\?link=image</urlpattern>
  10861. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10862.     var retVal = new Object();
  10863.  
  10864.     retVal.imgUrl = pageUrl.replace(/http.+url=(.+)/, "$1");
  10865.     retVal.status = "REQUEUE";
  10866.  
  10867.     return retVal;
  10868.     }]]></searchpattern>
  10869. </host>
  10870.  
  10871. <host id="z0d">
  10872. <urlpattern>^http:\/\/(?:www\.)?z0d\.com\/\?page=gallery&amp;image_size=.+</urlpattern>
  10873. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10874.     var retVal = new Object();
  10875.    
  10876.     var medium = pageUrl.match(/^http:\/\/(?:www\.)?z0d\.com\/\?page=gallery&image_size=medium/);
  10877.     if (medium) {
  10878.         retVal.imgUrl = pageUrl.replace(/(image_size=)medium/, "$1large");
  10879.         retVal.status = "REQUEUE";
  10880.         return retVal;
  10881.         }
  10882.    
  10883.     var iUrl = pageData.match(/src="(\/content\/\d+\/\d+\/\d+\/.+?)"/);
  10884.  
  10885.     if (!iUrl) {
  10886.         retVal.imgUrl = null;
  10887.         retVal.status = "ABORT";
  10888.         }
  10889.     else {
  10890.         retVal.imgUrl = iUrl[1];
  10891.         retVal.status = "OK";
  10892.         }
  10893.  
  10894.     return retVal;
  10895.     }]]></searchpattern>
  10896. </host>
  10897.  
  10898. <host id="zerochan">
  10899. <urlpattern>^http:\/\/(?:www\.)?zerochan\.net\/\d+</urlpattern>
  10900. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10901.     var retVal = {};
  10902.    
  10903.     var iUrl = pageData.match(/fullsizeUrl = '(.+?)'/);
  10904.  
  10905.     if (!iUrl) {
  10906.         retVal.imgUrl = null;
  10907.         retVal.status = "ABORT";
  10908.         }
  10909.     else {
  10910.         retVal.imgUrl = iUrl[1];
  10911.         retVal.status = "OK";
  10912.         }
  10913.  
  10914.     return retVal;
  10915.     }]]></searchpattern>
  10916. </host>
  10917.  
  10918. <host id="zff.co">
  10919. <urlpattern>^http:\/\/\w+\.zff\.co\/?</urlpattern>
  10920. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10921.     var retVal = {status: "REDIRECT"};
  10922.  
  10923.     var newPageUrl = pageData.match(/Lbjs\.TargetUrl = '(.+?)'/);
  10924.    
  10925.     if (newPageUrl) {
  10926.         retVal.status = "REQUEUE";
  10927.         retVal.imgUrl = newPageUrl[1].replace(/&amp;/g, "&");
  10928.     }
  10929.        
  10930.     return retVal;
  10931. }]]></searchpattern>
  10932. </host>
  10933.  
  10934. <host id="zimagez">
  10935. <urlpattern>^http:\/\/www\.zimagez\.com\/zimage\/.+\.php</urlpattern>
  10936. <searchpattern>"ID: userPic"</searchpattern>
  10937. </host>
  10938.  
  10939. <host id="zimbio">
  10940. <urlpattern>^http:\/\/www\.zimbio\.com\/(?:photos|pictures)\/(?:[^/]+\/){2,}[\w-+]+$</urlpattern>
  10941. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10942.     var retVal = {imgUrl: null, status: "ABORT"};
  10943.    
  10944.     var iUrl = pageData.match(/data-zoom-url="(.+?)"/);
  10945.     if (iUrl) {
  10946.         retVal.imgUrl = iUrl[1];
  10947.         retVal.status = "OK";
  10948.     }
  10949.  
  10950.     return retVal;
  10951. }]]></searchpattern>
  10952. </host>
  10953.  
  10954. <host id="zizki">
  10955. <urlpattern>^http:\/\/(?:www\.)?zizki\.com\/comics\/.+\.html</urlpattern>
  10956. <searchpattern>"style="max-width:1300px""</searchpattern>
  10957. </host>
  10958.  
  10959. <host id="zodcaps">
  10960. <urlpattern>^http:\/\/forum\.zodcaps\.com\/attachment\.php\?attachmentid=</urlpattern>
  10961. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10962.     return {imgUrl: pageUrl, status: "OK"};
  10963. }]]></searchpattern>
  10964. </host>
  10965.  
  10966. <host id="zonagay.com.br">
  10967. <urlpattern>^http:\/\/(?:www\.)?zonagay\.com\.br\/fotos\/.+\..{3,4}</urlpattern>
  10968. <searchpattern><![CDATA[function(pageData, pageUrl) {
  10969.     var retVal = new Object();
  10970.    
  10971.     retVal.imgUrl = pageUrl;
  10972.     retVal.status = "OK";
  10973.    
  10974.     return retVal;
  10975.     }]]></searchpattern>
  10976. </host>
  10977.  
  10978. <host id="zscan">
  10979. <urlpattern>^http:\/\/www\.zscan\.org\/.+\/.+</urlpattern>
  10980. <searchpattern>"ID: thepic"</searchpattern>
  10981. </host>
  10982.  
  10983. <host id="zshare">
  10984. <urlpattern>^http:\/\/www\.zshare\.net\/image\/</urlpattern>
  10985. <searchpattern>"ID: image"</searchpattern>
  10986. </host>
  10987. </root>
RAW Paste Data