// ==UserScript== // @name Pixiv Replace With Original // @namespace https://blog.maple3142.net/ // @version 0.2 // @description Replace Pixiv image with original image // @author maple3142 // @match https://www.pixiv.net/member_illust.php?mode=medium&illust_id=* // @match https://www.pixiv.net/member_illust.php?mode=manga&illust_id=* // @run-at document-start // @grant unsafeWindow // @downloadURL none // ==/UserScript== (function() { 'use strict' const $=s=>document.querySelector(s) const $$=s=>[...document.querySelectorAll(s)] const params=new URLSearchParams(location.search) const mode=params.get('mode') if(mode==='medium'){ const PREFIX=Math.random().toString(36) Object.defineProperty(Object.prototype,'props',{ set(v){ this[PREFIX+'_props']=v if(v.urls)onTarget(this) }, get(v){ return this[PREFIX+'_props'] } }) function onTarget(target){ const url=target.props.urls.original target.props.urls=new Proxy({},{ get: ()=>url }) } } else if(mode==='manga'){ const id=params.get('illust_id') const p=fetch(`/ajax/illust/${id}`,{ credentials: 'same-origin' }).then(r=>r.json()).then(r=>r.body).then(data=>{ const url=data.urls.original const ar=[] for(let i=0;i{ p.then(ar=>{ const imgs=$$('img.image') console.log(imgs,ar) for(let i=0;i