Mercurial > ec-userscripts
view surugaya-fixes.user.js @ 114:817b62848b27
Backed out changeset 055f5d084706
author | nanaya <me@nanaya.net> |
---|---|
date | Sun, 15 Jan 2023 23:43:40 +0900 |
parents | ef21ef445fc6 |
children |
line wrap: on
line source
// ==UserScript== // @name suruga-ya fixes // @namespace https://nanaya.net // @version 2.0.2 // @description Show all products with fast image // @author nanaya // @match https://www.suruga-ya.jp/* // @grant none // @downloadURL https://hg.nanaya.net/ec-userscripts/raw-file/tip/surugaya-fixes.user.js // ==/UserScript== 'use strict'; // always inject adult consent cookie function alwaysConsent () { 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 directImage () { const itemImageRegexp = /photo\.php\?shinaban=([0-9A-Z]+)/; 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].toLowerCase()}.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); } alwaysConsent(); directImage();