EcuaMobi / Bitcointalk images

// ==UserScript==
// @name        Bitcointalk images
// @namespace   ecuamobi
// @author			EcuaMobi
// @description	Makes images load faster by using rsz.io as proxy and reduces big images to improve readability 
// @include     https://bitcointalk.org/index.php?topic=*
// @include			https://bitcointalk.org/index.php?action=profile;u=*;sa=showPosts
// @include			https://bitcointalk.org/index.php?action=profile;threads;u=*;sa=showPosts
// @require     https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js
// @version     0.1
// @license 		MIT
// @grant 			none
// ==/UserScript==
(() => {
    // Max allowed size
    const MAX_WIDTH = 600;
    const MAX_HEIGHT = 400;

    $('img[src*="https://ip.bitcointalk.org/?u="]')
        .each((i, e) => {
            // rsz.io proxy
            const image = 'https://rsz.io/' + new URL(e.src).searchParams.get("u").replace("http://", "").replace("https://", "").replace("ftp://", "");
            // Preload full image
            const preload = $('<span style="position: absolute; visibility: hidden;"><img /></span>').insertBefore(e);
      			preload.children().on('load', function() {preload.children().toggle(false)} ).attr("src", image);
            // Replace SRC
      			const imageMini = image + '?w=' + MAX_WIDTH + '&h=' + MAX_HEIGHT + '&mode=max&scale=down';
            e.src = imageMini;
            // Remove with & height
            e.removeAttribute('width');
            e.removeAttribute('heigth');
            // Show the full image on hover
            $(e).mouseenter(function() {
                e.src = image;
            }).mouseleave(function() {
                e.src = imageMini;
            });
        });
})();