- // ==UserScript==
- // @name Auto Load Big Image
- // @version 1.6
- // @description Auto expand image width height quality for image urls with custom sizes.
- // @author navchandar
- // @match http*://*/*
- // @exclude http*:*guim.co*/*
- // @grant none
- // @license MPL-2.0
- // @run-at document-start
- // @homepage https://navchandar.github.io/
- // @homepage https://github.com/navchandar/
- // @homepageURL https://navchandar.github.io/
- // @contributionURL https://paypal.me/navchandar
- // @contributionAmount $1.00
- // @copyright 2019, navchandar (https://github.com/navchandar)
- // @supportURL https://openuserjs.org/scripts/navchandar/Auto_Load_Big_Image/issues
- // @setupURL https://openuserjs.org/install/navchandar/Auto_Load_Big_Image.user.js
- // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAKElEQVQ4jWNgYGD4Twzu6FhFFGYYNXDUwGFpIAk2E4dHDRw1cDgaCAASFOffhEIO3gAAAABJRU5ErkJggg==
- // @namespace https://gf.qytechs.cn/users/302262
- // ==/UserScript==
-
- function isNum(num) {
- return !isNaN(num)
- }
-
- function getNum(text) {
- return parseInt(text.replace(/[^0-9\.]/g, ''), 10);
- }
-
- function Load(uri) {
- window.location.href = uri
- }
-
- function has(String, search) {
- try {
- if (String.indexOf(search) > -1) {
- return true;
- }
- }
- catch (err) {}
- return false;
- }
-
- function getRegexMatch(String, regex) {
- var finalText = "";
- try {
- var arr = String.match(regex);
- if (arr != null && arr.length >= 1) {
- finalText = arr[0];
- }
- }
- catch (err) {}
- return finalText;
- }
-
- function widthUpdate(uri, w) {
- if (has(uri, w)) {
- var res = uri.split(w);
- if (res.length == 2) {
- if (res[1] != "10000" && isNum(res[1])) {
- var newuri = res[0] + w + "10000";
- Load(newuri);
- }
- }
- }
- }
-
- function sizeUpdate(uri, w) {
- if (has(uri, w)) {
- var res = uri.split(w);
- if (res.length == 2) {
- var end = "";
- var width = "";
- if (has(res[1], "&")) {
- var arr = res[1].split("&");
- for (var i = 1; i < arr.length; i++) {
- end += "&" + arr[i];
- }
- width = arr[0]
- }
- else {
- width = res[1]
- }
- if (width != "6000" && isNum(width)) {
- var newuri = res[0] + w + "6000" + end;
- Load(newuri);
- }
- }
- }
- }
-
- function WidthandHeightUpdate(uri, format, width, height) {
- if (has(uri, format) && has(uri, width) && has(uri, height)) {
- var res1 = uri.split(width);
- if (res1.length == 2) {
- var res2 = res1[1].split(height);
- if (res2.length == 2) {
- if (res2[0] != "6000" && isNum(res2[0]) && isNum(res2[1])) {
- var w = getNum(res2[0]);
- var h = getNum(res2[1]);
- var newh = parseInt((h / w) * 6000);
- var newuri = res1[0] + width + "6000" + height + newh;
- Load(newuri);
- }
- else {
- if (res2[0] != "6000" && has(res2[1], "&") && (has(res2[1], "quality=") || has(res2[1], "q="))) {
- var qual = "";
- if (has(res2[1], "quality=")) {
- qual = "&quality=";
- }
- if (has(res2[1], "q=")) {
- qual = "&q=";
- }
- var res3 = res2[1].split(qual);
- if (res3.length >= 2 && isNum(res2[0]) && isNum(res3[0]) && isNum(res3[1])) {
- w = getNum(res2[0]);
- h = getNum(res3[0]);
- newh = parseInt((h / w) * 6000);
- newuri = res1[0] + width + "6000" + height + newh + qual + "100";
- Load(newuri);
- }
- }
- }
- }
- }
- }
- }
-
- function HeightandWidthUpdate(uri, format, height, width) {
- if (has(uri, format) && has(uri, width) && has(uri, height)) {
- var res1 = uri.split(height);
- if (res1.length == 2) {
- var res2 = res1[1].split(width);
- if (res2.length >= 2) {
- var end = "";
- var w = "";
- var h = res2[0];
- if (has(res2[1], "&")) {
- var arr = res2[1].split("&");
- for (var i = 1; i < arr.length; i++) {
- end += "&" + arr[i];
- }
- w = arr[0]
- }
- else {
- w = res2[1]
- }
- if (w != "6000" && isNum(w) && isNum(h)) {
- var w1 = getNum(w);
- var h1 = getNum(h);
- var newh = parseInt((h1 / w1) * 6000);
- var newuri = res1[0] + height + newh + width + "6000" + end;
- Load(newuri);
- }
- }
- }
- }
- }
-
- function QualityUpdate(uri, format, start, end) {
- if (has(uri, format) && has(uri, start) && has(uri, end)) {
- var res1 = uri.split(start);
- if (res1.length >= 2 && has(res1[1], end)) {
- var res2 = res1[1].split(end);
- if (res2.length > 0 && res2[0] != 100 && isNum(res2[0])) {
- var newuri = uri.replace((start + res2[0] + end), (start + "100" + end));
- Load(newuri);
- }
- }
- }
- }
-
- function ReplaceCustomCrop(uri, format, regex, replacement) {
- if (has(uri, format)) {
- try {
- if (regex.test(uri)) {
- var newuri = uri.replace(regex, replacement);
- Load(newuri);
- }
- }
- catch (err) {}
- }
- }
-
- function UpdateCustomWidthandHeight(uri, format, regex) {
- if (has(uri, format)) {
- try {
- if (regex.test(uri)) {
- var res = getRegexMatch(uri, regex);
- var rep = res.replace("/", "");
- rep = rep.replace("/", "");
- if (has(rep, "x") && has(rep, ",")) {
- var res1 = rep.split("x");
- var res2 = res1[1].split(",");
- if (res1[0] != "6000" && res2.length >= 2 && isNum(res1[0]) && isNum(res2[0]) && isNum(res2[1])) {
- var w = getNum(res1[0]);
- var h = getNum(res2[0]);
- var newh = parseInt((h / w) * 6000);
- var replacement = "/" + 6000 + "x" + newh + ",100" + "/";
- var newuri = uri.replace(res, replacement);
- Load(newuri);
- }
- }
- }
- }
- catch (err) {}
- }
- }
-
- function CustomWidthandHeightUpdate(uri, width, height) {
- if (has(uri, width) && has(uri, height)) {
- var res1 = uri.split(width);
- var res2 = res1[1].split(height);
- if (isNum(res2[0]) && res2[0] != "6000") {
- var w = getNum(res2[0]);
- var h = getNum(res2[1].split("-")[0]);
- var res = width + w + height + h;
- var newh = parseInt((h / w) * 6000);
- var replacement = width + 6000 + height + newh;
- var newuri = uri.replace(res, replacement);
- if (uri != newuri) {
- Load(newuri);
- }
- }
- }
- }
-
- function DPRUpdate(uri, d) {
- if (has(uri, d)) {
- var res = uri.split(d);
- if (isNum(res[1]) && res[1] < 3) {
- var newuri = res[0] + d + "3";
- Load(newuri);
- }
- else if (!isNum(res[1]) && has(res[1], "&")) {
- var res2 = res[1].split("&")[0];
- if (isNum(res2) && res2 < 3) {
- newuri = uri.replace((d + res2), (d + "3"));
- Load(newuri);
- }
- }
- }
- }
-
- function main(uri, format) {
-
- if (has(uri, "image/upload/")) {
- ReplaceCustomCrop(uri, "." + format, /q\_auto\//g, "q_auto:best/");
- ReplaceCustomCrop(uri, "." + format, /f\_auto\,|fl\_lossy\,|c\_limit\,/g, "");
- ReplaceCustomCrop(uri, "." + format, /upload\/[hw]\_\d+\,[hw]\_\d+\//g, "upload/");
- }
-
- if (has(uri, "wiki")) {
- ReplaceCustomCrop(uri, ".svg", /thumb\/|\/\d+px[-]?\w+(.)*.svg(.)*/g, "");
- ReplaceCustomCrop(uri, ".jpg", /thumb\/|\/\d+px[-]?\w+(.)*.jpg(.)*/g, "");
- ReplaceCustomCrop(uri, ".png", /thumb\/|\/\d+px[-]?\w+(.)*.png(.)*/g, "");
- ReplaceCustomCrop(uri, "." + format, /\/zoom\-crop\/(.)*/g, "");
- }
- if (has(uri, "blogspot") && !has(uri, "/s6000/")) {
- ReplaceCustomCrop(uri, "." + format, /\/s\d+\//g, "/s6000/");
- }
- if (has(uri, "twimg") && !has(uri, "video")) {
- ReplaceCustomCrop(uri, format, /\_normal\./g, ".");
- if (has(uri, "name")) {
- ReplaceCustomCrop(uri, format, /\?format\=jpg\&name\=(.)*/g, "?format=png&name=large");
- ReplaceCustomCrop(uri, format, /\?format\=png\&name\=[^(large)(4)](.*)/g, "?format=png&name=large");
- ReplaceCustomCrop(uri, format, /\?format\=png\&name\=medium/g, "?format=png&name=large");
- }
- else if (has(uri, "format")) {
- ReplaceCustomCrop(uri, format, /\?format\=jp(.)*/g, "?format=png");
- }
- }
-
- if (has(uri, "usercontent")) {
- CustomWidthandHeightUpdate(uri, "=w", "-h");
- ReplaceCustomCrop(uri, format, /\?s\=\d+\&v\=\d+/g, "");
- }
-
- widthUpdate(uri, "." + format + "?w=");
- widthUpdate(uri, "." + format + "?width=");
- WidthandHeightUpdate(uri, "." + format + "?", "w=", "&h=");
- WidthandHeightUpdate(uri, "." + format + "?", "width=", "&height=");
-
- HeightandWidthUpdate(uri, "." + format + "?", "h=", "&w=");
- HeightandWidthUpdate(uri, "." + format + "?", "height=", "&width=");
-
- // Remove crops
- ReplaceCustomCrop(uri, "." + format, /\/\d+\,\d+\,\d+\,\d+\//g, "/");
- ReplaceCustomCrop(uri, "." + format, /\?crop=\d+\%\d\w\d+\%\d\w\w+\%\w+/g, "");
- ReplaceCustomCrop(uri, "." + format, /\?crop=\d+\%3A\d+|\?crop=\d+\:\d+/g, "");
- ReplaceCustomCrop(uri, "." + format, /thumbor\/\d+x\d+\//g, "thumbor/origxorig/");
- if (!has(uri, "%2F2000")) {
- ReplaceCustomCrop(uri, "." + format, /\%2F\d+x0.jpg/g, "%2F2000x0.jpg");
- }
- if (!has(uri, "/2000")) {
- ReplaceCustomCrop(uri, "." + format, /\/\d+x0.jpg/g, "/2000x0.jpg");
- }
-
- // Remove Blur and bring original
- if (has(uri, '.it/') && has(uri, 'blur') && !has(uri, 'external-preview.')) {
- if (has(uri, '?blur')) {
- ReplaceCustomCrop(uri, format, /\?blur\=(.)*/g, "");
- }
- else if (has(uri, '?width=')) {
- ReplaceCustomCrop(uri, format, /\?width\=(.)*/g, "");
- }
- if (has(uri, 'preview.')) {
- ReplaceCustomCrop(uri, format, /preview/, "i");
- }
- }
-
- // Remove watermark
- ReplaceCustomCrop(uri, format, /\&mark64\=(.)*/g, "");
- // Auto Enhance
- ReplaceCustomCrop(uri, format, /auto\=compress/g, "auto=enhance");
- ReplaceCustomCrop(uri, format, /\&cs\=tinysrgb/g, "");
-
- UpdateCustomWidthandHeight(uri, "." + format, /\/\d+\x\d+\,\d+\//g);
-
- QualityUpdate(uri, "." + format, "/q_", "/");
- QualityUpdate(uri, "." + format, "/x,", "/");
- QualityUpdate(uri, format, "&q=", "&");
-
- sizeUpdate(uri, "." + format + "?size=");
- DPRUpdate(uri, "&dpr=");
-
- }
-
- (function () {
- 'use strict';
- var uri = window.location.href;
- if (has(uri, "jpg")) {
- main(uri, "jpg");
- }
- else if (has(uri, "png")) {
- main(uri, "png");
- }
- else if (has(uri, "jpeg")) {
- main(uri, "jpeg");
- }
- else if (has(uri, "webp")) {
- main(uri, "webp");
- }
- else if (has(uri, "usercontent.com")) {
- main(uri, "usercontent");
- }
-
- })();