Tumblr Images to HD Redirector

Automatically promotes Tumblr image links to raw HD versions

Pasang skrip ini?
Sugesti pemilik skrip

Kamu mungkin juga suka Tumblr HD Video Download Buttons.

Pasang skrip ini
// ==UserScript==
// @name         Tumblr Images to HD Redirector
// @namespace    TumblrImgReszr
// @description  Automatically promotes Tumblr image links to raw HD versions
// @version      2.5
// @author       Kai Krause <kaikrause95@gmail.com>
// @include      /^https?://.+\.media\.tumblr\.com.+?(jpe?g|png|bmp|gif)/
// @grant        GM_xmlhttpRequest
// @connect      tumblr.com
// @connect      s3.amazonaws.com
// @run-at       document-start
// ==/UserScript==

var imageSizes = ['raw', '1280', '540', '500', '400', '250', '100'];

function checkSize(i) {
	i = i || 0;
	var loc = location.origin + location.pathname;
	var imageSize = loc.match(/\d+(?=.\w+$)/)[0];
	var imageType = "." + loc.match(/[^.]*$/)[0];
	var imageSizeType = imageSize + imageType;

	// Do not redirect if already HD
	if (i > imageSizes.length || parseInt(imageSize) >= parseInt(imageSizes[i]) || loc.includes('_raw')) {
		document.body.style.cursor = "";
		return;
	}

	document.body.style.cursor = "progress"; // Show loading cursor

	// Create the HD image url
	var imageNextSizeType = imageSizes[i] + imageType;
	if (imageSizes[i] == 'raw') {
		loc = loc.replace(/[^/]*media.tumblr.com/, 's3.amazonaws.com/data.tumblr.com');
		loc = loc.replace(imageSizeType, imageNextSizeType);
	} else {
		loc = loc.replace(imageSizeType, imageNextSizeType);
	}

	// If the URL is HTTP, change it to HTTPS
	if (!loc.startsWith('https://')) {
		loc = loc.replace(/^http/, 'https');
	}

	// Check that the HD image exists, then redirect to it
	GM_xmlhttpRequest({
		url: loc,
		method: 'HEAD',
		onload: function(response) {
			if (response.status == '200') {
				location.replace(loc);
			} else {
				checkSize(i+1);
			}
		},
		onerror: function (error) {
			checkSize(i+1);
		}
	});
}
checkSize();