Mercurial > ec-userscripts
view surugaya-fixes.user.js @ 105:6b354277f2d1
[surugaya-fixes] faster image load
author | nanaya <me@nanaya.net> |
---|---|
date | Sun, 08 Jan 2023 00:02:28 +0900 |
parents | 86da34e62d29 |
children | 42fbeb68c0e5 |
line wrap: on
line source
// ==UserScript== // @name suruga-ya fixes // @namespace https://myconan.net // @version 2.0.0 // @description Show all products with fast image // @author nanaya // @match https://www.suruga-ya.jp/* // @grant none // @downloadURL https://hg.myconan.net/ec-userscripts/raw-file/tip/surugaya-fixes.user.js // ==/UserScript== 'use strict' // always inject adult consent cookie ;(function () { const hasAdultCookie = document.cookie.split('; ').includes('adult=1') if (!hasAdultCookie) { const d = new Date() d.setTime(d.getTime() + (100 * 24 * 60 * 60 * 1000)) document.cookie = `adult=1; expires=${d.toGMTString()}; path=/` window.location.reload() } })() // skip loading image through php which seems to take forever ;(function () { const itemImageRegexp = /photo\.php\?shinaban=(\d+)/ function fix (image) { const origSrc = image.getAttribute('src') if (origSrc == null) return const found = origSrc.match(itemImageRegexp) if (found == null) return const src = `https://www.suruga-ya.jp/database/pics_light/game/${found[1]}.jpg` const setNotFound = () => { image.removeEventListener('error', setNotFound) image.setAttribute('src', 'https://www.suruga-ya.jp/database/images/no_photo.jpg') } image.addEventListener('error', setNotFound) image.setAttribute('src', src) } function run (node) { if (!(node instanceof window.HTMLElement)) return fix(node) for (const image of node.querySelectorAll('img')) { fix(image) } } function onMutate (mutations) { for (const mutation of mutations) { for (const node of mutation.addedNodes) { run(node) } } } const observer = new window.MutationObserver(onMutate) observer.observe(document, { childList: true, subtree: true }) run(document.body) })()