Resizes thumbnails on e621.net and replaces them with hi-rez version. Modified for the new site design sometime around 2020-03-06
当前为
// ==UserScript==
// @name e621 Thumbnail Enhancer 2
// @version 1.07
// @description Resizes thumbnails on e621.net and replaces them with hi-rez version. Modified for the new site design sometime around 2020-03-06
// @author justrunmyscripts
// @include *://*e621.net*
// @grant GM.xmlHttpRequest
// @namespace https://sleazyfork.org/en/users/96703-justrunmyscripts
// @run-at document-end
// ==/UserScript==
// original script creator https://greasyfork.org/de/users/398891
// to edit the size of the thumbnails, change the 25vw values below (the ones marked with !important... ;D )
try {
let isMyAbsoluteFavoritePath = window.location.toString().endsWith('/favorites');
let postContainerHash = isMyAbsoluteFavoritePath ? '#posts' : '#posts-container';
let sty =document.createElement("style");
sty.innerHTML=[
""
,".thumbEnh_cont {"
," display: flex;"
," flex-flow: row wrap;"
,"}"
,".thumbEnh_cont img.thumbEnh_img {"
," max-height: 100%;"
," max-width: 100%;"
,"}"
,".thumbEnh_cont video.thumbEnh_video {"
," height: 100%;"
," width: 100%;"
,"}"
,"article.post-preview {"
," height: 25vw !important;"
," width: 25vw !important;"
,"}"
,"article.post-preview > a, article.post-preview > a > picture {"
," height: 94%;"
," width: 100%;"
,"}"
].join("");
document.head.appendChild(sty);
/* Replace image thumbnails with higher resolution */
class ImageFetcher {
constructor (originalArticle) {
this.nrTries = 0;
this.parentArticle = originalArticle;
this.originalImage = originalArticle.querySelector('img');
this.origSrc = this.originalImage.src;
this.originalImage.className = "thumbEnh_img";
if (this.isWebm()) {
this.replaceImageWithVideo();
}
else if (this.hasLargeFile()){
this.originalImage.src = this.getLargeFileURL();
} else {
this.originalImage.src = this.getOrigFileURL();
}
}
hasLargeFile() {
return !!this.getLargeFileURL();
}
isWebm() {
return !!this.getOrigFileURL().endsWith('.webm');
}
getLargeFileURL() {
return this.parentArticle.getAttribute('data-large-file-url');
}
getOrigFileURL() {
return this.parentArticle.getAttribute('data-file-url');
}
replaceImageWithVideo() {
const video = document.createElement('video');
video.setAttribute('controls', true);
video.setAttribute('class', 'thumbEnh_video');
video.setAttribute('src', this.getOrigFileURL());
const parent = this.originalImage.parentNode;
parent.replaceChild(video, this.originalImage)
}
}
const main = () => {
let contDiv = document.querySelector(postContainerHash);
contDiv.className = "thumbEnh_cont";
let arts = document.querySelectorAll('article.post-preview');
for (art of arts) {
new ImageFetcher(art);
}
// remove extra sources, since we're just using the "high rez" version anyways!
let sources = document.querySelectorAll('article.post-preview source');
for (source of sources) {
let parent = source.parentNode;
parent.removeChild(source);
}
};
main();
} catch (e) {
// due to the way greasemonkey 'traps' errors, it kinda hides where the problem is!
// this is an attempt at "fixing" that
console.error(e);
}