Image scroller for a certain suspicious site

By Antonio Cheong on on Permalink.

To be used with Tampermonkey

;(function () {
  let target = '#image-container'
  let ic = $('#image-container')
  let num = parseInt($('span.num-pages').first().text())
  let img = ic.find('img')
  let src = img.attr('src')
  let base = src.slice(0, src.lastIndexOf('/') + 1)
  let width = img.attr('width')
  let height = img.attr('height')
  let start =
    parseInt(window.location.pathname.slice(0, -1).split('/').pop()) + 1
  let extensions = ['jpg', 'png', 'webp']
  let cachedExtension = null

  function insertImage(base, i, img) {
    let url = base + (i - 1).toString()
    let extension = $(img).attr('src').split('.').pop()

    if ($(target).find(`img[src$="${url}.${extension}"]`).length > 0) {
      $(`img[src$="${url}.${extension}"]`).after($(img))
    } else {
      $(img).appendTo(target)
    }
  }

  function loadImage(base, i, width, height) {
    function tryExtension(index) {
      let extension = extensions[index]
      let url = base + i.toString() + '.' + extension
      let img = $('<img>').attr('src', url)
      img.one('load', function () {
        cachedExtension = extension
        extensions.unshift(extensions.splice(index, 1)[0])
        insertImage(base, i, this)
      })
      img.one('error', function () {
        if (index < extensions.length - 1) {
          tryExtension(index + 1)
        }
      })
    }

    tryExtension(0)
  }

  for (let i = start; i <= num; i++) {
    window.setTimeout(
      function () {
        loadImage(base, i, width, height)
      },
      750 * (i - start)
    )
  }
})()

Clicker on thumbnails for other site

const interval = setInterval(() => {
  const thumbs = document.getElementsByClassName('fileThumb')
  console.log(thumbs)
  if (thumbs.length > 0) {
    for (let i = 0; i < thumbs.length; i++) {
      thumbs[i].click()
    }
    clearInterval(interval)
  }
}, 500)

Fix scroll on sites that disable it (for ad reasons)

// Remove inline onscroll handlers
window.onscroll = null
document.onscroll = null

// Override addEventListener to block new scroll listeners
const origAddEventListener = EventTarget.prototype.addEventListener
EventTarget.prototype.addEventListener = function (type, listener, options) {
  if (type === 'scroll') return
  return origAddEventListener.call(this, type, listener, options)
}

// Remove CSS that disables scrolling
document.body.style.overflow = 'auto'
document.documentElement.style.overflow = 'auto'

// Remove scroll-blocking event handlers on body
;['touchmove', 'wheel', 'mousewheel'].forEach(evt => {
  window.addEventListener(evt, e => e.stopImmediatePropagation(), true)
  document.addEventListener(evt, e => e.stopImmediatePropagation(), true)
})