// ==UserScript== // @name Pixiv Old Manga Viewer // @namespace d24193d9-3b5f-43d8-a625-49e32c476534 // @description Rewrite new style manga view to be more like the old style, uses full size images. // @version 1.0.19 // @author ixzkn // @icon https://www.pixiv.net/favicon.ico // @include https://www.pixiv.net/member_illust.php?mode=* // @run-at document-start // @downloadURL https://update.greasyfork.icu/scripts/371719/Pixiv%20Old%20Manga%20Viewer.user.js // @updateURL https://update.greasyfork.icu/scripts/371719/Pixiv%20Old%20Manga%20Viewer.meta.js // ==/UserScript== (function() { // Config: Always just go straight to the manga page (even in medium mode) var alwaysLoadManga = false; // use original size images or 1200 size var useOriginalImageSize = true; 'use strict'; document.addEventListener('DOMContentLoaded', function() { if(globalInitData == undefined) { return false; } function apply(){ function getProp(obj){ for (var i in obj){if(obj.hasOwnProperty(i)){return i;}} } // using Pixiv's own globalInitData, reconstruct all of the full URLs of the // manga's images function allFullURLs(original){ let tzoffset = 9; // pixiv's timezone offset let baseurl = original ? "https://i.pximg.net/img-original/img/" : "https://i.pximg.net/img-master/img/"; let filepostfix = original ? "" : "_master1200"; function pad(n, width, z) { z = z || '0'; n = n + ''; return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n; } function fileType(url) { return url.substring(url.lastIndexOf(".")) } // derive the image list from init data: // could also derive from original url function pixivOriginalURL(createDate,id,page,url){ let d = new Date((new Date(createDate)).getTime() + (3600000*tzoffset)); let durl = d.getUTCFullYear() + "/" + pad(d.getUTCMonth()+1,2,"0") + "/" + pad(d.getUTCDate(),2,"0") + "/" + pad(d.getUTCHours(),2,"0") + "/" + pad(d.getUTCMinutes(),2,"0") + "/" + pad(d.getUTCSeconds(),2,"0") + "/"; return baseurl + durl + id + "_p" + page + filepostfix + fileType(url); } var id = getProp(globalInitData.preload.illust); var pages = globalInitData.preload.illust[id].pageCount; var results = []; var urlBase = original ? globalInitData.preload.illust[id].urls.original : globalInitData.preload.illust[id].urls.regular; for(var i = 0; i < pages; i++) { results.push(pixivOriginalURL(globalInitData.preload.illust[id].uploadDate,id,i,urlBase)); } return results; } let user = getProp(globalInitData.preload.user); var images = allFullURLs(useOriginalImageSize); var imagesOrig = allFullURLs(true); var result = `