ImageFap picture fixer

changes thumbnail href to full images in galleries on ImageFap, fixing option for those that don't fit pattern, useful for mouseover addons

Fra 14.11.2018. Se den seneste versjonen.

// ==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;
    }
  });
}));