changes thumbnail href to full images in galleries on ImageFap, fixing option for those that don't fit pattern, useful for mouseover addons
As of
// ==UserScript==
// @name ImageFap picture fixer
// @namespace http://tampermonkey.net/
// @version 0.1
// @description changes thumbnail href to full images in galleries on ImageFap, fixing option for those that don't fit pattern, useful for mouseover addons
// @author You
// @match https://www.imagefap.com/pictures/*
// @grant https://code.jquery.com/jquery-2.2.4.js
// ==/UserScript==
/*
let cache = {};
Array.from(document.querySelectorAll("font")).filter(el => el.color==="#000000" && el.face==="verdana").forEach((el, i) => cache[i] = el.parentNode.parentNode.parentNode.parentNode.children[0].children[0].children[0].children[0].href);
*/
let uploaderText;
Array.prototype.forEach.call(document.querySelectorAll("b"), function(el) {if (el.innerText.includes("Uploaded by ")) uploaderText = el.innerText.slice(12, el.innerText.length);});
Array.from(document.querySelectorAll("a")).forEach(function(el) {
if (el.href.split("/")[3] === "photo" && el.parentNode.parentNode.parentNode.children[1].children[0].children[1].innerText.slice(-3) !== "...") {
el.href = "https://x.imagefapusercontent.com/u/" + uploaderText + "/" + window.location.href.split("/")[4] + "/" + el.href.split("/")[4] + "/" + el.parentNode.parentNode.parentNode.children[1].children[0].innerText;
}
});
Array.from(document.querySelectorAll("font")).filter(el => el.color==="#000000" && el.face==="verdana").forEach(el => el.innerHTML += `<br><span class='fixImg'>${el.parentNode.children[1].innerText.slice(-3) === "..." ? "Click here to fix." : "Fixed!"}</span>`);
Array.from(document.getElementsByClassName("fixImg")).forEach((el, i) => el.addEventListener("click", function(e) {
el.innerText = "Fixing...";
//console.log("url", cache[i]);
$.ajax({
type: "GET",
url: cache[i],
success: function(data) {
let newURL = data.match(/https:\/\/x\.imagefapusercontent\.com\/u\/\w+\/\d+\/\d+\/^[.]+\.\w+/);
if (newURL === null) el.innerText = "Sorry, error!";
else {
el.parentNode.parentNode.parentNode.parentNode.children[0].children[0].children[0].href = newURL;
el.innerText = "Fixed!";
}
},
error: function(data) {
el.innerText = "Error (hover for info).";
el.title = data;
}
});
}));