Handy Image

Shows just fullsize Image with hotkeys & without pop-ups on many image-hosting sites

Verzia zo dňa 15.12.2020. Pozri najnovšiu verziu.

  1. // ==UserScript==
  2. // @name Handy Image
  3. // @version 2020.12.04
  4. // @author Owyn
  5. // @contributor ubless607, bitst0rm
  6. // @namespace handyimage
  7. // @description Shows just fullsize Image with hotkeys & without pop-ups on many image-hosting sites
  8. // @homepage https://github.com/Owyn/HandyImage
  9. // @supportURL https://github.com/Owyn/HandyImage/issues
  10. // @icon https://images2.imgbox.com/f0/e8/W9zirOUG_o.png
  11. // @run-at document-start
  12. // @grant GM.getValue
  13. // @grant GM.setValue
  14. // @grant GM_registerMenuCommand
  15. // @grant GM_unregisterMenuCommand
  16. // @grant GM_getValue
  17. // @grant GM_setValue
  18. // @grant unsafeWindow
  19. // @match https://gist.github.com/Owyn/8553d7953d948228e312
  20. // @match http://www.imagebam.com/image*
  21. // @match http://imgchili.net/show*
  22. // @match *://imgbox.com/*
  23. // @match *://*.imagetwist.com/*
  24. // @match https://*.imagevenue.com/*
  25. // @match *://*.imageshack.com/i/*
  26. // @match *://*.imageshack.com/f/*
  27. // @match *://*.image2you.ru/*/*/
  28. // @exclude *://image2you.ru/cabinet/*
  29. // @exclude *://www.image2you.ru/cabinet/*
  30. // @match https://imageban.ru/show*
  31. // @match *://fastpic.ru/view*
  32. // @match *://fastpic.ru/fullview*
  33. // @match *://pixhost.to/show/*
  34. // @match http://*.picpicture.com/image/*
  35. // @match http://*.pic5you.ru/*/*/
  36. // @match http://*.tinypic.com/view*
  37. // @match http://radical-foto.ru/*
  38. // @match http://radikal-foto.ru/*
  39. // @match https://radikal.ru/*
  40. // @exclude https://radikal.ru/video/*
  41. // @match http://f-page.ru/*
  42. // @match http://f-picture.net/*
  43. // @match https://*.pimpandhost.com/image*
  44. // @match https://*.pixroute.com/*.html
  45. // @match http://*.picforall.ru/*/*/
  46. // @match *://*.imagecurl.com/view*
  47. // @match *://*.imagecurl.org/view*
  48. // @match http://*.euro-pic.eu/*share*
  49. // @match http://*.xxxhost.me/view*
  50. // @match http://*.imadul.com/?*
  51. // @match *://postimg.org/image/*
  52. // @match *://postimg.cc/*
  53. // @match http://*.niceimage.pl/*.html
  54. // @match http://*.pics-money.ru/*
  55. // @match http://*.freeimgup.com/*.*
  56. // @match http://imgtiger.com/view*
  57. // @match https://*.imgspice.com/*/*
  58. // @match http://*.picage.ru/*/*
  59. // @match http://*.imgserve.net/img*
  60. // @match http://*.images-host.biz/*/*
  61. // @match http://*.imgfantasy.com/*
  62. // @match http://*.platimzafoto.ru/full/
  63. // @match http://*.platimzafoto.ru/*.html
  64. // @match http://imgdino.com/view*
  65. // @match http://*.pic-money.ru/*.html
  66. // @match http://*.pic-money.ru/full/
  67. // @match http://*.imgcandy.net/img*
  68. // @match http://*.imagefolks.com/img*
  69. // @match *://*.pzy.be/v*
  70. // @match https://www.turboimagehost.com/p*
  71. // @match http://*.subirimagenes.com/*.html
  72. // @match http://*.screenlist.ru/details.php?image_id=*
  73. // @match http://qrrro.com/images*
  74. // @match http://imgmade.com/images*
  75. // @match http://www.pic-upload.de/view*
  76. // @match http://picshare.geenza.com/pics*
  77. // @match https://www.imgbabes.com/*/*.htm*
  78. // @match http://ibunker.us/f*
  79. // @match http://ichan.org/image.php?path=*
  80. // @match http://*.imagearn.com/*
  81. // @match http://www.dumppix.com/view*
  82. // @match http://www.bilder-upload.eu/show*
  83. // @match http://www.bilder-hochladen.net/file*
  84. // @match http://www.bild.me/bild.php?*
  85. // @match *://www.imagesnake.com/show*
  86. // @match *://www.imagesnake.com/img*
  87. // @match *://www.imagesnake.com/view*
  88. // @match http://www.imagesnake.org/show*
  89. // @match http://www.imagesnake.org/img*
  90. // @match http://www.imagesnake.org/view*
  91. // @match https://www.freebunker.com/show*
  92. // @match https://www.freebunker.com/img*
  93. // @match https://www.freebunker.com/view*
  94. // @match http://bayimg.com/*
  95. // @match http://*.directupload.net/file*
  96. // @match http://*.imagecherry.com/*
  97. // @match https://funkyimg.com/view*
  98. // @match http://*.abload.de/image.php?*
  99. // @match http://*.picfox.org/share*
  100. // @match http://*.pixup.us/img-*
  101. // @match http://*.imagecarry.com/*/*
  102. // @match http://*.imagedunk.com/*/*
  103. // @match http://*.imageswitch.com/*/*
  104. // @match http://*.piclambo.net/*/*
  105. // @match http://*.picleet.com/*/*
  106. // @match http://*.yankoimages.net/*/*
  107. // @match http://*.picturedip.com/*/*
  108. // @match http://*.croftimage.com/img-*
  109. // @match https://*.imagedecode.com/img-*
  110. // @match http://*.imagefruit.com/img*
  111. // @match http://*.imagefruit.com/show*
  112. // @match http://*.miragepics.com/view*
  113. // @match http://*.freeimagehosting.net/*
  114. // @match http://*.keptarolo.hu/*
  115. // @match http://www.uploadhouse.com/view*
  116. // @match http://*.dumpt.com/img/view*
  117. // @match http://imagezilla.net/show/*
  118. // @match http://*.imageup.ru/img*
  119. // @match http://*.casimages.com/photos/*/*/*
  120. // @match http://*.casimages.com/img*
  121. // @match http://*.cyberpics.net/p*
  122. // @match *://vvcap.com/*
  123. // @match https://*.freeimage.us/share*
  124. // @match http://*.pix-x.net/*/*
  125. // @match http://*.shareimages.com/image*
  126. // @match http://www.xtremeshack.com/image/*
  127. // @match http://*.mrjh.org/gallery.php?entry=*
  128. // @match http://*.itmages.ru/image/view*
  129. // @match http://shrani.najdi.si/*
  130. // @match http://*.iv.pl/view*
  131. // @match http://*.image18.org/show/*
  132. // @match http://*.pic4you.ru/*
  133. // @match http://picload.org/view*
  134. // @match http://*.thebestpichost.com/picture/*
  135. // @match *://*.lostpic.net/image/*
  136. // @match http://subefotos.com/ver/*
  137. // @exclude http://subefotos.com/ver/*#codigos
  138. // @match http://*.pixsor.com/share*
  139. // @match http://*.pixsor.com/XXX/share*
  140. // @match http://*.image-share.com/i*html
  141. // @match http://*.npicture.net/share-*
  142. // @match http://*.overpic.net/view*
  143. // @match http://*.imagecross.com/*
  144. // @match http://*.mojoimage.com/*
  145. // @match http://www.use.com/*
  146. // @match http://www.hostingpics.net/view*
  147. // @match http://*.pictureshoster.com/view*
  148. // @match http://*.imageshost.ru/photo*
  149. // @match http://*.imagestime.com/show*
  150. // @match http://sharenxs.com/view*
  151. // @match http://sharenxs.com/gallery/*/*
  152. // @match http://img4.imagetitan.com/img*
  153. // @match http://*.imagenpic.com/*
  154. // @match http://*.stuffed.ru/images*
  155. // @match http://*.wstaw.org/w/*
  156. // @match http://www.imagesocket.com/photos*
  157. // @match http://www.imagesocket.com/social*
  158. // @match http://imageban.net/show*
  159. // @match http://*.otofotki.pl/*
  160. // @match http://*.imgsin.com/view*
  161. // @match http://*.imagenetz.de/*
  162. // @match http://pix.toile-libre.org/?img*
  163. // @match http://www.servimg.com/image*
  164. // @match http://*.upix.me/files/*
  165. // @match http://*.upix.me/i/v/?q=*
  166. // @match http://*.pixelup.net/image*
  167. // @match http://*.pixelup.net/image*
  168. // @match http://*.picsee.net/*
  169. // @match http://www.fotosik.pl/pokaz_obrazek/pelny*
  170. // @match http://*.depic.me/*
  171. // @match http://www.xup.in/dl*
  172. // @match http://*.hotchyx.com/d*
  173. // @match http://*.imageupper.com/i/*
  174. // @match *://beeimg.com/view*
  175. // @match http://www.noelshack.com/*.*
  176. // @match http://www.turbopix.fr/v/*
  177. // @match http://thumbsnap.com/*
  178. // @match http://deffe.com/image/*
  179. // @match http://*.imageno.com/*.html
  180. // @match http://*.imagehousing.com/image*
  181. // @match http://www.picfront.org/d/*
  182. // @match http://*.imagehost.thasnasty.com/?*
  183. // @match http://*.imagilive.com/*.htm*
  184. // @match http://*.thepornfeeds.com/?*
  185. // @match http://*.picturevip.com/*
  186. // @exclude http://*.picturevip.com/x/clean/
  187. // @match http://img.3ezy.net/*.htm
  188. // @match http://*.xximg.net/img-*
  189. // @match http://*.zaslike.com/view*
  190. // @match http://www.zimagez.com/zimage*
  191. // @match http://*.pictureturn.com/*.html
  192. // @match http://*.cubeupload.com/im/*
  193. // @match http://www.photo-host.org/view-image/*
  194. // @match http://www.fotoszok.pl/show*
  195. // @match http://*.imglink.ru/show*
  196. // @match http://zapodaj.net/*.html
  197. // @match http://www.pixic.ru/view*
  198. // @match http://www.imagesup.de/picture.php?code=*
  199. // @match https://www.pornbus.org/show*
  200. // @match http://www.bilder-space.de/bild-*
  201. // @match *://www.imgcarry.com/show*
  202. // @match http://*.saveimg.ru/show*
  203. // @match http://www.fotos-hochladen.net/view*
  204. // @match http://simplest-image-hosting.net/*
  205. // @match http://jpegbay.com/gallery/*.html
  206. // @match http://www.hostpic.org/view*
  207. // @match *://imagik.fr/image/*
  208. // @match http://www.image-load.net/show*
  209. // @match http://*.sxpics.nl/img-*
  210. // @match http://*.gallerycloud.net/image/*
  211. // @match http://tryimg.com/image/*
  212. // @match http://bilder.nixhelp.de/display-*
  213. // @match http://*.funextra.hostzi.com/view*
  214. // @match http://*.freakimage.com/view*
  215. // @match http://*.fotoo.pl/show.php?img=*.html
  216. // @match http://*.rapid-img.de/img.php?f=*
  217. // @match http://*.1pics.ru/view-*
  218. // @match http://*.1pics.ru//view-*
  219. // @match http://*.upload.djmaster.fr/?v=*
  220. // @match http://img.pereslavl.ru/share*
  221. // @match http://*.dwimg.com/view*
  222. // @match http://www.imageurlhost.com/view*
  223. // @match http://*.imagesup.net/*
  224. // @match http://*.superkipje.com/view*
  225. // @match https://*.2i.sk/i/*
  226. // @match https://imgadult.com/img-*
  227. // @match http://imagebic.com/?v=*
  228. // @match http://www.picshot.pl/public/view*
  229. // @match http://*.imagesmax.de/display-*
  230. // @match http://*.ifotos.pl/zobacz/*
  231. // @match http://www.zimage.fr/photo.php?id=*
  232. // @match http://www.zimage.fr/taillereel.php?id=*
  233. // @match http://ngarko.online.fr/view*
  234. // @match http://*.b4he.com/?v=*
  235. // @match http://*.oxily.com/?*
  236. // @match http://ghanaimages.co/?*
  237. // @match http://*.imgplus.info/view*
  238. // @match http://firepic.org/?v=*
  239. // @match http://savepic.org/*.htm
  240. // @match http://*.fastimages.ru/p*
  241. // @match http://ipic.su/?page=img&pic=*
  242. // @match http://*.jpegshare.net/*.html
  243. // @match http://*.overdream.cz/*
  244. // @match http://*.fastpics.net/?v=*
  245. // @match http://www.ii4.ru/image-*
  246. // @match http://*.picuploader.de/*
  247. // @match http://*.rupict.ru/share*
  248. // @match http://bildr.no/view*
  249. // @match http://www.subeimagenes.com/img*
  250. // @match http://screenshot.ru/*
  251. // @match http://*.hostpix.de/show.php?img*
  252. // @match http://*.freeuploadimages.org/view*
  253. // @match http://smages.com/?v=*
  254. // @match https://*.hostingkartinok.com/show-image.php?id=*
  255. // @match http://*.4put.ru/*max*
  256. // @match http://www.pictureshack.ru/view*
  257. // @match http://*.host99.byethost4.com/share.php?id=*
  258. // @match http://*.eazypics.net/share*
  259. // @match http://xtupload.com/share.php?id=*
  260. // @match http://t.williamgates.net/share*
  261. // @match http://photosex.biz/v.php?id=*
  262. // @match http://*.imageteam.org/img-*
  263. // @match http://*.hostimage.ru/photo*
  264. // @match http://www.loaditup.de/*.html
  265. // @match http://*.imgbox.de/show/img*
  266. // @match http://*.picszone.net/view*
  267. // @match http://*.images.share-films.net/view*
  268. // @match http://www.uploadking.biz/show*
  269. // @match http://foto.xhost.lv/show.php?img=*
  270. // @match http://*.imagefile.org/view*
  271. // @match http://*.onimage.net/show*
  272. // @match http://*.uploadagent.de/show*
  273. // @match http://*.bildjunkies.de/view*
  274. // @match http://*.foto.hcfor.pl/view*
  275. // @match http://*.pic.tooptarinha.com/view*
  276. // @match http://*.poopr.org/view*
  277. // @match http://*.xp-images.hi2.ro/view*
  278. // @match http://*.dayzeddesigns.com/view*
  279. // @match http://*.freeimghosting.co.uk/view*
  280. // @match http://*.123poze.3x.ro/view*
  281. // @match http://*.upload.removed.us/view*
  282. // @match http://*.ximg.co.uk/view*
  283. // @match http://sl-images.ath.cx/view*
  284. // @match http://*.picatom.com/*
  285. // @match http://www.picshare.ru/view*
  286. // @match http://*.pikczery.pl/view*
  287. // @match http://*.imghost.pl/index.php?id=*
  288. // @match http://*.udostepniaj.pl/view*
  289. // @match http://*.hosting-zdjec.pl/view*
  290. // @match http://*.zapisz.net/view*
  291. // @match http://www.imagehosting.cz/?v=*
  292. // @match http://www.dumparump.com/view*
  293. // @match http://*.myxpic.com/showpic*
  294. // @match http://*.picness.com/image/*
  295. // @match http://h4z.it/View*
  296. // @match http://*.freeamateurteens.net/view*
  297. // @match http://*.fotoshack.us/foto*
  298. // @match http://*.image-server.ru/view*
  299. // @match https://*.imagebin.ca/v/*
  300. // @match http://*.loadpix.de/*.html
  301. // @match http://www.public-pic.de/image/show/*
  302. // @match http://*.9foto.ru/photo/*
  303. // @match http://uploads.ru/*
  304. // @match http://*.storepic.com/show*
  305. // @match http://www.myimg.de/?img=*
  306. // @match http://*.root-space.eu/file*
  307. // @match http://*.hot-file.org/p*
  308. // @match http://*.hostarea.de/show*
  309. // @match http://mepic.ru/view/?id=*
  310. // @match http://*.upislam.com/view*
  311. // @match http://*.ngarko.free.fr/view*
  312. // @match http://*.add-screen.com/view*
  313. // @match http://image.siroro.co.uk/p*
  314. // @match http://thaisharing.online.fr/view*
  315. // @match http://*.images.collectiontricks.it/view*
  316. // @match http://*.my-collection.ru/view*
  317. // @match http://img.schattorie.nl/view*
  318. // @match http://*.forexrainbow.com/view*
  319. // @match http://*.imgupload.pl/view*
  320. // @match http://*.1y9y.com/view*
  321. // @match http://*.addpix.net/view*
  322. // @match http://www.myuploadedimages.com/view*
  323. // @match http://multihoster.saxonia-fighter.de/view*
  324. // @match http://knecht.novarata.net/?*
  325. // @match http://*.img.irandeliver.com/?*
  326. // @match http://*.xferz.com/?*
  327. // @match http://*.up.kfesfahan.com/?*
  328. // @match http://*.image.alesher.com/?*
  329. // @match http://upload.khontai.com/?*
  330. // @match http://*.image.pantyhosemania.info/?*
  331. // @match http://*.addyourpics.com/image*
  332. // @match http://*.imgnext.com/img-*
  333. // @match http://*.qattach.com/p*
  334. // @match http://*.host4images.com/view*
  335. // @match http://*.imgbank.cz/*
  336. // @match http://*.nyanimg.com/*
  337. // @match http://*.geekpics.in/*
  338. // @match http://*.imagesloading.altervista.org/?*
  339. // @match http://*.showmyimage.com/*
  340. // @match http://*.phpbbmods.it/immaggini*
  341. // @match http://*.mynameismiz.com/*
  342. // @match http://upload.supreme-elite.fr/?*
  343. // @match http://*.fotohelp.kz/image*
  344. // @match https://*.myimg.me/*
  345. // @match http://*.heberg-hush.org/?*
  346. // @match http://*.oltaciyukle.com/*
  347. // @match http://*.pichost.name/*
  348. // @match *://*.fsfiles.org/flightsimshotsv2/image/*
  349. // @match http://*.imagend.com/*
  350. // @match http://*.imagerocket.com/*
  351. // @match http://*.hyyathost.com/*
  352. // @match http://images.reptilescanada.com/*
  353. // @match http://*.lakhdaria.net/imagebank/?*
  354. // @match http://*.webjardiner.com/hebergement_images_photos/image*
  355. // @match http://*.intergranada.com/images/?*
  356. // @match http://*.partizansk.eu/foto/image*
  357. // @match http://*.xenopix.com/?*
  358. // @match http://*.wepic.ru/*
  359. // @match http://*.imgup.com/images*
  360. // @match http://*.picturepush.com/public*
  361. // @match http://*.upload-image.fr/*
  362. // @match http://*.iezz.com/?*
  363. // @match http://*.fileaimage.com/?*
  364. // @match https://*.images.baconbits.org/?*
  365. // @match http://*.kuvajako.com/*
  366. // @match http://*.upanh.ovo.vn/*
  367. // @match http://*.imagesaur.com/*
  368. // @match http://*.wrzucaj.net/*
  369. // @match http://*.heberge-images.com/?*
  370. // @match http://www.image.kg/*
  371. // @match http://*.picshome.ru/?*
  372. // @match http://*.savemyimage.com/*
  373. // @match http://*.img.dramacafe.tv/*
  374. // @match http://*.hosturimage.com/img-*
  375. // @match http://*.pic-mir.ru/*/*
  376. // @match http://*.244pix.com/view*
  377. // @match http://*.uploadimage.ro/view*
  378. // @match https://*.imgflare.com/*/*
  379. // @match https://www.imagefap.com/photo/*
  380. // @match http://filefap.com/view*
  381. // @match *://*.imgur.com/*
  382. // @exclude *://imgur.com/*,*
  383. // @exclude *://*.imgur.com/*,*
  384. // @exclude *://*.imgur.com/*.gifv
  385. // @match https://motherless.com/*
  386. // @match http://*.xpic.biz/*/view*
  387. // @match https://*.tumblr.com/image/*
  388. // @match https://*.media.tumblr.com/*.*
  389. // @match http://*.imageporter.com/*
  390. // @match http://*.damimage.com/img-*
  391. // @match https://fapping.empornium.sx/image/*
  392. // @match http://*.bulkimg.info/img-*
  393. // @match http://imgboxxx.com/view*
  394. // @match http://*.imghere.net/view*
  395. // @match http://*.sharepic.biz/show-image.php?id=*
  396. // @match http://f-lite.ru/*
  397. // @match http://*.picturescream.com/*
  398. // @match http://*.imgdone.com/view*
  399. // @match https://*.2i.cz/i/*
  400. // @match http://awesomescreenshot.com/*
  401. // @match https://www.flickr.com/photos/*/*/
  402. // @exclude https://www.flickr.com/photos/*/galleries/*
  403. // @exclude https://www.flickr.com/photos/sets/*
  404. // @exclude https://www.flickr.com/photos/tags/*
  405. // @exclude https://www.flickr.com/photos/page*
  406. // @exclude https://www.flickr.com/photos/with*
  407. // @exclude https://www.flickr.com/photos/favorites*
  408. // @match http://www.amateri.cz/g*/*
  409. // @match http://*.imgshow.me/*
  410. // @match *://*.wikipedia.org/wiki/*:*.jp*
  411. // @match *://*.wikipedia.org/wiki/*:*.png
  412. // @match *://*.wikimedia.org/wiki/*:*.jp*
  413. // @match *://*.wikimedia.org/wiki/*:*.pn*
  414. // @match *://*.xxxscreens.com/img-*
  415. // @match http://avenuexxx.com/*-*
  416. // @match http://avenuexxx.com/archives/*/*
  417. // @exclude http://avenuexxx.com/archives/category/*
  418. // @match http://www.bilderhoster.net/*.html
  419. // @match http://*.xxxscreens.com/img-*
  420. // @match http://*.imgdope.com/view*
  421. // @match http://*.imagehost.eu/*
  422. // @match http://*.aveimage.com/view*
  423. // @match *://*.fappic.com/*
  424. // @match http://*.imagenimage.com/*/*
  425. // @match http://*.adultur.com/img-*
  426. // @match http://*.imageshimage.com/*/*
  427. // @match http://*.imgswift.com/*/*
  428. // @match http://*.imageporn.eu/?v=*
  429. // @match https://*.500px.com/photo/*
  430. // @match http://*.greenpiccs.com/images/*.html
  431. // @match http://*.hostmat.eu/view*
  432. // @match http://*.photobucket.com/user/*/media/*.htm*
  433. // @match https://www.imgshots.com/img*
  434. // @match https://www.imgshots.com/show/*
  435. // @match http://*.3xplanet.com/view*
  436. // @match http://*.imgmega.com/*.html
  437. // @match *://img.yt/img-*
  438. // @match http://*.payforpic.ru/*/*/
  439. // @match http://*.keep4u.ru/full/*
  440. // @match http://*.pic.re/*.html
  441. // @match http://*.freshpics.ru/*/*/
  442. // @match http://*.sexyimg.eu/img-*
  443. // @match *://*.imgseeds.com/img-*
  444. // @match http://*.pronpic.org/*/*
  445. // @match https://prnt.sc/*
  446. // @match http://*.imgdream.net/view*
  447. // @match http://*.imgtab.net/*
  448. // @match http://*.kephost.com/image/*
  449. // @match http://i.ruspotting.net/image/*
  450. // @match http://*.gifyu.com/image/*
  451. // @match https://*.picr.ws/image/*
  452. // @match https://www.linkmypic.com/image/*
  453. // @match http://celebimg.com/image/*
  454. // @match http://*.sharepic.org/image/*
  455. // @match http://*.zuly.de/image/*
  456. // @match http://upload.vstanced.com/image/*
  457. // @match http://*.thro.bz/image/*
  458. // @match http://*.qoou.net/image/*
  459. // @match http://brightpic.tk/image/*
  460. // @match http://*.cweb-pix.com/image/*
  461. // @match http://hosting.webspell.fr/image/*
  462. // @match http://*.i-pict.ru/image/*
  463. // @match http://*.images.woh.to/image/*
  464. // @match http://*.imghaze.com/image/*
  465. // @match http://*.imgup.nl/image/*
  466. // @match http://*.kuvapankki.in/image/*
  467. // @match http://*.myimageshare.com/image/*
  468. // @match http://*.nium.co/image/*
  469. // @match http://pix.hostux.net/image/*
  470. // @match http://*.pixoload.de/image/*
  471. // @match http://*.primeimg.co/image/*
  472. // @match http://pic.xtream-reallife.de/image/*
  473. // @match http://*.ultraimg.com/image/*
  474. // @match http://demo.chevereto.com/image/*
  475. // @match *://imgclick.net/*/*
  476. // @match http://*.gogoimage.org/img-*
  477. // @match http://imgmoney.ru/*.html
  478. // @match http://imgmoney.ru/full/
  479. // @match http://*.imglooks.com/img-*
  480. // @match http://*.you-logo.ru/show*
  481. // @match http://*.uploadimagex.com/view*
  482. // @match http://*.powerlogo.ru/show*
  483. // @match http://youpicture.org/?v=*
  484. // @match http://*.all-poster.ru/?v=*
  485. // @match http://*.picbug.ru/share*
  486. // @match http://*.sxpix.nl/img-*
  487. // @match http://*.hotflick.net/u/v/?q=*
  488. // @match http://*.hotflick.net/f/v/?q=*
  489. // @match http://vavvi.com/images/*.html
  490. // @match https://www.deviantart.com/*/art/*
  491. // @match http://*.myceleb.net/u/v/?q=*
  492. // @match http://*.imageblinks.com/img-*
  493. // @match *://*.gelbooru.com/index.php?page=post&s=view&id=*
  494. // @match *://*.youhate.us/index.php?page=post&s=view&id=*
  495. // @match https://danbooru.donmai.us/posts/*
  496. // @match http://konachan.com/post/show/*
  497. // @match http://konachan.net/post/show/*
  498. // @match https://yande.re/post/show/*
  499. // @match https://chan.sankakucomplex.com/*post/show/*
  500. // @match https://yande.re/post/show/*
  501. // @match http://www.zerochan.net/*
  502. // @match https://*.imgrock.pw/*.php
  503. // @match http://imgzap.com/view*
  504. // @match http://*.funimg.net/img*
  505. // @match http://*.olivepix.com/view/*
  506. // @match http://*.ocaload.com/img-*
  507. // @match http://*.imghit.com/img-*
  508. // @match http://*.imageon.org/img-*
  509. // @match http://*.imgcentral.com/view*
  510. // @match http://*.chronos.to/*
  511. // @match http://picspornfree.me/img-*
  512. // @match http://*.pic-you.com/p*
  513. // @match http://*.image-bugs.com/*mage/*
  514. // @match https://*.imgdrive.net/img-*
  515. // @match https://www.pixiv.net/*/artworks/*
  516. // @match http://*.scrin.org/?v=*
  517. // @match http://*.thumbnailus.com/img-*
  518. // @match http://*.nimplus.com/img-*
  519. // @match https://*.imgtaxi.com/img-*
  520. // @match http://*.imgstudio.org/img-*
  521. // @match http://goimge.com/img-*
  522. // @match http://*.safeimage.biz/image/*
  523. // @match http://*.imgbase.online/*/*/
  524. // @match http://*.picpays.ru/*/*/
  525. // @match http://*.imgclover.com/image/*
  526. // @match http://*.imgz.pw/share-*
  527. // @match http://*.imgz.pw/ch/image/*
  528. // @match *://*.imgking.co/img*
  529. // @match http://ask.fm/*/photo/original
  530. // @match http://*.newimagepost.com/img-*
  531. // @match http://*.imageho.me/img-*
  532. // @match http://myimg.club/*
  533. // @match http://*.imgease.re/img-*
  534. // @match https://www.hotimage.uk/*mg-*
  535. // @match *://imgview.pw/*.php
  536. // @match http://*.10.imageleon.com/i-*
  537. // @match https://www.dropbox.com/s/*/*
  538. // @match http://imgor.net/img-*
  539. // @match http://*.imagedax.net/*/*.html
  540. // @match https://*.imgmonkey.com/*/*.html
  541. // @match http://*.fapat.me/img-*
  542. // @match http://photo.weibo.com/*/large/photo_id/*
  543. // @match http://*.crazyimg.com/images/*.html
  544. // @match http://imgbe.com/img-*
  545. // @match https://*.imgextra.uk/image/*
  546. // @match http://*.extraimago.com/image/*
  547. // @match http://*.fireimg.cc/img-*
  548. // @match http://www.pornimagex.com/image/*
  549. // @match http://*.imgboom.net/*
  550. // @match http://*.img24.org/*.html
  551. // @match http://*.img24.org/full/
  552. // @match http://*.pic-maniac.com/*
  553. // @match https://*.instagram.com/p/*
  554. // @exclude https://instagram.com/p/*/embed/*
  555. // @exclude https://*.instagram.com/p/*/embed/*
  556. // @match http://*.imgsay.com/?v=*
  557. // @match http://*.imgsmile.com/?v=*
  558. // @match http://*.balkanelite.org/MultiHoster/view*
  559. // @match https://twitter.com/*/photo/*
  560. // @match https://twitter.com/*/status/*
  561. // @match http://*.icezap.com/img-*
  562. // @match *://*.rapidimg.net/img-*
  563. // @match http://foxyimg.link/*
  564. // @match http://*.imgtornado.com/img-*
  565. // @match http://*.daily-img.com/image/*
  566. // @match http://*.imageab.com/image/*
  567. // @match http://*.erimge.com/img-*
  568. // @match http://*.imgtrial.com/img-*
  569. // @match https://imgtown.net/*.php
  570. // @match http://ameblo.jp/*/image-*
  571. // @match http://*.loftlm.ru/img-*
  572. // @match http://*.imgdragon.com/*/*.html
  573. // @match http://ftop.ru/*/*
  574. // @match http://*.imgurx.net/share*
  575. // @match http://savepic.ru/*.htm
  576. // @match http://*.imgmaid.net/*
  577. // @match http://*.imggold.org/*/*.html
  578. // @match http://*.imgcredit.xyz/img-*
  579. // @match http://*.imgcredit.xyz/p/img-*
  580. // @match http://*.imgcredit.xyz/image/*
  581. // @match http://*.dimtus.com/img-*
  582. // @match http://*.coreimg.net/*
  583. // @match http://sfwimg.com/image/*
  584. // @match http://*.imgtiger.org/*/*
  585. // @match http://*.img3x.com/image/*
  586. // @match http://*.imguniversal.com/*
  587. // @match http://*.imagepearl.com/view/*
  588. // @match http://*.imagepearl.com/verify/*
  589. // @match http://*.tinizo.com/img-*
  590. // @match *://*.imgkings.com/img*
  591. // @match http://*.imagerar.com/img*
  592. // @match http://*.sendpic.org/view/*
  593. // @match *://www.porncomix.info/*/*/
  594. // @exclude *://www.porncomix.info/gallery/*
  595. // @exclude *://www.porncomix.info/artist/*
  596. // @match *://*.picclock.ru/*/*/
  597. // @match http://*.svetmonet.ru/*.html
  598. // @match http://*.svetmonet.ru/full/
  599. // @match http://*.imgpix.net/*
  600. // @match https://*.imgzulu.com/img-*
  601. // @match http://*.freeimagehostin.com/img-*
  602. // @match http://www.mixbase.net/gallery/image.*
  603. // @match https://www.adultimages.xyz/*/image*.html
  604. // @match http://*.pic4share.ru/*.html
  605. // @match http://*.pic4share.ru/full/
  606. // @match http://*.sximg.nl/img-*
  607. // @match http://*.0img.net/?v=*
  608. // @match https://ss.movierls.net/image/*
  609. // @match http://www.xxximagetpb.org/image/*
  610. // @match http://www.pixsense.net/site/v/*
  611. // @match http://www.imgsky.net/*
  612. // @match http://www.imagespicy.site/site/v/*
  613. // @match https://imgoutlet.pw/*.php
  614. // @match http://*.pix.ac/image/*
  615. // @match *://*.imgmak.com/image/*
  616. // @match http://*.freephotohostin.com/img-*
  617. // @match http://*.imgcat.pw/img-*
  618. // @match http://*.levinpic.org/*.html
  619. // @match https://www.sparrowpics.com/image/*
  620. // @match http://*.imgmax.com/image/*
  621. // @match http://lostpix.com/?v=*
  622. // @match https://extraimago.com/image/*
  623. // @match http://*.imgroute.com/?v=*
  624. // @match http://www.joblo.com/hollywood-celebrities/hottie-profile/*/image-gallery/*.jpg
  625. // @match *://extraimage.net/image/
  626. // @match *://www.bellazon.com/main/attachment/*
  627. // @match *://extraimage.net/image/*
  628. // @match https://www.artstation.com/artwork/*
  629. // @match http://bcy.net/illust/detail/*
  630. // @match http://*.imgpics.nl/img-*
  631. // @match http://*.imagexxx18.com/image/*
  632. // @match http://*.imagepics.xyz/img-*
  633. // @match *://*.imagesouls.net/img*
  634. // @match *://postto.me/*
  635. // @match http://*.imgskull.xyz/image/*
  636. // @match http://*.imgskull.com/image/*
  637. // @match *://*.ninjaimages.com/*.html
  638. // @match *://*.imgprime.com/img*
  639. // @match *://*.imgmaze.pw/*.php
  640. // @match *://*.piccash.net/*/*/
  641. // @exclude *://piccash.net/cabinets/*
  642. // @exclude *://www.piccash.net/cabinets/*
  643. // @match http://imgwo.com/img-*
  644. // @match http://luxpic.ru/images/*.html
  645. // @match http://*.pic-images.ru/full/
  646. // @match http://*.pic-images.ru/*.html
  647. // @match http://*.imgbun.ru/full/
  648. // @match http://*.imgbun.ru/*.html
  649. // @match http://*.imgspic.ru/full/
  650. // @match http://*.imgspic.ru/*.html
  651. // @match http://imgleveret.com/img-*
  652. // @match http://porn84.org/img-*
  653. // @match http://*.jpgstore.ru/full/
  654. // @match http://*.jpgstore.ru/*.html
  655. // @match https://*.ima.gy/i/*
  656. // @match http://moonpix.ru/full/
  657. // @match http://moonpix.ru/*.html
  658. // @match http://*.0img.ws/*
  659. // @match http://picpower.ru/full/
  660. // @match http://picpower.ru/*.html
  661. // @match http://piccloud.ru/full/
  662. // @match http://piccloud.ru/*.html
  663. // @match http://imgbase.ru/*/*/
  664. // @match http://*.sexybabepics.net/img-*.html
  665. // @match http://*.sexybabepics.net/x/image/*
  666. // @match http://*.imagecrest.com/verify/*
  667. // @match http://*.imagecrest.com/view/*
  668. // @match https://*.picz.site/img-*.html
  669. // @match http://*.allxpix.com/img-*.html
  670. // @match http://pixxss.ru/full/
  671. // @match http://pixxss.ru/*.html
  672. // @match http://pixxsees.ru/full/
  673. // @match http://pixxsees.ru/*.html
  674. // @match http://imgblank.com/img-*.html
  675. // @match http://imgtrex.com/*/*
  676. // @match https://imgwallet.com/img-*.html
  677. // @match http://2picsun.ru/full/
  678. // @match http://2picsun.ru/*.html
  679. // @match http://picpie.org/image/*
  680. // @match *://*.xeimg.yt/img-*.html
  681. // @match *://*.imagedisco.net/?v=*
  682. // @match http://*.imgmain.com/img-*.html
  683. // @match http://*.imgvisits.com/*
  684. // @match *://pixxxels.org/image/*
  685. // @match http://img-pika.ru/full/
  686. // @match http://img-pika.ru/*.html
  687. // @match http://pic2x.ru/full/
  688. // @match http://pic2x.ru/*.html
  689. // @match http://imgcach.ru/*/*/
  690. // @match http://*.2pixxsee.ru/*.html
  691. // @match http://*.2pixxsee.ru/full/
  692. // @match https://*.xhamster4.com/photos/gallery/*/*
  693. // @match https://*.xhamster3.com/photos/gallery/*/*
  694. // @match https://*.xhamster.com/photos/gallery/*/*
  695. // @match https://*.xhamster.desi/photos/gallery/*/*
  696. // @exclude /^https://(.*\.)?xhamster3?\.(com|desi)/photos/gallery/.*/\d{1,3}$/
  697. // @match http://*.imghall.com/?v=*
  698. // @match https://*.acidimg.cc/img-*
  699. // @match https://imgcloud.pw/image/*
  700. // @match https://z4a.net/image/*
  701. // @match https://t.hogor.net/?pm=*
  702. // @match http://1pic2x.ru/*.html
  703. // @match http://1pic2x.ru/full/
  704. // @match http://1pics1img.ru/*.html
  705. // @match http://1pics1img.ru/full/
  706. // @match http://xxxwebdlxxx.org/*.html
  707. // @match https://www.sizzlingclicks.com/image/*
  708. // @match http://wwxxww.ru/*.html
  709. // @match http://wwxxww.ru/full/
  710. // @match http://pikoclick.ru/*/*/
  711. // @match http://passpix.com/images/*
  712. // @match http://*.sexyimg.eu/*/*.html
  713. // @match http://*.imgseed.com/img-*.html
  714. // @match http://img.folluo.me/image/*
  715. // @match *://imgpart.com/img-*
  716. // @match https://picstate.com/view/full/*
  717. // @match https://jerking.empornium.ph/image/*
  718. // @match http://p0xpicmoney.ru/*/*/
  719. // @match http://picker-click.ru/*/*/
  720. // @match https://truepic.org/*
  721. // @match https://www.jiopic.com/image/*
  722. // @match https://imx.to/img-*
  723. // @match https://imx.to/i/*
  724. // @match https://pixxxels.cc/*
  725. // @match http://picpic.online/*/*/
  726. // @match http://imgking.xyz/*.html
  727. // @match http://moreimage.pw/image/*
  728. // @match https://imgsha.com/i/*
  729. // @match https://www.pic-upload.de/view-*/*.html
  730. // @match http://pic3you.org/*.html
  731. // @match http://pic3you.org/full/
  732. // @match *://*.vipix.pw/images/*.html
  733. // @match http://*.imgchilibum.ru/v.php?id=*
  734. // @match https://*.imgazure.com/*.html
  735. // @match https://*.imgazure.com/full/
  736. // @match *://*.dpic.me/*
  737. // @match *://*.picmoza.com//img-*.html
  738. // @match *://suckmypic.net/*
  739. // @match *://pic.hotimg.site/img-*.html
  740. // @match http://*.shaggyimg.pro/*.html
  741. // @match http://*.shaggyimg.pro/full/
  742. // @match http://*.imgjazz.com/img-*.html
  743. // @match https://22pixx.xyz/i*-*/*.html
  744. // @match https://22pixx.xyz/i-*/*.html
  745. // @match https://22pixx.xyz/x-*/*.html
  746. // @match *://trueimg.xyz/u-*/*.html
  747. // @match *://imgsmarts.info/*.html
  748. // @match *://imgsmarts.info/full/
  749. // @match *://www.keepimg.com/image/*
  750. // @match https://ibb.co/*
  751. // @match http://*.imgsee.net/*
  752. // @match *://*.picbaron.com/*/*.html
  753. // @match *://*.imgbaron.com/*/*
  754. // @match https://kvador.com/*/*.html
  755. // @match http://picshost.info//img-*.html
  756. // @match *://imagescanner.cc/images/*.html
  757. // @match http://batpic.com/image/*
  758. // @match http://*.1pic.org/view/*.html
  759. // @match *://lookimg.com/image/*
  760. // @match http://*.xfap.fun/img-*.html
  761. // @match *://*.hdmoza.com//img-*.html
  762. // @match *://trans.firm.in/images/*.html
  763. // @match http://*.imgtorrnt.in/view.php?id=*
  764. // @match https://*.dailyimages.xyz/*.html
  765. // @match https://*.dailyimages.xyz/full/
  766. // @match http://*.petrovixxxjav.com//img-*.html
  767. // @match *://*.placeimg.net/img-*.html
  768. // @match https://subefotos.com/ver/?*
  769. // @match http://*.imageshtorm.com/img-*.html
  770. // @match https://*.blameless.work/img-*.html
  771. // @match https://trumbhost.com/images/*.html
  772. // @match http://*.xxx.kodiak.top/img-*.html
  773. // @match *://*.your-pictures.net/p*/*.html
  774. // @match https://*.xaoutchouc.live/img-*.html
  775. // @match https://*.picusha.net/?v=*
  776. // @match https://e621.net/posts/*
  777. // @match https://rule34.xxx/index.php?page=post&s=view&id=*
  778. // @match https://rule34hentai.net/post/view/*
  779. // @match https://pixs.cx/*
  780. // @match *://mshelxxx.ru.com//img-*.html
  781. // @match *://www.hentai-foundry.com/pictures/*
  782. // @exclude *://www.hentai-foundry.com/pictures/user/*/page/*
  783. // @match *://imgcredit.xyz/image/*
  784. // @match https://imgdew.pw/*.php
  785. // @match *://drlink.online/*/*/
  786. // @match https://savepice.ru/full/*.html
  787. // @match https://kropic.com/*/*.html
  788. // @match http://*.imgzong.xyz/*
  789. // @match https://www.furaffinity.net/view/*/
  790. // @match http://imageking.xyz/*
  791. // @match http://imgxx.xyz/*
  792. // @match http://imgao.xyz/*
  793. // @match http://imgweng.xyz/*
  794. // @match https://*.imgsto.com/*/*.html
  795. // @match https://*.pics4you.net/*/*.html
  796. // @match https://vipr.im/*
  797. // ==/UserScript==
  798.  
  799. "use strict";
  800.  
  801. if (typeof unsafeWindow === "undefined")
  802. {
  803. unsafeWindow = window;
  804. }
  805.  
  806. if (typeof GM_registerMenuCommand !== "undefined")
  807. {
  808. GM_registerMenuCommand("Handy Image Configuration", cfg, "C");
  809. }
  810.  
  811. if(window.location.href.lastIndexOf(window.location.hostname) + window.location.hostname.length + 1 == window.location.href.length)
  812. {
  813. console.warn("we are on website's main page, aren't we?");
  814. return false;
  815. }
  816. if (document.images.length == 1 && document.images[0].src == window.location.href)
  817. {
  818. console.warn("handy isn't needed for directly opened images");
  819. return false;
  820. }
  821. if(document.referrer)
  822. {
  823. if(document.referrer.lastIndexOf(window.location.hostname) != -1 && document.referrer.lastIndexOf(window.location.hostname) +1 == document.referrer.length - window.location.hostname.length)
  824. {
  825. console.warn("you have just uploaded a picture, haven't you?");
  826. return false;
  827. }
  828. }
  829. if(document.cookie.indexOf("hji=") != -1)
  830. {
  831. if(document.cookie.indexOf("hji=" + window.location.href) != -1)
  832. {
  833. console.warn("you just don't want the script to run now, do you?");
  834. document.cookie = "hji=; expires=Thu, 01 Jan 1970 00:00:01 GMT;";
  835. return false;
  836. }
  837. else if(document.cookie.indexOf("backhji=") != -1)
  838. {
  839. console.warn("you have found a time machine, now you are traveling back in history");
  840. window.history.go(-1);
  841. document.cookie = "hji=; expires=Thu, 01 Jan 1970 00:00:01 GMT;";
  842. return false;
  843. }
  844. console.warn("found a weird cookie, let's eat it");
  845. document.cookie = "hji=; expires=Thu, 01 Jan 1970 00:00:01 GMT;"; // stealth mode
  846. }
  847. //else{ console.warn("no hji cookie found");}
  848.  
  849. function q(s){if(document.body){return document.body.querySelector(s);}return null;}
  850. var cfg_direct = false;
  851. var cfg_bgclr ="grey";
  852. var cfg_fitWH = true;
  853. var cfg_fitB = false;
  854. var cfg_fitS = true;
  855. var cfg_js;
  856. var dp = false;
  857. var rescaled = false;
  858. var tb;
  859. var timeout = 1000;
  860. var FireFox = ((navigator.userAgent.indexOf('Firefox') != -1) ? true : false);
  861. var i;
  862. var j;
  863. var ext_list = ['webm', 'mp4', 'ogg', 'zip', '7z', 'rar', 'psd', 'swf', 'doc', 'rtf', 'pdf'];
  864. var iurl = window.location.hostname;
  865. if(!iurl.indexOf("www."))
  866. {
  867. iurl = iurl.substr(4);
  868. }
  869. var host = iurl;
  870. if(window.location.pathname.indexOf("//") == 0)
  871. {
  872. iurl += "/";
  873. }
  874.  
  875. function ws()
  876. {
  877. if(!FireFox) // NOT firefox
  878. {
  879. window.stop();
  880. }
  881. }
  882.  
  883. function sanitize() // lol I'm such a hacker
  884. {
  885. unsafeWindow.document.createElement = unsafeWindow.console.log;
  886. let lasttask = setTimeout(function() {},0);
  887. for(let n = lasttask; n > 0; n--)
  888. {
  889. clearTimeout(n);
  890. }
  891. removeAllListeners();
  892. }
  893.  
  894. const protected_createElement = document.createElement.bind(document);
  895.  
  896. var _eventHandlers = {};
  897. var origAdd = document.addEventListener;
  898.  
  899. function protected_addEventListener (event, handler, capture = false)
  900. {
  901. //console.error(event);
  902. if (!(event in _eventHandlers)) {
  903. _eventHandlers[event] = [];
  904. }
  905. _eventHandlers[event].push({ node: this || window, handler: handler, capture: capture });
  906. return origAdd.call(this, event, handler, capture);
  907. }
  908.  
  909. function removeAllListeners ()
  910. {
  911. //console.warn(_eventHandlers);
  912. for(let event in _eventHandlers)
  913. {
  914. _eventHandlers[event].forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture));
  915. delete _eventHandlers[event];
  916. }
  917. }
  918.  
  919. function onVisibilityChange()
  920. {
  921. if (document.visibilityState === 'visible')
  922. {
  923. if(i)
  924. {
  925. autoresize();
  926. document.removeEventListener('visibilitychange', onVisibilityChange);
  927. }
  928. }
  929. }
  930. document.addEventListener("visibilitychange", onVisibilityChange);
  931.  
  932. unsafeWindow.addEventListener = protected_addEventListener;
  933. unsafeWindow.document.addEventListener = protected_addEventListener;
  934.  
  935. function DeleteAllCookies()
  936. {
  937. document.cookie.split(";").forEach(function(c) {
  938. document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/");
  939. });
  940. }
  941.  
  942. function onscript(e)
  943. {
  944. //console.warn( "STOPPED: " + e.target.src + e.target.innerHTML);
  945. e.preventDefault();
  946. e.stopPropagation();
  947. }
  948.  
  949. function onbeforeunload() // back helper
  950. {
  951. //console.warn("setting hji cookie before unloading page");
  952. let now = new Date();
  953. let time = now.getTime();
  954. time += 2000; // 2 sec to help quit double-pages
  955. now.setTime(time);
  956. now.toGMTString();
  957. document.cookie = 'backhji=; expires=' + now.toGMTString() + '; path=/';
  958. }
  959.  
  960. function makeimage()
  961. {
  962. if(typeof cfg_js !== "string") {setTimeout(function() { makeimage(); }, 11); return false;} // lets wait for stupd async
  963. if(cfg_direct === true){unsafeWindow.location.href = i.src;return false;}
  964. if(cfg_bgclr){document.body.bgColor = cfg_bgclr;}
  965. document.body.style.margin = "0px";
  966. document.body.innerHTML = "<style>img { position: absolute; top: 0; right: 0; bottom: 0; left: 0; image-orientation: from-image; }</style>"; // center image
  967. ws();
  968. let isrc = i.src;
  969. i = protected_createElement("img");
  970. i.src = isrc;
  971. i.style.margin = "auto"; // center image
  972. document.body.appendChild(i);
  973. i.addEventListener("click", rescale, true);
  974. window.addEventListener("keydown", onkeydown, true);
  975. if(dp){console.warn("you are on a double-page image hosting (probably)");window.addEventListener("beforeunload", onbeforeunload, true);}
  976. onVisibilityChange();
  977. }
  978.  
  979. function find_text_in_scripts(text, stopword, start_from_top, search_after_word)
  980. {
  981. let s = document.getElementsByTagName("script");
  982. for(let c=0;c<s.length;c++)
  983. {
  984. if(search_after_word && s[c].innerHTML.indexOf(search_after_word) != -1){s[c].innerHTML = s[c].innerHTML.substring(0, s[c].innerHTML.indexOf(search_after_word));}
  985. let start_pos = start_from_top ? s[c].innerHTML.indexOf(text) : s[c].innerHTML.lastIndexOf(text);
  986. if(start_pos == -1){continue;}
  987. start_pos += text.length;
  988. i = protected_createElement("img");
  989. i.src = decodeURIComponent(s[c].innerHTML.substring(start_pos,s[c].innerHTML.indexOf(stopword,start_pos)).split("\\").join("")); // split\join fix for stupidfox GreaseMonkey
  990. return true;
  991. }
  992. return false;
  993. }
  994.  
  995. function post(path, params, method)
  996. {
  997. method = method || "post";
  998. let form = protected_createElement("form");
  999. form.setAttribute("method", method);
  1000. form.setAttribute("action", path);
  1001. for(let key in params)
  1002. {
  1003. if(params.hasOwnProperty(key))
  1004. {
  1005. let hiddenField = protected_createElement("input");
  1006. hiddenField.setAttribute("type", "hidden");
  1007. hiddenField.setAttribute("name", key);
  1008. hiddenField.setAttribute("value", params[key]);
  1009.  
  1010. form.appendChild(hiddenField);
  1011. }
  1012. }
  1013. document.body.appendChild(form);
  1014. form.submit();
  1015. }
  1016.  
  1017. function makeworld()
  1018. {
  1019. let f;
  1020. if(i){return;}
  1021. // per-host image detection
  1022. switch (host)
  1023. {
  1024. case "gist.github.com":
  1025. if(document.body){i=1;cfg();}break;
  1026. case "simplest-image-hosting.net":
  1027. case "hostimage.ru":
  1028. case "imgchili.net":
  1029. case "adultimages.xyz":
  1030. i = q('img');
  1031. break;
  1032. case "myceleb.net":
  1033. case "depic.me":
  1034. case "dpic.me":
  1035. i = q('img#pic');
  1036. break;
  1037. case "imagebin.ca":
  1038. i = q('a img');
  1039. if(i){i.src = i.parentNode.href;}
  1040. break;
  1041. case "savepic.org":
  1042. case "savepic.ru":
  1043. i = q('a img:not([src*="/images/"])');
  1044. break;
  1045. case "motherless.com":
  1046. j = true;
  1047. i = q('div#media-media div a img');
  1048. break;
  1049. case "awesomescreenshot.com":
  1050. i = q('img#screenshot');
  1051. break;
  1052. case "dropbox.com":
  1053. j = true;
  1054. i = q('img.preview-image');
  1055. if(i)
  1056. {
  1057. i.src = i.src.replace(/(size_mode)=\d+/, '$1=5');
  1058. }
  1059. break;
  1060. case "img.3ezy.net":
  1061. case "image-bugs.com":
  1062. case "imgclover.com":
  1063. case "demo.chevereto.com":
  1064. case "daily-img.com":
  1065. case "celebimg.com":
  1066. case "sfwimg.com":
  1067. case "img3x.com":
  1068. case "imgskull.xyz":
  1069. case "imgskull.com":
  1070. case "2i.sk":
  1071. case "2i.cz":
  1072. case "deffe.com":
  1073. case "imagik.fr":
  1074. case "gallerycloud.net":
  1075. case "tryimg.com":
  1076. case "fsfiles.org":
  1077. case "picpicture.com":
  1078. case "picpie.org":
  1079. case "lostpic.net":
  1080. case "batpic.com":
  1081. //chevereto 3.x
  1082. i = document.head.querySelector('link[rel="image_src"]');
  1083. if(i)
  1084. {
  1085. i.src = i.href;
  1086. i.src = i.src.replace('_800.', '.'); //img.3ezy.net
  1087. }
  1088. break;
  1089. case "imagebam.com":
  1090. ext_list = [];
  1091. case "directupload.net":
  1092. case "bilderhoster.net":
  1093. case "noelshack.com":
  1094. case "kephost.com":
  1095. case "i.ruspotting.net":
  1096. case "gifyu.com":
  1097. case "picr.ws":
  1098. case "linkmypic.com":
  1099. case "sharepic.org":
  1100. case "zuly.de":
  1101. case "upload.vstanced.com":
  1102. case "thro.bz":
  1103. case "qoou.net":
  1104. case "brightpic.tk":
  1105. case "cweb-pix.com":
  1106. case "hosting.webspell.fr":
  1107. case "i-pict.ru":
  1108. case "images.woh.to":
  1109. case "imghaze.com":
  1110. case "imgup.nl":
  1111. case "kuvapankki.in":
  1112. case "myimageshare.com":
  1113. case "nium.co":
  1114. case "pix.hostux.net":
  1115. case "pixoload.de":
  1116. case "primeimg.co":
  1117. case "pic.xtream-reallife.de":
  1118. case "ultraimg.com":
  1119. case "safeimage.biz":
  1120. case "imgextra.uk":
  1121. case "ss.movierls.net":
  1122. case "xxximagetpb.org":
  1123. case "pix.ac":
  1124. case "sparrowpics.com":
  1125. case "prnt.sc":
  1126. case "imgmax.com":
  1127. case "extraimago.com":
  1128. case "extraimage.net":
  1129. case "imgcloud.pw":
  1130. case "z4a.net":
  1131. case "jiopic.com":
  1132. case "wwv.imgcredit.xyz":
  1133. case "moreimage.pw":
  1134. case "lookimg.com":
  1135. case "subefotos.com":
  1136. case "rule34.xxx":
  1137. case "imgcredit.xyz":
  1138. i = document.querySelector('meta[property="og:image"], [name="og:image"]');
  1139. if(i)
  1140. {
  1141. i.src = i.content;
  1142. }
  1143. else
  1144. {
  1145. i = q('a[download]');
  1146. if(i){i.src = i.href;}
  1147. }
  1148. break;
  1149. case "twitter.com":
  1150. j = true;
  1151. i = document.querySelector('meta[property="og:video:url"]');
  1152. if(!i)
  1153. {
  1154. i = q('img[src*="twimg.com/media/"]');
  1155. if(i)
  1156. {
  1157. i.src = i.src.substring(0, i.src.indexOf("&name=")) + '&name=orig';
  1158. }
  1159. }
  1160. break;
  1161. case "m.imgur.com":
  1162. j = true;
  1163. i = q('img.Image');
  1164. break;
  1165. case "imgur.com":
  1166. j = true;
  1167. i = document.head.querySelector('meta[property="og:image"]');
  1168. if(i)
  1169. {
  1170. f = document.head.querySelector('meta[property="og:url"]');
  1171. let v = document.head.querySelector('meta[property="og:video"]');
  1172. if((f && (f.content.indexOf("/a/") != -1 || f.content.indexOf("/gallery/") != -1) ) || i.content.indexOf("/images/logo") != -1)
  1173. {
  1174. return;
  1175. }
  1176. else if(v)
  1177. {
  1178. i.src = v.content.replace('.mp4', '.gif');
  1179. }
  1180. else
  1181. {
  1182. i.src = i.content;i.src = i.src.split('?')[0];
  1183. }
  1184. }
  1185. break;
  1186. case "ameblo.jp":
  1187. j = true;
  1188. i = q('img#imgItem');
  1189. break;
  1190. case "instagram.com":
  1191. j = true;
  1192. if(find_text_in_scripts('"shortcode_media":{"__typename":"GraphImage"', '"', false))
  1193. {
  1194. //find_text_in_scripts('"display_url":"', '"');
  1195. i = q('img[decoding]');
  1196. }
  1197. break;
  1198. case "flickr.com":
  1199. case "secure.flickr.com":
  1200. find_text_in_scripts('"displayUrl":"', '"', false, '"canComment"');
  1201. break;
  1202. case "artstation.com":
  1203. j = true;
  1204. if(document.querySelectorAll("div.artwork").length == 1)
  1205. {
  1206. i = q('a[href*="&dl="]');
  1207. if(i)
  1208. {
  1209. i.src = i.href;
  1210. }
  1211. }
  1212. break;
  1213. case "pixiv.net":
  1214. j = true;
  1215. if(!q('div[aria-label="Preview"]'))
  1216. {
  1217. i = q('a[href*="/img-original/"]');
  1218. if(i)
  1219. {
  1220. i.src = i.href;
  1221. }
  1222. }
  1223. else
  1224. {
  1225. console.warn("Manga page with multiple images, no action taken further");
  1226. return;
  1227. }
  1228. break;
  1229. case "chan.sankakucomplex.com":
  1230. i = q('a[itemprop="contentUrl"]');
  1231. if(i)
  1232. {
  1233. i.src = i.href;
  1234. }
  1235. break;
  1236. case "bcy.net":
  1237. f = document.querySelectorAll("img.detail_clickable");
  1238. if(f.length == 1)
  1239. {
  1240. i = f[0];
  1241. i.src = f[0].src.replace('/w650', '');
  1242. }
  1243. break;
  1244. case "imageshack.com":
  1245. i = q('input[value*="' + iurl + '/f/"]');
  1246. if(i){window.location.href = i.value.replace('/f/', '/i/');}
  1247. i = q('img[data-width]');
  1248. break;
  1249. case "22pixx.xyz":
  1250. case "trueimg.xyz":
  1251. f = window.location.href.match(/[a-z]+-([a-z].+(?:\.jpe?g|png|gif|webp))/i);
  1252. if(f)
  1253. {
  1254. i = {src : window.location.origin + "/" + f[1]};
  1255. }
  1256. break;
  1257. case "h4z.it":
  1258. i = document.images[2];
  1259. if(i){i.src = i.parentNode.href;}
  1260. break;
  1261. case "thumbsnap.com":
  1262. i = q('img#thepic');
  1263. if(i && i.parentNode.href){i.src = i.src.replace('/s/', '/i/');}
  1264. break;
  1265. case "imgbox.com":
  1266. case "imageupper.com":
  1267. case "hotflick.net":
  1268. case "upix.me":
  1269. i = q('img#img');
  1270. if(!i && window.location.hash) // upix.me
  1271. {
  1272. i = q('a');
  1273. i.src = window.location.href.replace("#","");
  1274. }
  1275. break;
  1276. case "imagesnake.com":
  1277. case "imagesnake.org":
  1278. case "freebunker.com":
  1279. case "imagefruit.com":
  1280. case "imagestime.com":
  1281. case "imgcarry.com":
  1282. case "pornbus.org":
  1283. case "fotoo.pl":
  1284. case "hostpix.de":
  1285. case "uploadking.biz":
  1286. case "foto.xhost.lv":
  1287. case "onimage.net":
  1288. case "storepic.com":
  1289. case "hostarea.de":
  1290. case "imgshots.com":
  1291. i = q('img#img_obj');
  1292. break;
  1293. case "abload.de":
  1294. i = document.body.querySelectorAll('img#image');
  1295. if(i)
  1296. {
  1297. i = i[i.length-1];
  1298. }
  1299. break;
  1300. case "imagecrest.com":
  1301. case "imagepearl.com":
  1302. i = q('#verify2');
  1303. if(i)
  1304. {
  1305. let w = screen.width;
  1306. let h = screen.height;
  1307. let u = q('#i').value;
  1308. let r = q('#r').value;
  1309. let xhttp = new XMLHttpRequest();
  1310. xhttp.onreadystatechange = function() {
  1311. if (xhttp.readyState == 4 && xhttp.status == 200) {
  1312. location.reload();
  1313. }
  1314. };
  1315. xhttp.open("GET", "verify.php?w=" + w + "&h=" + h + "&i=" + u + "&r=" + r + "", false);
  1316. xhttp.send();
  1317. break;
  1318. }
  1319. i = q('img#image');
  1320. break;
  1321. case "fastpic.ru":
  1322. i = q('img[src*="/big/"]');
  1323. break;
  1324. case "bayimg.com":
  1325. i = q('img#mainImage');
  1326. break;
  1327. case "imageban.ru":
  1328. case "imageban.net":
  1329. i = q('img[src*="' + iurl + '/out/"]');
  1330. break;
  1331. case "xup.in":
  1332. i = q('img[src*="/exec/"]');
  1333. break;
  1334. case "jpegbay.com":
  1335. i = q('a[class]');
  1336. if(i){i.src = i.href;}
  1337. break;
  1338. case "keep4u.ru":
  1339. i = q('img[src*="/b/"]');
  1340. break;
  1341. case "euro-pic.eu":
  1342. case "picfox.org":
  1343. case "freeimage.us":
  1344. case "xxx.freeimage.us":
  1345. case "pixsor.com":
  1346. case "img.pereslavl.ru":
  1347. case "rupict.ru":
  1348. case "host99.byethost4.com":
  1349. case "eazypics.net":
  1350. case "xtupload.com":
  1351. case "t.williamgates.net":
  1352. case "imgz.pw":
  1353. case "imgurx.net":
  1354. //i = q('img#iimg');
  1355. if(!find_text_in_scripts("<img src='", "'"))
  1356. {
  1357. i = q('a[download]'); // imgz.pw
  1358. if(i){i.src = i.href;}
  1359. }
  1360. break;
  1361. case "amateri.cz":
  1362. if(find_text_in_scripts('var orig_url="', '"'))
  1363. {
  1364. i.src = i.src.replace('http://www.amateri.cz/orig.php?&img=', 'http://img2.amateri.cz/users/');
  1365. }
  1366. break;
  1367. case "pixsense.net":
  1368. case "imagespicy.site":
  1369. find_text_in_scripts('"src","', '"');
  1370. break;
  1371. case "pix-x.net":
  1372. case "picclock.ru":
  1373. case "imgcach.ru":
  1374. case "pikoclick.ru":
  1375. case "p0xpicmoney.ru":
  1376. case "picker-click.ru":
  1377. case "picpic.online":
  1378. case "drlink.online":
  1379. i = q('img[onclick*="mshow"]');
  1380. if(i){i.src = i.src.replace('-thumb', '');i.src = i.src.replace('img_thumb', 'img_full');}
  1381. break;
  1382. case "pics-money.ru":
  1383. i = q('img[src*="/full/"]');if(i){break;}
  1384. case "pic5you.ru":
  1385. case "pic4you.ru":
  1386. case "picforall.ru":
  1387. case "picage.ru":
  1388. case "images-host.biz":
  1389. case "pic-mir.ru":
  1390. case "payforpic.ru":
  1391. case "freshpics.ru":
  1392. case "imgbase.online":
  1393. case "picpays.ru":
  1394. case "piccash.net":
  1395. case "imgbase.ru":
  1396. i = q('img[src*="thumb"]');
  1397. if(i){i.src = i.src.replace('-thumb', '');i.src = i.src.replace('img_thumb', 'img_full');i.src = i.src.replace('_thumb', '');}
  1398. break;
  1399. case "tinypic.com":
  1400. i = q('img#imgElement');
  1401. break;
  1402. case "picshot.pl":
  1403. i = q('img[src*="' + iurl + '/p"]');
  1404. if(i){i.src = i.src.replace('thumb', 'file');}
  1405. break;
  1406. case "sharenxs.com":
  1407. i = q('img.view_photo');
  1408. if(i){i.src = i.src.replace('/thumbnails/', '/images/');
  1409. i.src = i.src.replace('/tn-', '/');
  1410. i.src = i.src.replace('/mid/', '/wz/');
  1411. f = q('div.alert.alert-info.nomargin.photo_name span');
  1412. if(f)
  1413. {
  1414. let url = i.src;
  1415. i.src = url.substring(0,url.lastIndexOf('/')+1) + f.textContent + url.substring(url.lastIndexOf('.'));
  1416. }}
  1417. break;
  1418. case "radikal.ru":
  1419. case "radical-foto.ru":
  1420. case "radikal-foto.ru":
  1421. case "f-page.ru":
  1422. case "f-lite.ru":
  1423. case "f-picture.net":
  1424. find_text_in_scripts('"Url":"', '"');
  1425. break;
  1426. case "jerking.empornium.ph":
  1427. find_text_in_scripts(' url: "', '"', true);
  1428. break;
  1429. case "bilder-space.de":
  1430. case "imagesup.de":
  1431. i = q('img.picture');
  1432. break;
  1433. case "pix.toile-libre.org":
  1434. case "photo-host.org":
  1435. case "myxpic.com":
  1436. case "picness.com":
  1437. i = q('a[href*="original"]');
  1438. if(i){i.src = i.href;}
  1439. break;
  1440. case "pimpandhost.com":
  1441. i = q('div.main-image-wrapper');
  1442. if(i){i.src = i.dataset.src;}
  1443. break;
  1444. case "sexybabepics.net":
  1445. case "keepimg.com":
  1446. case "ibb.co":
  1447. i = document.head.querySelector('meta[property="og:image"]');
  1448. if(i){i.src = i.content; break;}
  1449. case "picsee.net":
  1450. i = q('a[href*="/upload"]');
  1451. if(i){i.src = i.href;}
  1452. break;
  1453. case "imagevenue.com":
  1454. i = q('img[style*="max-width:"]');
  1455. break;
  1456. case "hentai-foundry.com":
  1457. i = q('.boxbody img');
  1458. if(i && i.onclick)
  1459. {
  1460. i.click();
  1461. }
  1462. break;
  1463. case "rule34hentai.net":
  1464. i = q('a[download]');
  1465. if(i){i.src = i.href;}
  1466. break;
  1467. case "e621.net":
  1468. j = true;
  1469. i = q('div#image-download-link a');
  1470. if(i){i.src = i.href;}
  1471. break;
  1472. case "danbooru.donmai.us":
  1473. i = q('a[href*="/data/"]');
  1474. if(i){i.src = i.href;}
  1475. break;
  1476. case "gelbooru.com":
  1477. case "youhate.us":
  1478. j = true;
  1479. i = q('a[href*="/images/"][style]');
  1480. if(i){i.src = i.href;}
  1481. break;
  1482. case "deviantart.com":
  1483. j = true;
  1484. if(q('button[aria-label="Expand"]')) // page loaded enough
  1485. {
  1486. i = q('a[download]');
  1487. if(i && i.href.indexOf("deviantart.com/users/outgoing?") == -1){i.src = i.href;console.log("found download link");}
  1488. else
  1489. {
  1490. if(parseInt(window.location.pathname.substring(window.location.pathname.lastIndexOf("-")+1)) <= 790677560) // max resolution hax (available only for old images - sadly)
  1491. {
  1492. i = document.head.querySelector('link[rel="preload"][as="image"]');
  1493. if(i)
  1494. {
  1495. i.src = i.href;
  1496. f = i.src.search(/\/f\/[^\/]+\/[^\/]+/);
  1497. if(f !== -1)
  1498. {
  1499. i.src = i.src.substring(0,f+i.src.match(/\/f\/[^\/]+\/[^\/]+/)[0].length);
  1500. }
  1501. i.src = i.src.replace('/f/', '/intermediary/f/');
  1502. console.log("hacked image resolution to maximum");
  1503. }
  1504. }
  1505. else
  1506. {
  1507. i = q('div[role="dialog"] div img'); // zoomed in
  1508. if(i)
  1509. {
  1510. console.log("found zoomed-in image");
  1511. f = i.src.match(/,q_\d\d,/);
  1512. if(f !== null)
  1513. {
  1514. i.src = i.src.replace(f[0], ',q_100,'); // max quality hax
  1515. console.log("hacked image quality to maximum (but not resolution)");
  1516. }
  1517. break;
  1518. }
  1519. i = q('div[data-hook="art_stage"] div div div img'); // not zoomed in yet
  1520. if(i){console.log("found un-zoomed image, clicked it");i.click();i=null;break;}
  1521. }
  1522. }
  1523. }
  1524. break;
  1525. case "furaffinity.net":
  1526. i = q('div.download a');
  1527. if(i){i.src = i.href;}
  1528. break;
  1529. case "imagehost.eu":
  1530. i = q('a#image');
  1531. if(i){i.src = i.href;}
  1532. break;
  1533. case "imgplus.info":
  1534. i = q('img[src*="full"]');
  1535. break;
  1536. case "zerochan.net":
  1537. i = q('a[href*="full"]');
  1538. if(i){i.src = i.href;}
  1539. break;
  1540. case "wstaw.org":
  1541. i = q('a[href*="/m/"]');
  1542. if(i){i.src = i.href;}
  1543. break;
  1544. case "imageshost.ru":
  1545. i = q('a[href*="/img/"]');
  1546. if(i){i.src = i.href;}
  1547. break;
  1548. case "uploadimage.ro":
  1549. i = q('img[src*="img.php"]');
  1550. break;
  1551. case "imageno.com":
  1552. i = q('img[src*="image.php"]');
  1553. break;
  1554. case "loadpix.de":
  1555. i = q('img[src*="bild.php"]');
  1556. break;
  1557. case "bildr.no":
  1558. i = q('img[src*="image"]');
  1559. break;
  1560. case "iv.pl":
  1561. case "funextra.hostzi.com":
  1562. case "freakimage.com":
  1563. case "imageurlhost.com":
  1564. case "superkipje.com":
  1565. case "ximg.co.uk":
  1566. case "sl-images.ath.cx":
  1567. case "pikczery.pl":
  1568. case "hosting-zdjec.pl":
  1569. case "upislam.com":
  1570. case "add-screen.com":
  1571. case "my-collection.ru":
  1572. case "img.schattorie.nl":
  1573. case "forexrainbow.com":
  1574. case "imgupload.pl":
  1575. case "addpix.net":
  1576. case "myuploadedimages.com":
  1577. case "multihoster.saxonia-fighter.de":
  1578. case "imgdone.com":
  1579. case "greenpiccs.com":
  1580. case "balkanelite.org":
  1581. case "qrrro.com":
  1582. case "vipix.pw":
  1583. case "imagecurl.com":
  1584. case "imagecurl.org":
  1585. case "imagescanner.cc":
  1586. i = q('a[href*="images/"]');
  1587. if(i){i.src = i.href;}
  1588. break;
  1589. case "fotoshack.us":
  1590. i = q('img[src*="/fotos/"]');
  1591. break;
  1592. case "subefotos.com":
  1593. j = true;
  1594. i = q('img[src*="fotos.' + iurl + '"]');
  1595. break;
  1596. case "pictureshoster.com":
  1597. case "zaslike.com":
  1598. case "dwimg.com":
  1599. case "uploadagent.de":
  1600. i = q('a[href*="files/"]');
  1601. if(i){i.src = i.href;}
  1602. break;
  1603. case "photosex.biz":
  1604. case "imgchilibum.ru":
  1605. i = q('img[src*="/pic"]');
  1606. break;
  1607. case "pronpic.org":
  1608. i = q('img#small_img[src*="/pic/"]');
  1609. if(i){i.src = i.src.replace('th_', '');}
  1610. break;
  1611. case "imadul.com":
  1612. i = q('div.img_box a');
  1613. if(i){i.src = i.href;}
  1614. break;
  1615. case "imgmega.com":
  1616. case "pic.re":
  1617. case "foxyimg.link":
  1618. case "picbaron.com":
  1619. case "imgbaron.com":
  1620. case "kvador.com":
  1621. case "pics4you.net":
  1622. i = q('input[type="submit"]');
  1623. dp=true;
  1624. j =true;
  1625. if(i)
  1626. {
  1627. i.click();
  1628. break;
  1629. }
  1630. case "screenlist.ru":
  1631. case "picshare.geenza.com":
  1632. case "mojoimage.com":
  1633. case "imagecherry.com":
  1634. case "10.imageleon.com":
  1635. case "img4.imagetitan.com":
  1636. case "ninjaimages.com":
  1637. i = q('img[onload*="scale"]');
  1638. break;
  1639. case "bild.me":
  1640. case "imagecarry.com":
  1641. case "imagedunk.com":
  1642. case "imageswitch.com":
  1643. case "piclambo.net":
  1644. case "picleet.com":
  1645. case "yankoimages.net":
  1646. case "picturedip.com":
  1647. case "imagezilla.net":
  1648. case "imageup.ru":
  1649. case "hotchyx.com":
  1650. case "imagehousing.com":
  1651. case "cubeupload.com":
  1652. case "dumparump.com":
  1653. case "uploads.ru":
  1654. case "myimg.de":
  1655. case "root-space.eu":
  1656. case "mepic.ru":
  1657. case "postto.me":
  1658. i = q('img[src*="' + iurl + '"]');
  1659. break;
  1660. case "ask.fm":
  1661. i = q('img[src*="' + iurl + '"][id]');
  1662. i.src = i.src.replace('/original/', '/large/'); //ask.fm
  1663. break;
  1664. case "photo.weibo.com":
  1665. i = q('img[src*="/large/"]');
  1666. break;
  1667. case "picfront.org":
  1668. j = true;
  1669. i = q('img[src*="' + iurl + '"][title]');
  1670. break;
  1671. case "platimzafoto.ru":
  1672. case "pic-money.ru":
  1673. case "imgmoney.ru":
  1674. case "img24.org":
  1675. case "svetmonet.ru":
  1676. case "pic4share.ru":
  1677. case "pic-images.ru":
  1678. case "imgbun.ru":
  1679. case "imgspic.ru":
  1680. case "jpgstore.ru":
  1681. case "moonpix.ru":
  1682. case "picpower.ru":
  1683. case "piccloud.ru":
  1684. case "pixxss.ru":
  1685. case "pixxsees.ru":
  1686. case "2picsun.ru":
  1687. case "pic2x.ru":
  1688. case "img-pika.ru":
  1689. case "1pic2x.ru":
  1690. case "1pics1img.ru":
  1691. case "wwxxww.ru":
  1692. case "pic3you.org":
  1693. case "shaggyimg.pro":
  1694. case "imgsmarts.info":
  1695. case "dailyimages.xyz":
  1696. case "imgazure.com":
  1697. f = document.getElementsByTagName("button");
  1698. if(f.length)
  1699. {
  1700. f[f.length-1].click();
  1701. }
  1702. dp=true;
  1703. i = q('img[src*="/pic.jpeg"]');
  1704. break;
  1705. case "imagerar.com":
  1706. if(window.location.href.indexOf("img-") != -1)
  1707. {
  1708. window.location.href = window.location.href.replace("img-","img2-");
  1709. break;
  1710. }
  1711. case "imgprime.com":
  1712. if(window.location.href.indexOf("img-") != -1)
  1713. {
  1714. window.location.href = window.location.href.replace("img-","img3-");
  1715. break;
  1716. }
  1717. else if (window.location.href.indexOf("/imga-u/") != -1)
  1718. {
  1719. window.location.href = window.location.href.replace("/imga-u/","/imgb-u/");
  1720. break;
  1721. }
  1722. else // if(window.location.href.indexOf("/imgb-u/") != -1)
  1723. {
  1724. i = q('img[src*="/u/b/"]');
  1725. break;
  1726. }
  1727. case "freeimagehosting.net":
  1728. case "uploadhouse.com":
  1729. case "fotos-hochladen.net":
  1730. case "picshare.ru":
  1731. case "imgtab.net":
  1732. i = q('img[src*="uploads/"]');
  1733. break;
  1734. case "xtremeshack.com":
  1735. i = q('img[src*="/photos/"]');
  1736. break;
  1737. case "500px.com":
  1738. j = true;
  1739. i = q('img.photo-show__img[src*="_m"]');
  1740. break;
  1741. case "picturepush.com":
  1742. i = q('img[src*="/photo/"]');
  1743. break;
  1744. case "keptarolo.hu":
  1745. i = q('img[src*="/kep/"]');
  1746. break;
  1747. case "servimg.com":
  1748. case "truepic.org":
  1749. i = q('img[src*="/u/"]');
  1750. break;
  1751. case "imagearn.com":
  1752. i = q('img[src*="/imags/"]');
  1753. break;
  1754. case "ichan.org":
  1755. i = q('img[src*="/src/"]');
  1756. break;
  1757. case "ibunker.us":
  1758. case "hostingpics.net":
  1759. i = q('img[src*="pics/"]');
  1760. break;
  1761. case "imgtiger.org":
  1762. i = q('form');
  1763. if(i)
  1764. {
  1765. i.submit();
  1766. break;
  1767. }
  1768. case "imgoutlet.pw":
  1769. case "imgrock.pw":
  1770. case "imgview.pw":
  1771. case "imgmaze.pw":
  1772. case "imgdew.pw":
  1773. j = true;
  1774. dp=true;
  1775. i = q('img.picview');
  1776. if(i)
  1777. {
  1778. if(!i.getAttribute("src") || !i.getAttribute("src").length)
  1779. {
  1780. i = null;
  1781. }
  1782. break;
  1783. }
  1784. f = document.querySelectorAll("[type='button']");
  1785. if(f.length)
  1786. {
  1787. let n;
  1788. for(n=f.length-1; n >= 0; n--)
  1789. {
  1790. if(window.getComputedStyle(f[n]).visibility != "hidden" && f[n].offsetWidth != 0 && f[n].value.indexOf("eply") == -1 && f[n].value.indexOf("Log") == -1)
  1791. {
  1792. f[n].removeAttribute("disabled");
  1793. f[n].click();
  1794. i = 1;
  1795. break;
  1796. }
  1797. }
  1798. }
  1799. break;
  1800. case "myimg.club":
  1801. case "imgmonkey.com":
  1802. case "imgdragon.com":
  1803. case "imggold.org":
  1804. case "levinpic.org":
  1805. case "imgtown.net":
  1806. case "0img.ws":
  1807. case "pixs.cx":
  1808. case "kropic.com":
  1809. j = true;
  1810. dp=true;
  1811. f = document.querySelectorAll("input[type='submit']");
  1812. if(f.length)
  1813. {
  1814. let n;
  1815. for(n=f.length-1; n >= 0; n--)
  1816. {
  1817. if(window.getComputedStyle(f[n]).visibility != "hidden" && f[n].offsetWidth != 0 && f[n].value.indexOf("eply") == -1 && f[n].value.indexOf("Log") == -1)
  1818. {
  1819. f[n].removeAttribute("disabled");
  1820. f[n].click();
  1821. break;
  1822. }
  1823. }
  1824. }
  1825. case "casimages.com":
  1826. case "thebestpichost.com":
  1827. case "ifotos.pl":
  1828. case "subeimagenes.com":
  1829. case "lostpix.com":
  1830. case "vvcap.com":
  1831. case "imgtrex.com":
  1832. case "pic-upload.de":
  1833. case "picusha.net":
  1834. i = q('img[src*="/img/"]');
  1835. break;
  1836. case "imagenetz.de":
  1837. i = q('img[src*="/img"]');
  1838. break;
  1839. case "picatom.com":
  1840. i = q('img[src*="img/"]');
  1841. break;
  1842. case "2pixxsee.ru":
  1843. case "imgking.xyz":
  1844. case "imgazure.com":
  1845. i = q('img[src*="/img/"]');
  1846. if(i){i.src = i.src.replace('p.', '.');}
  1847. break;
  1848. case "imgbabes.com":
  1849. case "imgflare.com":
  1850. i = q('input[type="submit"]');
  1851. dp=true;
  1852. j=true;
  1853. if(i)
  1854. {
  1855. i.click();
  1856. i=null;
  1857. }
  1858. else
  1859. {
  1860. i = q('img[src*="i.php?"]');
  1861. }
  1862. break;
  1863. case "xxxhost.me":
  1864. case "bilder-hochladen.net":
  1865. case "dumpt.com":
  1866. case "imgsin.com":
  1867. case "loaditup.de":
  1868. case "123poze.3x.ro":
  1869. case "thaisharing.online.fr":
  1870. case "filefap.com":
  1871. case "imgswift.com":
  1872. case "1pic.org":
  1873. i = q('img[src*="/files/"]');
  1874. break;
  1875. case "image18.org":
  1876. i = q('img[src*="/file"]');
  1877. break;
  1878. case "picstate.com":
  1879. i = q('#image_container a img');
  1880. break;
  1881. case "zimagez.com":
  1882. i = q('img[src*="/full/"]');
  1883. break;
  1884. case "niceimage.pl":
  1885. i = q('img[src*="/uploaded/"]');
  1886. break;
  1887. case "imagefap.com":
  1888. find_text_in_scripts('"contentUrl": "', '"');
  1889. break;
  1890. case "olivepix.com":
  1891. i = q('img[src*="view/"]');
  1892. break;
  1893. case "imgking.co":
  1894. i = q('img[src*="uploads/"]');
  1895. if(i) break;
  1896. if(window.location.href.indexOf("imgs") != -1)
  1897. {
  1898. window.location.href = window.location.href.replace("imgs","imgv");
  1899. break;
  1900. }
  1901. if(window.location.href.indexOf("img3") != -1)
  1902. {
  1903. window.location.href = window.location.href.replace("img3","img4");
  1904. break;
  1905. }
  1906. case "imagesouls.net":
  1907. case "funimg.net":
  1908. if(find_text_in_scripts('linkid="', '"', false))
  1909. {
  1910. window.location.href = i.src;
  1911. break;
  1912. }
  1913. case "imgadult.com":
  1914. j = true;
  1915. i = q('a.overlay_ad_link');
  1916. if(i)
  1917. {
  1918. i.click();
  1919. break;
  1920. }
  1921. case "imagefolks.com":
  1922. case "imgcandy.net":
  1923. case "imageteam.org":
  1924. case "imgnext.com":
  1925. case "hosturimage.com":
  1926. case "pixup.us":
  1927. case "xximg.net":
  1928. case "x.xximg.net":
  1929. case "sxpics.nl":
  1930. case "sxpix.nl":
  1931. case "bulkimg.info":
  1932. case "img.yt":
  1933. case "xxxscreens.com":
  1934. case "i.sxpics.nl":
  1935. case "imageon.org":
  1936. case "nimplus.com":
  1937. case "imag.nimplus.com":
  1938. case "newimagepost.com":
  1939. case "imgease.re":
  1940. case "fapat.me":
  1941. case "imgbe.com":
  1942. case "fireimg.cc":
  1943. case "rapidimg.net":
  1944. case "imgtornado.com":
  1945. case "erimge.com":
  1946. case "loftlm.ru":
  1947. case "tinizo.com":
  1948. case "imgpix.net":
  1949. case "freeimagehostin.com":
  1950. case "sximg.nl":
  1951. case "freephotohostin.com":
  1952. case "imgpics.nl":
  1953. case "imagepics.xyz":
  1954. case "imgwo.com":
  1955. case "ima.gy":
  1956. case "picz.site":
  1957. case "allxpix.com":
  1958. case "imgblank.com":
  1959. case "xeimg.yt":
  1960. case "imgmain.com":
  1961. case "acidimg.cc":
  1962. case "imgpart.com":
  1963. case "picmoza.com":
  1964. case "imgjazz.com":
  1965. case "picshost.info":
  1966. case "petrovixxxjav.com":
  1967. case "placeimg.net":
  1968. case "imageshtorm.com":
  1969. case "blameless.work":
  1970. case "xxx.kodiak.top":
  1971. case "xaoutchouc.live":
  1972. case "mshelxxx.ru.com":
  1973. dp=true;
  1974. f = document.getElementsByTagName("input");
  1975. if(f.length)
  1976. {
  1977. f[f.length-1].removeAttribute("disabled");
  1978. f[f.length-1].click();
  1979. }
  1980. case "fotoszok.pl":
  1981. case "damimage.com":
  1982. case "adultur.com":
  1983. case "croftimage.com":
  1984. case "imagedecode.com":
  1985. case "sexyimg.eu":
  1986. case "gogoimage.org":
  1987. case "imageblinks.com":
  1988. case "imglooks.com":
  1989. case "ocaload.com":
  1990. case "imgstudio.org":
  1991. case "goimge.com":
  1992. case "imageho.me":
  1993. case "imgor.net":
  1994. case "icezap.com":
  1995. case "imgtrial.com":
  1996. case "dimtus.com":
  1997. case "imgcat.pw":
  1998. case "sexyimg.eu":
  1999. case "imgseed.com":
  2000. case "imgcredit.xyz":
  2001. case "pic.hotimg.site":
  2002. case "xfap.fun":
  2003. i = q('img[src*="' + iurl + '/upload/"]');
  2004. break;
  2005. case "imgboom.net":
  2006. if(window.location.href.indexOf("img-") != -1)
  2007. {
  2008. window.location.href = "http://imgboom.net/view.php";
  2009. break;
  2010. }
  2011. case "thumbnailus.com":
  2012. case "imgleveret.com":
  2013. case "porn84.org":
  2014. i = q('input[type="submit"]');
  2015. dp=true;
  2016. if(i)
  2017. {
  2018. i.click();
  2019. break;
  2020. }
  2021. i = q('img[src*="' + iurl + '/upload/"].centred');
  2022. break;
  2023. case "imgzulu.com":
  2024. i = q('button[type="submit"]');
  2025. dp=true;
  2026. if(i)
  2027. {
  2028. i.click();
  2029. break;
  2030. }
  2031. i = q('img[src*="' + iurl + '/upload/"]');
  2032. break;
  2033. case "imgsky.net":
  2034. case "imgsee.net":
  2035. case "imgzong.xyz":
  2036. case "imageking.xyz":
  2037. case "imgxx.xyz":
  2038. case "imgao.xyz":
  2039. case "imgweng.xyz":
  2040. i = q('button');
  2041. dp=true;
  2042. j = true;
  2043. if(i)
  2044. {
  2045. i.click();
  2046. }
  2047. i = q('.big_img_box img[src*="http"]');
  2048. break;
  2049. case "picspornfree.me":
  2050. case "hotimage.uk":
  2051. case "xxxwebdlxxx.org":
  2052. case "hdmoza.com":
  2053. i = q('input[type="submit"]');
  2054. dp=true;
  2055. if(i)
  2056. {
  2057. i.click();
  2058. break;
  2059. }
  2060. case "image-server.ru":
  2061. case "avenuexxx.com":
  2062. case "uploadimagex.com":
  2063. case "hostingkartinok.com":
  2064. case "bellazon":
  2065. case "imgkings.com":
  2066. case "savepice.ru":
  2067. i = q('img[src*="/upload"]');
  2068. break;
  2069. case "imgseeds.com":
  2070. i = q('input');
  2071. if(i)
  2072. {
  2073. i.click();
  2074. break;
  2075. }
  2076. case "imghit.com":
  2077. i = q('img[alt="image"]');
  2078. break;
  2079. case "3xplanet.com":
  2080. i = q('img[alt="picContent"]');
  2081. break;
  2082. case "subirimagenes.com":
  2083. i = q('input[type="submit"]');
  2084. dp=true;
  2085. if(i)
  2086. {
  2087. i.click();
  2088. break;
  2089. }
  2090. i = q('img[onclick*="scale"]');
  2091. break;
  2092. case "image-share.com":
  2093. case "xpic.biz":
  2094. i = q('img[src*="upload/"]');
  2095. break;
  2096. case "bilder-upload.eu":
  2097. i = q('input[src*="upload/"]');
  2098. break;
  2099. case "picload.org":
  2100. case "imagecross.com":
  2101. case "npicture.net":
  2102. case "public-pic.de":
  2103. case "picbug.ru":
  2104. i = q('img[src*="' + iurl + '/image"]');
  2105. break;
  2106. case "yande.re":
  2107. case "konachan.com":
  2108. case "konachan.net":
  2109. i = q('a[href*="' + iurl + '/image"]');
  2110. if(i){i.src = i.href;}
  2111. break;
  2112. case "imagesup.net":
  2113. i = q('a[href*="/di-"]');
  2114. if(i)
  2115. {
  2116. i.src = i.href;
  2117. }
  2118. break;
  2119. case "cyberpics.net":
  2120. case "fastimages.ru":
  2121. case "hot-file.org":
  2122. case "image.siroro.co.uk":
  2123. case "qattach.com":
  2124. case "fotohelp.kz":
  2125. case "pic-you.com":
  2126. i = q('a[href*="/di/"]');
  2127. if(i)
  2128. {
  2129. i.src = i.href;
  2130. }
  2131. break;
  2132. case "imagehost.thasnasty.com":
  2133. case "thepornfeeds.com":
  2134. case "oxily.com":
  2135. case "ghanaimages.co":
  2136. case "knecht.novarata.net":
  2137. case "img.irandeliver.com":
  2138. case "xferz.com":
  2139. case "up.kfesfahan.com":
  2140. case "image.alesher.com":
  2141. case "upload.khontai.com":
  2142. case "image.pantyhosemania.info":
  2143. case "t.hogor.net":
  2144. case "your-pictures.net":
  2145. i = q('a[href*="?di="]');
  2146. if(i)
  2147. {
  2148. i.src = i.href;
  2149. }
  2150. break;
  2151. case "pixxxels.org":
  2152. case "postimg.org":
  2153. case "postimg.cc":
  2154. case "pixxxels.cc":
  2155. i = q('a[href*="?dl="]');
  2156. if(i)
  2157. {
  2158. i.src = i.href;
  2159. }
  2160. break;
  2161. case "zimage.fr":
  2162. i = q('img[src*="images.php"]');
  2163. if(i)
  2164. {
  2165. i.src = i.src.replace('.php?nom=', '/');
  2166. break;
  2167. }
  2168. case "dumppix.com":
  2169. i = q('a[href*="enter"]');
  2170. if(i)
  2171. {
  2172. window.location.href = i.href;
  2173. break;
  2174. }
  2175. case "mrjh.org":
  2176. case "stuffed.ru":
  2177. case "rapid-img.de":
  2178. case "ngarko.online.fr":
  2179. case "freeuploadimages.org":
  2180. case "picszone.net":
  2181. case "images.share-films.net":
  2182. case "bildjunkies.de":
  2183. case "foto.hcfor.pl":
  2184. case "pic.tooptarinha.com":
  2185. case "poopr.org":
  2186. case "xp-images.hi2.ro":
  2187. case "dayzeddesigns.com":
  2188. case "freeimghosting.co.uk":
  2189. case "upload.removed.us":
  2190. case "imghost.pl":
  2191. case "udostepniaj.pl":
  2192. case "ngarko.free.fr":
  2193. case "images.collectiontricks.it":
  2194. case "244pix.com":
  2195. case "imgboxxx.com":
  2196. case "imghere.net":
  2197. case "imgdope.com":
  2198. case "hostmat.eu":
  2199. case "imgdream.net":
  2200. case "imgcentral.com":
  2201. case "imgroute.com":
  2202. i = q('img[src*="images/"]');
  2203. break;
  2204. case "use.com":
  2205. i = q('img[src*="images/"][onload]');
  2206. if(i){i.src = i.src.replace('/s_2/', '/s_5/');}
  2207. break;
  2208. case "1y9y.com":
  2209. case "host4images.com":
  2210. case "aveimage.com":
  2211. i = q('img#photo');
  2212. break;
  2213. case "freeimgup.com":
  2214. case "picturevip.com":
  2215. case "image-load.net":
  2216. case "upload.djmaster.fr":
  2217. case "b4he.com":
  2218. case "firepic.org":
  2219. case "overdream.cz":
  2220. case "fastpics.net":
  2221. case "ii4.ru":
  2222. case "picuploader.de":
  2223. case "smages.com":
  2224. case "pictureshack.ru":
  2225. case "imgbox.de":
  2226. case "imagehosting.cz":
  2227. case "9foto.ru":
  2228. case "imagesloading.altervista.org":
  2229. case "phpbbmods.it":
  2230. case "lakhdaria.net":
  2231. case "partizansk.eu":
  2232. case "webjardiner.com":
  2233. case "imgup.com":
  2234. case "iezz.com":
  2235. case "fileaimage.com":
  2236. case "picturescream.com":
  2237. case "all-poster.ru":
  2238. case "imgmak.com":
  2239. case "extraimage.net":
  2240. case "imagexxx18.com":
  2241. case "imgvisits.com":
  2242. case "imghall.com":
  2243. i = q('img[src*="/images/"]');
  2244. break;
  2245. case "intergranada.com":
  2246. i = q('img[src*="/images/images/"]');
  2247. break;
  2248. case "pixelup.net":
  2249. i = q('center img[src*="/images/"]');
  2250. break;
  2251. case "saveimg.ru":
  2252. case "imglink.ru":
  2253. case "4put.ru":
  2254. case "sharepic.biz":
  2255. case "you-logo.ru":
  2256. case "powerlogo.ru":
  2257. i = q('img[src*="pictures/"]');
  2258. break;
  2259. case "xenopix.com":
  2260. i = q('img[src*="/pix/"]');
  2261. break;
  2262. case "chronos.to":
  2263. case "imgmaid.net":
  2264. case "pic-maniac.com":
  2265. case "coreimg.net":
  2266. case "imx.to":
  2267. j = true;
  2268. i = q('input[type="submit"]');
  2269. dp=true;
  2270. if(i)
  2271. {
  2272. i.click();
  2273. break;
  2274. }
  2275. case "imgspice.com":
  2276. case "imagetwist.com":
  2277. case "dev.imagetwist.com":
  2278. case "pixroute.com":
  2279. case "pzy.be":
  2280. case "funkyimg.com":
  2281. case "itmages.ru":
  2282. case "imagenpic.com":
  2283. case "turbopix.fr":
  2284. case "pictureturn.com":
  2285. case "pixic.ru":
  2286. case "nyanimg.com":
  2287. case "geekpics.in":
  2288. case "imageporter.com":
  2289. case "imagenimage.com":
  2290. case "imageshimage.com":
  2291. case "imagedax.net":
  2292. case "pornimagex.com":
  2293. case "sendpic.org":
  2294. i = q('img[src*="/i/"]');
  2295. break;
  2296. case "imguniversal.com":
  2297. case "imgclick.net": // no submits
  2298. case "imgsto.com":
  2299. case "fappic.com":
  2300. i = q("form input[type='submit'][value*='continue to image' i]");
  2301. j = true;
  2302. dp = true;
  2303. if(i)
  2304. {
  2305. i.click();
  2306. }
  2307. i = q("img.pic[src*='/i/'], img.pic[src*='/img/']");
  2308. break;
  2309. case "scrin.org":
  2310. i = q('a[href*="/i/"]');
  2311. if(i)
  2312. {
  2313. i.src = i.href;
  2314. break;
  2315. }
  2316. i = q('img[src*="/i/"]');
  2317. break;
  2318. case "miragepics.com":
  2319. i = q('input[value*="' + iurl + '/images/"]');
  2320. if(i){i.src = i.value;}
  2321. break;
  2322. case "ipic.su":
  2323. i = q('input[value*="' + iurl + ' img/"]');
  2324. if(i){i.src = i.value;}
  2325. break;
  2326. case "mixbase.net":
  2327. i = q('img[src*="media/storage/"]');
  2328. break;
  2329. case "image2you.ru":
  2330. i = q('img[src*="images/"]');
  2331. if(i){i.src = i.src.replace('2_', '');}
  2332. break;
  2333. case "imgmade.com":
  2334. i = q('form');
  2335. dp=true;
  2336. if(i)
  2337. {
  2338. i.submit();
  2339. break;
  2340. }
  2341. case "imgdrive.net":
  2342. case "imgtaxi.com":
  2343. case "imgwallet.com":
  2344. j = true;
  2345. i = q("a.overlay_ad_link");
  2346. if(i)
  2347. {
  2348. i.click();
  2349. break;
  2350. }
  2351. case "pixhost.to":
  2352. case "imgtiger.com":
  2353. case "imgserve.net":
  2354. case "imgdino.com":
  2355. case "overpic.net":
  2356. case "imagesocket.com":
  2357. case "hostpic.org":
  2358. case "zapodaj.net":
  2359. case "jpegshare.net":
  2360. case "screenshot.ru":
  2361. case "imagefile.org":
  2362. case "zapisz.net":
  2363. case "addyourpics.com":
  2364. case "imgbank.cz":
  2365. case "showmyimage.com":
  2366. case "mynameismiz.com":
  2367. case "upload.supreme-elite.fr":
  2368. case "myimg.me":
  2369. case "heberg-hush.org":
  2370. case "oltaciyukle.com":
  2371. case "pichost.name":
  2372. case "imagend.com":
  2373. case "imagerocket.com":
  2374. case "hyyathost.com":
  2375. case "images.reptilescanada.com":
  2376. case "wepic.ru":
  2377. case "upload-image.fr":
  2378. case "images.baconbits.org":
  2379. case "kuvajako.com":
  2380. case "upanh.ovo.vn":
  2381. case "imagesaur.com":
  2382. case "wrzucaj.net":
  2383. case "heberge-images.com":
  2384. case "image.kg":
  2385. case "picshome.ru":
  2386. case "savemyimage.com":
  2387. case "img.dramacafe.tv":
  2388. case "fapping.empornium.sx":
  2389. case "beeimg.com":
  2390. case "1pics.ru":
  2391. case "imgshow.me":
  2392. case "youpicture.org":
  2393. case "vavvi.com":
  2394. case "imgzap.com":
  2395. case "crazyimg.com":
  2396. case "extraimago.com":
  2397. case "ftop.ru":
  2398. case "porncomix.info":
  2399. case "luxpic.ru":
  2400. case "passpix.com":
  2401. case "trumbhost.com":
  2402. //Chevereto 2.x
  2403. i = q('img[src*="' + iurl + '/images/"]');
  2404. break;
  2405. case "shareimages.com":
  2406. case "imagesmax.de":
  2407. case "bilder.nixhelp.de":
  2408. i = q('img[src*="' + iurl + '/images"]');
  2409. break;
  2410. case "imgfantasy.com":
  2411. case "imageporn.eu":
  2412. case "imgsmile.com":
  2413. case "imgsay.com":
  2414. case "0img.net":
  2415. case "imagedisco.net":
  2416. //IMGReserve
  2417. j = true;
  2418. dp=true;
  2419. i = q('input[value="YES"]');
  2420. if(i){i.onclick();break;}
  2421. case "pic-upload.de":
  2422. case "shrani.najdi.si":
  2423. case "imageab.com":
  2424. case "turboimagehost.com":
  2425. i = q('img[onclick*="(this"]');
  2426. break;
  2427. case "joblo.com":
  2428. i = q('img');
  2429. if(i)
  2430. {
  2431. i.src = "http://www.joblo.com/moviehotties/images/profile-gallery/orig" + window.location.href.substr(window.location.href.lastIndexOf("/"));
  2432. }
  2433. break;
  2434. case "img.folluo.me":
  2435. case "sizzlingclicks.com":
  2436. case "imgsha.com":
  2437. i = q('img[data-load="full"]');
  2438. break;
  2439. case "suckmypic.net":
  2440. i = q('#theImage');
  2441. break;
  2442. case "xhamster.com":
  2443. case "xhamster.desi":
  2444. case "xhamster3.com":
  2445. case "xhamster4.com":
  2446. j = true;
  2447. i = q('div.fotorama__active>img.fotorama__img');
  2448. break;
  2449. case "imgtorrnt.in":
  2450. window.location.replace("https://i.imgur.com/" + window.location.href.substr(window.location.href.lastIndexOf('=') + 1));
  2451. case "trans.firm.in":
  2452. if(window.location.href.search(/\.(?:jpe?g|png|gif|webp)\.html$/i) != -1)//check whether it's a valid image url
  2453. {
  2454. i = { src : window.location.href.replace(".html", "") };
  2455. }
  2456. break;
  2457. default: // dynamic subdomain
  2458. switch(host.substr(host.indexOf(".")+1))
  2459. {
  2460. case "xhamster.com":
  2461. case "xhamster.desi":
  2462. case "xhamster3.com":
  2463. case "xhamster4.com":
  2464. j = true;
  2465. i = q('div.fotorama__active>img.fotorama__img');
  2466. break;
  2467. case "tumblr.com":
  2468. case "media.tumblr.com":
  2469. i = document.querySelector('meta[property="og:image"]');
  2470. if(i)
  2471. {
  2472. i.src = i.content;
  2473. }
  2474. else
  2475. {
  2476. i = document.querySelector('div#base-container > div > div > div > div > img');
  2477. }
  2478. break;
  2479. case "wikipedia.org":
  2480. case "wikimedia.org":
  2481. i = q('a[href*="/upload"]');
  2482. if(i){i.src = i.href;}
  2483. break;
  2484. case "imgcredit.xyz":
  2485. i = q('img[src*="/upload/"]');
  2486. break;
  2487. case "photobucket.com":
  2488. find_text_in_scripts('originalUrl":"', '"');
  2489. break;
  2490. case "lostpic.net":
  2491. //chevereto 3.x
  2492. i = document.head.querySelector('link[rel="image_src"]');
  2493. if(i)
  2494. {
  2495. i.src = i.href;
  2496. }
  2497. break;
  2498. case "freeamateurteens.net":
  2499. i = q('img[src*="images/"]');
  2500. break;
  2501. case "otofotki.pl":
  2502. i = q('img[src*="/obrazki/"]');
  2503. break;
  2504. case "tinypic.com":
  2505. i = q('img#imgElement');
  2506. break;
  2507. case "imagilive.com":
  2508. i = q('a.button');
  2509. if(i)
  2510. {
  2511. dp=true;
  2512. i.click();
  2513. break;
  2514. }
  2515. i = q('img[src*="' + iurl + '"]');
  2516. break;
  2517. case "vipr.im":
  2518. j = true;
  2519. i = q("a.ddownloader");
  2520. if(i)
  2521. {
  2522. i.src = i.href;
  2523. break;
  2524. }
  2525. break;
  2526. default: // for user-added sites
  2527. console.warn("HJI is running on a custom website");
  2528. if(document.readyState != "loading" && document.images.length != 0)
  2529. {
  2530. let b = 0;
  2531. for(let n = 0; n < document.images.length; n++)
  2532. {
  2533. if(document.images[n].width == 0 && !document.images[n].complete) // not started loading
  2534. {
  2535. b = -1;
  2536. break;
  2537. }
  2538. else if(document.images[n].width * document.images[n].height > document.images[b].width * document.images[b].height)
  2539. {
  2540. b = n;
  2541. }
  2542. }
  2543. i = document.images[b];
  2544. if(i){console.warn("HJI is running on a custom website, showing biggest image");}
  2545. }
  2546. break;
  2547. }
  2548. break;
  2549. }
  2550. //
  2551. //firefox handmade noscript
  2552. if(!j)
  2553. {
  2554. j = true;
  2555. if (document.title == "Attention Required! | Cloudflare")
  2556. {
  2557. console.warn("Cloudflare MITM guard page. Stopping.");
  2558. return false;
  2559. }
  2560. window.addEventListener('beforescriptexecute', onscript, true);
  2561. }
  2562. //
  2563. if(i && i.src)
  2564. {
  2565. observer.disconnect();
  2566. function clr_pgn()
  2567. {
  2568. unsafeWindow.open = null;
  2569. unsafeWindow.onbeforeunload = null;
  2570. if(!FireFox)
  2571. {
  2572. delete document.write;
  2573. document.write('<html><head></head><body></body></html>');
  2574. document.close();
  2575. document.addEventListener("visibilitychange", onVisibilityChange);
  2576. }
  2577. else
  2578. {
  2579. document.replaceChild(document.importNode(document.implementation.createHTMLDocument("").documentElement, true), document.documentElement);
  2580. }
  2581. }
  2582. if (ext_list.indexOf(i.src.split('.').pop().split('?')[0].toLowerCase()) >= 0)
  2583. {
  2584. console.warn("What we found is not an image");
  2585. return false;
  2586. }
  2587. clr_pgn();
  2588. ws();
  2589. document.head.innerHTML = "";
  2590. sanitize();
  2591. window.removeEventListener('beforescriptexecute', onscript, true);
  2592. makeimage();
  2593. }
  2594. else // try again
  2595. {
  2596. //console.warn("Didnt find image, trying again in " + timeout + " ms");
  2597. if(tb){clearTimeout(tb);}
  2598. tb = setTimeout(function() { console.warn("Didnt find image, waited " + timeout + " ms to try again. page: " + window.location.href); tb=0; timeout*=2; i=0; makeworld(); }, timeout);
  2599. }
  2600. }
  2601.  
  2602. function changecursor()
  2603. {
  2604. i.style.margin = "auto";
  2605. if(!rescaled && (((i.naturalHeight / window.devicePixelRatio).toFixed() == window.innerHeight && (i.naturalWidth / window.devicePixelRatio).toFixed() <= window.innerWidth) || ((i.naturalHeight / window.devicePixelRatio).toFixed() <= window.innerHeight && (i.naturalWidth / window.devicePixelRatio).toFixed() == window.innerWidth))) // one img dimension is equal to screen and other is the same or less than the screen
  2606. {
  2607. i.style.cursor = "";
  2608. }
  2609. else if((i.naturalHeight / window.devicePixelRatio).toFixed() > window.innerHeight || (i.naturalWidth / window.devicePixelRatio).toFixed() > window.innerWidth) // at least one img dimenion is bigger than the screen
  2610. {
  2611. if(rescaled)
  2612. {
  2613. i.style.cursor = "zoom-in";
  2614. i.style.cursor = "-webkit-zoom-in";
  2615. }
  2616. else
  2617. {
  2618. i.style.cursor = "zoom-out";
  2619. i.style.cursor = "-webkit-zoom-out";
  2620. if((i.naturalHeight / window.devicePixelRatio).toFixed() > window.innerHeight) // image pushing out-of-screen fix
  2621. {
  2622. i.style.margin = "0px auto";
  2623. }
  2624. }
  2625. }
  2626. else
  2627. {
  2628. if(rescaled)
  2629. {
  2630. i.style.cursor = "zoom-out";
  2631. i.style.cursor = "-webkit-zoom-out";
  2632. }
  2633. else
  2634. {
  2635. i.style.cursor = "zoom-in";
  2636. i.style.cursor = "-webkit-zoom-in";
  2637. }
  2638. }
  2639. }
  2640.  
  2641. function rescale(event)
  2642. {
  2643. if(rescaled)
  2644. {
  2645. rescaled = false;
  2646. let scale,ex,ey;
  2647. if(event)
  2648. {
  2649. if (typeof event.y === "undefined") // Firefox
  2650. {
  2651. ex = event.clientX;
  2652. ey = event.clientY;
  2653. }
  2654. else
  2655. {
  2656. ex = event.x;
  2657. ey = event.y;
  2658. }
  2659. ex -= i.offsetLeft;
  2660. ey -= i.offsetTop;
  2661. scale = Math.min((window.innerWidth / (i.naturalWidth / window.devicePixelRatio).toFixed()), (window.innerHeight / (i.naturalHeight / window.devicePixelRatio).toFixed()));
  2662. }
  2663. i.style.width = (i.naturalWidth / window.devicePixelRatio).toFixed() + "px";
  2664. i.style.height = (i.naturalHeight / window.devicePixelRatio).toFixed() + "px";
  2665. changecursor();
  2666. if(event)
  2667. {
  2668. window.scrollTo(ex / scale - window.innerWidth / 2, ey / scale - window.innerHeight / 2);
  2669. }
  2670. }
  2671. else
  2672. {
  2673. i.style.width = (i.naturalWidth / window.devicePixelRatio).toFixed() + "px";
  2674. i.style.height = (i.naturalHeight / window.devicePixelRatio).toFixed() + "px";
  2675. if((i.naturalWidth / window.devicePixelRatio).toFixed() != window.innerWidth)
  2676. {
  2677. i.style.width = window.innerWidth + "px";
  2678. i.style.height = "";
  2679. rescaled = true;
  2680. }
  2681.  
  2682. if((i.height > window.innerHeight) || (i.width > window.innerWidth))
  2683. {
  2684. i.style.width = (i.naturalWidth / window.devicePixelRatio).toFixed() + "px";
  2685. i.style.height = (i.naturalHeight / window.devicePixelRatio).toFixed() + "px";
  2686. if((i.naturalHeight / window.devicePixelRatio).toFixed() != window.innerHeight)
  2687. {
  2688. i.style.height = window.innerHeight + "px";
  2689. i.style.width = "";
  2690. rescaled = true;
  2691. }
  2692. }
  2693. changecursor();
  2694. }
  2695. }
  2696.  
  2697. var ARC = 0;
  2698. function autoresize()
  2699. {
  2700. if(i.naturalWidth)
  2701. {
  2702. let title = i.src.substr(i.src.lastIndexOf("/")+1);
  2703. if(title.indexOf("?") != -1)
  2704. {
  2705. title = title.substr(0, title.indexOf("?"));
  2706. }
  2707. document.title = title + " (" + i.naturalWidth + "x" + i.naturalHeight + ")"; // title
  2708. let link = protected_createElement('link');
  2709. link.type = 'image/x-icon';
  2710. link.rel = 'shortcut icon';
  2711. link.href = i.src;
  2712. document.getElementsByTagName('head')[0].appendChild(link);
  2713. rescaled = true;rescale(0); // to original size in pixels
  2714. if(cfg_fitWH && i.height > window.innerHeight && i.width > window.innerWidth) // both scrollbars
  2715. {
  2716. rescale(0);
  2717. }
  2718. else if(cfg_fitB && (i.height > window.innerHeight || i.width > window.innerWidth)) // one scrollbar
  2719. {
  2720. rescale(0);
  2721. }
  2722. else if(cfg_fitS && i.height <= window.innerHeight && i.width <= window.innerWidth) // no scrollbars
  2723. {
  2724. rescale(0);
  2725. }
  2726. if(cfg_js){eval(cfg_js);}
  2727. }
  2728. else
  2729. {
  2730. ARC++;
  2731. if(ARC == 25 || ARC == 250 || ARC == 750)
  2732. {
  2733. i.src = i.src; // lol fix
  2734. }
  2735. setTimeout(function() { autoresize(); }, 10);
  2736. }
  2737. }
  2738.  
  2739. var observer = new MutationObserver(function()
  2740. {
  2741. makeworld();
  2742. });
  2743. observer.observe(document, {subtree: true, childList: true});
  2744.  
  2745. // hotkeys
  2746. if (typeof KeyEvent === "undefined")
  2747. {
  2748. var KeyEvent = {
  2749. DOM_VK_SPACE: 32,
  2750. DOM_VK_LEFT: 37,
  2751. DOM_VK_UP: 38,
  2752. DOM_VK_RIGHT: 39,
  2753. DOM_VK_DOWN: 40,
  2754. DOM_VK_A: 65,
  2755. DOM_VK_D: 68,
  2756. DOM_VK_P: 80,
  2757. DOM_VK_Q: 81,
  2758. DOM_VK_R: 82,
  2759. DOM_VK_S: 83,
  2760. DOM_VK_W: 87,
  2761. DOM_VK_NUMPAD2: 98,
  2762. DOM_VK_NUMPAD4: 100,
  2763. DOM_VK_NUMPAD5: 101,
  2764. DOM_VK_NUMPAD6: 102,
  2765. DOM_VK_NUMPAD8: 104,
  2766. DOM_VK_F5: 116
  2767. };
  2768. }
  2769.  
  2770. function cancelEvent(a)
  2771. {
  2772. a = a ? a : window.event;
  2773. if (a.stopPropagation)
  2774. {
  2775. a.stopPropagation();
  2776. }
  2777. if (a.preventDefault)
  2778. {
  2779. a.preventDefault();
  2780. }
  2781. a.cancelBubble = true;
  2782. a.cancel = true;
  2783. a.returnValue = false;
  2784. return false;
  2785. }
  2786.  
  2787. function scroll_space(a, b)
  2788. {
  2789. let by = Math.round((b ? window.innerHeight : window.innerWidth) * 0.50 * (a ? -1 : 1));
  2790. if(!b)
  2791. {
  2792. window.scrollBy(0, by);
  2793. }
  2794. else
  2795. {
  2796. window.scrollBy(by, 0);
  2797. }
  2798. }
  2799.  
  2800. function onkeydown (b)
  2801. {
  2802. let a = (window.event) ? b.keyCode : b.which;
  2803.  
  2804. if(b.ctrlKey && a == KeyEvent.DOM_VK_S)
  2805. {
  2806. cancelEvent(b);
  2807. if(i)
  2808. {
  2809. a = protected_createElement("a");
  2810. a.href = i.src;
  2811. a.download = ""; // HTML5
  2812. document.body.appendChild(a);
  2813. a.click();
  2814. document.body.removeChild(a);
  2815. }
  2816. return;
  2817. }
  2818. if (b.altKey || b.metaKey || (b.ctrlKey && a != KeyEvent.DOM_VK_SPACE && a != KeyEvent.DOM_VK_F5 && a != KeyEvent.DOM_VK_R))
  2819. {
  2820. return;
  2821. }
  2822.  
  2823. let by = Math.round(window.innerHeight * 0.10);
  2824.  
  2825. switch (a)
  2826. {
  2827. case KeyEvent.DOM_VK_RIGHT:
  2828. case KeyEvent.DOM_VK_D:
  2829. case KeyEvent.DOM_VK_NUMPAD6:
  2830. window.scrollBy(by, 0);
  2831. cancelEvent(b);
  2832. break;
  2833. case KeyEvent.DOM_VK_LEFT:
  2834. case KeyEvent.DOM_VK_A:
  2835. case KeyEvent.DOM_VK_NUMPAD4:
  2836. window.scrollBy(by * -1, 0);
  2837. cancelEvent(b);
  2838. break;
  2839. case KeyEvent.DOM_VK_W:
  2840. case KeyEvent.DOM_VK_NUMPAD8:
  2841. window.scrollBy(0, by * -1);
  2842. cancelEvent(b);
  2843. break;
  2844. case KeyEvent.DOM_VK_S:
  2845. case KeyEvent.DOM_VK_NUMPAD2:
  2846. window.scrollBy(0, by);
  2847. cancelEvent(b);
  2848. break;
  2849. case KeyEvent.DOM_VK_SPACE:
  2850. scroll_space(b.shiftKey, b.ctrlKey);
  2851. cancelEvent(b);
  2852. break;
  2853. case KeyEvent.DOM_VK_Q:
  2854. case KeyEvent.DOM_VK_NUMPAD5:
  2855. rescale(0);
  2856. cancelEvent(b);
  2857. break;
  2858. case KeyEvent.DOM_VK_P:
  2859. if(i && !FireFox) // Chrome nosave bug
  2860. {
  2861. window.location.href = "https://gist.github.com/Owyn/8553d7953d948228e312";
  2862. }
  2863. else
  2864. {
  2865. cfg();
  2866. }
  2867. cancelEvent(b);
  2868. break;
  2869. case KeyEvent.DOM_VK_R:
  2870. if(!b.ctrlKey)
  2871. {
  2872. document.cookie= "hji=" + window.location.href;
  2873. window.location.reload();
  2874. cancelEvent(b);
  2875. }
  2876. else
  2877. {
  2878. window.removeEventListener("beforeunload", onbeforeunload, true);
  2879. }
  2880. break;
  2881. case KeyEvent.DOM_VK_F5:
  2882. window.removeEventListener("beforeunload", onbeforeunload, true);
  2883. break;
  2884. }
  2885. }
  2886.  
  2887. function cfg()
  2888. {
  2889. if (typeof GM.setValue !== "undefined")
  2890. {
  2891. function saveCfg()
  2892. {
  2893. GM.setValue("directImage", q("#hji_cfg_1_direct").checked);
  2894. GM.setValue("bgColor", q("#hji_cfg_2_bgclr").value);
  2895. GM.setValue("fitWH", q("#hji_cfg_3_fitWH").checked);
  2896. GM.setValue("fitB", q("#hji_cfg_4_fitB").checked);
  2897. GM.setValue("fitS", q("#hji_cfg_5_fitS").checked);
  2898. GM.setValue("js", q("#hji_cfg_6_js").value);
  2899. alert("Configuration Saved");
  2900. if(q("#hji_cfg_2_bgclr").value){document.body.bgColor = q("#hji_cfg_2_bgclr").value;}else{document.body.removeAttribute("bgColor");}
  2901. }
  2902. if(i && i.src){i.removeEventListener("click", rescale, true);}
  2903. window.removeEventListener("keydown", onkeydown, true);
  2904. document.head.innerHTML = "";
  2905. document.body.innerHTML = "";
  2906. ws();
  2907. let div = protected_createElement("div");
  2908. div.style.margin = "11% auto";
  2909. div.style.width = "444px";
  2910. div.style.border = "solid 1px black";
  2911. div.style.background = "silver";
  2912. div.innerHTML = "<b><center>Configuration</center></b><br><input id='hji_cfg_1_direct' type='checkbox'> Open images directly with browser"
  2913. + "<br><br><input id='hji_cfg_2_bgclr' type='text' size='6'> Background color (empty = default)"
  2914. + "<br><br>Fit to window images:"
  2915. + "<br><br><input id='hji_cfg_3_fitWH' type='checkbox'> Larger than window both vertically and horizontally"
  2916. + "<br><br><input id='hji_cfg_4_fitB' type='checkbox'> Larger than window either vertically or horizontally"
  2917. + "<br><br><input id='hji_cfg_5_fitS' type='checkbox'> Smaller than window"
  2918. + "<br><br><center>Custom JS Action:<textarea id='hji_cfg_6_js' style='margin: 0px; width: 400px; height: 50px;'></textarea>"
  2919. + "<br><input id='hji_cfg_save' type='button' value='Save configuration'></center>";
  2920. document.body.appendChild(div);
  2921. q("#hji_cfg_1_direct").checked = cfg_direct;
  2922. q("#hji_cfg_2_bgclr").value = cfg_bgclr;
  2923. q("#hji_cfg_3_fitWH").checked = cfg_fitWH;
  2924. q("#hji_cfg_4_fitB").checked = cfg_fitB;
  2925. q("#hji_cfg_5_fitS").checked = cfg_fitS;
  2926. q("#hji_cfg_6_js").value = cfg_js;
  2927. q("#hji_cfg_save").addEventListener("click", saveCfg, true);
  2928. }
  2929. else
  2930. {
  2931. alert("Sorry, userscripts in browser native mode (without a script manager) can't have configurations! Install TamperMonkey extension. (it's a very good userscript manager)");
  2932. }
  2933. }
  2934.  
  2935. var loadCfg;
  2936. if (typeof GM === 'undefined') // GM3 or native
  2937. {
  2938. if (typeof GM_getValue !== "undefined")
  2939. {
  2940. console.warn("using synchronous GM setting loading");
  2941. window.GM = {};
  2942. GM.getValue = GM_getValue;
  2943. GM.setValue = GM_setValue;
  2944. loadCfg = function()
  2945. {
  2946. cfg_direct = GM.getValue("directImage", false);
  2947. cfg_bgclr = GM.getValue("bgColor", "grey");
  2948. cfg_fitWH = GM.getValue("fitWH", true);
  2949. cfg_fitB = GM.getValue("fitB", false);
  2950. cfg_fitS = GM.getValue("fitS", true);
  2951. cfg_js = GM.getValue("js", "");
  2952. }
  2953. loadCfg();
  2954. }
  2955. else
  2956. {
  2957. cfg_js = "";
  2958. console.warn("no script manager found - using default settings mode");
  2959. }
  2960. }
  2961. else
  2962. {
  2963. loadCfg = async function ()
  2964. {
  2965. cfg_direct = await GM.getValue("directImage", false);
  2966. cfg_bgclr = await GM.getValue("bgColor", "grey");
  2967. cfg_fitWH = await GM.getValue("fitWH", true);
  2968. cfg_fitB = await GM.getValue("fitB", false);
  2969. cfg_fitS = await GM.getValue("fitS", true);
  2970. cfg_js = await GM.getValue("js", "");
  2971. }
  2972. loadCfg();
  2973. }