18H Hentai Manga Autoload

Autoload hentai manga and CG images on one page on 18h.mm-cg.com.

  1. // ==UserScript==
  2. // @name 18H Hentai Manga Autoload
  3. // @description Autoload hentai manga and CG images on one page on 18h.mm-cg.com.
  4. // @grant unsafeWindow
  5. // @include http://*.servik.com/*
  6. // @include http://18h.mm-cg.com/*
  7. // @version 0.0.1.20140809083006
  8. // @namespace https://greasyfork.org/users/2233
  9. // ==/UserScript==
  10.  
  11. var wnd = window
  12. var doc = wnd.document
  13. var loc = location
  14. var href = loc.href
  15.  
  16. var load_imgs = function()
  17. {
  18. doc.body.innerHTML = ''
  19. var d = doc.createDocumentFragment()
  20. for(var i=0, len=imgs.length; i<len; i++)
  21. {
  22. var img = new Image()
  23. img.id = i
  24. img.onerror = function() { this.onerror = null; this.style.display = 'none' }
  25. img.src = imgs[i]
  26. img.style.cssText = 'display: block; margin-left: auto; margin-right: auto'
  27. img.width = wnd.innerWidth * 0.70
  28. d.appendChild(doc.createTextNode('p. '+i))
  29. d.appendChild(doc.createElement('BR'))
  30. d.appendChild(img)
  31. d.appendChild(doc.createElement('BR'))
  32. }
  33. doc.body.appendChild(d)
  34. }
  35.  
  36. if(/^http:\/\/18h\.mm-cg\.com\//.test(href))
  37. {
  38. if(href.indexOf('.html')==-1)
  39. {
  40. try {
  41. doc.getElementById('fwin_dialog_submit').click()
  42. close_btns = doc.getElementsByClassName('mmad_drift_title')
  43. close_btns[1].click()
  44. } catch(e) {}
  45.  
  46. // the key of the stored cookie
  47. var key = '18h'
  48. var sub = /.*\/(.*)/.exec(href)[1]
  49. if(sub) { key = key + '_' + sub }
  50.  
  51. var lnks = doc.getElementsByTagName('A')
  52. for(var i=lnks.length-1; i>=0; i--)
  53. {
  54. lnks[i].target = '_blank'
  55. lnks[i].addEventListener('click', function(evt) {
  56. evt.preventDefault()
  57. }, false)
  58. lnks[i].addEventListener('mouseup', function(evt) {
  59. if(evt.ctrlKey)
  60. {
  61. var t = this.text
  62. if(t == '') { return }
  63. var c = key + '=' + t + ' p.' + prompt('Title: ' + t + '\nEnter the page number: ', '0') + '; expires=Fri, 31 Dec 9999 23:59:59 GMT;'
  64. if(/ p.[0-9]/.test(c))
  65. {
  66. doc.cookie = c
  67. var e = this
  68. var orig_color = e.style.color
  69. e.style.color = '#ff9900'
  70. setTimeout(function() {e.style.color = orig_color}, 2000)
  71. }
  72. return
  73. }
  74. wnd.open(this.href, '_blank') // (X) this.href + '#0'
  75. this.style.color = 'purple'
  76. }, false)
  77. }
  78.  
  79. // press <cr> to focus the stored link and open it in a new tab
  80. addEventListener('keydown', function(evt) {
  81. if(evt.keyCode == 13)
  82. {
  83. evt.preventDefault()
  84. var a = doc.cookie.split('; ')
  85. var len = a.length
  86. var k, v, p
  87. for(var i=0; i<len; i++)
  88. {
  89. k = /(.*?)=(.*)/.exec(a[i])[1]
  90. v = /(.*?)=(.*)/.exec(a[i])[2]
  91. if(k == key)
  92. {
  93. p = /(.*) p\.(\d+)/.exec(v)[2]
  94. v = /(.*) p\.(\d+)/.exec(v)[1]
  95. break
  96. }
  97. else { k = v = p = '' }
  98. }
  99. if(v)
  100. {
  101. var a = []
  102. var choice = 0
  103. var len = lnks.length
  104. for(var i=0; i<len; i++) { if(v == lnks[i].text) { a.push(i) } } // try to find the stored links from all links
  105. len = a.length
  106. if(len >= 2)
  107. {
  108. var s = ''
  109. for(var i=0; i<len; i++) { s = s + '\n(' + i + ') ' + lnks[a[i]].href }
  110. s = s + '\nEnter a number:'
  111. choice = parseInt(prompt(s, '0'))
  112. }
  113. if(!isNaN(choice))
  114. {
  115. choice = a[choice]
  116. lnks[choice].focus()
  117. wnd.open(lnks[choice].href + '#' + p, '_blank')
  118. lnks[choice].style.color = '#ff9900'
  119. setTimeout(function() {lnks[choice].style.color = 'purple'}, 2000)
  120. }
  121. }
  122. }
  123. }, false)
  124. throw 'exit'
  125. }
  126. if(href.indexOf('#')==-1) { loc.href = loc.href + '#' }
  127. var imgs = []
  128. var wnd = unsafeWindow
  129. if(typeof wnd.Large_cgurl != 'undefined') { imgs = wnd.Large_cgurl } else { alert('Cannot find the image links.'); throw 'exit' }
  130. imgs.shift()
  131. load_imgs()
  132. }
  133. else if(/^http:\/\/.*?\.servik\.com\//.test(href))
  134. {
  135. if(href.indexOf('#')==-1) { loc.href = loc.href + '#' }
  136. var imgs = []
  137. href = href.replace(loc.hash, "")
  138. for(var i=1; i<=9; i++) { imgs[i] = href + '00' + i + '.jpg' }
  139. for(var i=10; i<=99; i++) { imgs[i] = href + '0' + i + '.jpg' }
  140. for(var i=100; i<=999; i++) { imgs[i] = href + '' + i + '.jpg' }
  141. imgs.shift()
  142. load_imgs()
  143. }