Greasy Fork is available in English.
Display original images straight from the illustration page. No need to open the "manga" page.
当前为
// ==UserScript==
// @name Pixiv Display Original Images
// @namespace superschwul
// @version 0.2
// @description Display original images straight from the illustration page. No need to open the "manga" page.
// @author Superschwul
// @match https://www.pixiv.net/stacc*
// @match https://www.pixiv.net/member_illust.php?mode=medium*
// @grant GM_xmlhttpRequest
// ==/UserScript==
// posted on http://greasyfork.icu/en/scripts/36886-pixiv-display-original-images
function addLinkToWorksPageAtStaccPage() {
var usernames = document.getElementsByClassName('stacc_ref_illust_user_name');
for(i=0; i < usernames.length; i++) {
usernames[i].style.display = 'block';
var a = document.createElement('a');
var linkText = document.createTextNode("Go to Works page");
var userUrl = usernames[i].getElementsByTagName('a')[0].href;
a.appendChild(linkText);
a.href = userUrl.replace('member', 'member_illust');
a.target = '_blank';
usernames[i].appendChild(a);
a.style.display = 'block';
}
}
function displayGalleryAtIllustrationPage() {
// override css
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = `
body {
background: #e4e7ee !important;
}
#wrapper {
/* force recommendation box to fit available width */
margin: 10px 0 0 calc((100vw - 970px - 182px) / 2) !important;
}
#pil_gallery {
padding: 3em;
font-size: 130%;
text-align: center;
}
#pil_gallery img {
display: block;
margin: 0 auto 3em auto;
max-width: 100%;
height: auto;
background: #dcdbdb;
}
`;
document.getElementsByTagName('head')[0].appendChild(style);
//is it a single image, multiple vertical, or multiple rtl?
var type = 'single';
var thumb = document.getElementsByClassName('works_display')[0].children[0];
if(thumb.tagName == 'A') {
type = 'vertical';
if(thumb.className.includes('rtl')) {
type = 'rtl';
}
}
//get original images and fill gallery
if(type == 'single') {
getSingleOriginalImage();
} else if(type == 'rtl') {
getMultipleRtlOriginalImages();
} else {
getMultipleVerticalOriginalImages();
}
}
function getSingleOriginalImage() {
var modal = document.getElementsByClassName('_illust_modal')[0].children[0];
var images = modal.getElementsByTagName('img');
images[0].src = images[0].dataset.src;
fillGallery(images);
}
function getMultipleVerticalOriginalImages() {
var url = window.location.href.replace('medium', 'manga');
GM_xmlhttpRequest ({
method: 'GET',
url: url,
onload: function(responseObj) {
var images = [];
var parser = new DOMParser();
var responseDoc = parser.parseFromString(responseObj.responseText, "text/html");
var imageContainers = responseDoc.getElementsByClassName('item-container');
for(i=0; i < imageContainers.length; i++) {
var image = imageContainers[i].getElementsByTagName('img')[0];
image.src = image.dataset.src;
images.push(image);
}
fillGallery(images);
}
});
}
function getMultipleRtlOriginalImages() {
var url = window.location.href.replace('medium', 'manga');
GM_xmlhttpRequest ({
method: 'GET',
url: url,
onload: function(responseObj) {
var images = [];
var parser = new DOMParser();
var responseDoc = parser.parseFromString(responseObj.responseText, "text/html");
var scriptTags = responseDoc.getElementsByTagName('script');
for(i=0; i < scriptTags.length; i++) {
if(scriptTags[i].textContent.includes('pixiv.context.images[')) {
var imageVar = scriptTags[i].textContent.split(';')[0];
var imageUrl = imageVar.split('"')[1].replace('\\', '');
var image = document.createElement('img');
image.src = imageUrl;
images.push(image);
}
}
fillGallery(images);
}
});
}
function fillGallery(images) {
var gallery = document.createElement('div');
gallery.id = 'pil_gallery';
for(i=0; i < images.length; i++) {
var p = document.createElement('p');
i++;
var pText = document.createTextNode('Image ' + i + ' of ' + images.length);
i--;
p.appendChild(pText);
gallery.appendChild(p);
gallery.appendChild(images[i]);
}
var header = document.getElementsByClassName('_global-header')[0];
header.parentNode.insertBefore(gallery, header.nextSibling);
}
(function() {
'use strict';
// run on stacc page
if(window.location.href.includes('stacc')) {
addLinkToWorksPageAtStaccPage();
}
// run on illustration page
if(window.location.href.includes('medium')) {
displayGalleryAtIllustrationPage();
}
})();