TryToLoadBigImageAutomatically

Automatically try to show big image instead of original preview.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name        TryToLoadBigImageAutomatically
// @namespace   mnts
// @description Automatically try to show big image instead of original preview.
// @include     http://anime-pictures.net?*
// @include     *://*anime-pictures.*/*
// @include     http?://anime.reactor.cc/tag/?*
// @include     *://*anime.reactor.*/tag/*
// @include     http?://zerochan.net/?*
// @include     *://*zerochan.*/*
// @include     http?://otakumode.com/?*/post/?*
// @include     *://*otakumode.*/*/post/*
// @include     http?://?*.?*/?*
// @include     *://*.*/*
// @version     1.4
// @grant       none
// allow pasting
// ==/UserScript==

function tryAnimePictures()
{ //anime-pictures.net
    var asPreview = document.getElementById('big_preview_cont');
    if (asPreview === undefined || asPreview === null) return false;
    var aPreview = asPreview.getElementsByTagName('a')[0];
    if (aPreview === undefined || asPreview === null) return false;
    var bigImgUrl = aPreview.getAttribute('href');
    if (bigImgUrl !== undefined && bigImgUrl !== "") {
        var imgPreview = aPreview.getElementsByTagName('img')[0];
        if (imgPreview === undefined || imgPreview === null) return false;
        imgPreview.setAttribute('width', imgPreview.width);
        imgPreview.removeAttribute('height');
        imgPreview.setAttribute('src', '');
        imgPreview.setAttribute('src', bigImgUrl);
    }
    return true;
}

function tryAnimeReactorCC()
{ //anime.reactor.cc
    var asPreview = document.getElementsByClassName('prettyPhotoLink');
    var result = false;
    for (var i = 0; i < asPreview.length; i++) {
        result = true;
        var a = asPreview[i];
        var urlBigImg = a.getAttribute('href');
        var img = a.getElementsByTagName('img')[0];
        img.setAttribute('width', img.width);
        img.removeAttribute('height');
        img.setAttribute('src', '');
        img.setAttribute('src', urlBigImg);
    }
    return result;
}

function tryZerochan()
{ //zerochan.net
    var divPreview = document.getElementById('large');
    if (divPreview === undefined || divPreview === null) return false;
    var aPreview = divPreview.getElementsByTagName('a')[0];
    if (aPreview === undefined || aPreview === null) return false;
    var imgPreview = aPreview.getElementsByTagName('img')[0];
    if (imgPreview === undefined || imgPreview === null) return false;
    var urlFull = aPreview.getAttribute('href');
    if (urlFull.length <= 0) return false;
    imgPreview.setAttribute('width', imgPreview.width);
    imgPreview.removeAttribute('height');
    imgPreview.setAttribute('src', '');
    imgPreview.setAttribute('src', urlFull);
    return true;
}

function tryOtakumode()
{ //otakumode.com
    var className = 'first nomenu nodraggable';
    var imgsPreview = document.getElementsByClassName(className);
    if (imgsPreview === undefined || imgsPreview === null) return false;

    var countPreview = 0;
    var divContents = document.getElementById('contents');
    if (divContents === undefined || divContents === null) return false;

    divContents.addEventListener('DOMSubtreeModified', function() {
        var imgsPreview = document.getElementsByClassName(className);
        if (imgsPreview === undefined || imgsPreview === null) return;
        if (countPreview === imgsPreview.length) return;
        countPreview = imgsPreview.length;

        var exprPass = ".*x\.jpg$";
        for (var i = 0; i < imgsPreview.length; i++) {
            var imgPreview = imgsPreview[i];
            var urlImage = imgPreview.getAttribute('src');
            if (urlImage.match(exprPass) === null) {
                var ext = '.jpg';
                var urlImageBig = urlImage.substring(0, urlImage.length - ext.length) + 'x' + urlImage.substring(urlImage.length - ext.length);
                imgPreview.setAttribute('width', imgPreview.width);
                imgPreview.removeAttribute('height');
                imgPreview.setAttribute('src', '');
                imgPreview.setAttribute('src', urlImageBig);
            }
        }
    });

    return true;
}

function allHrefToSrc()
{
    console.log('window.onload');
    var imgs = document.getElementsByTagName('img');
    var expr = '.*\.(jpg|jpeg|png)$';

    for (var i = 0; i < imgs.length; i++) {
        var img = imgs[i];
        var nodeParent = img.parentNode;
        if (nodeParent.tagName !== 'A') continue;

        var src = img.getAttribute('src');
        var href = nodeParent.getAttribute('href');
        if (src === href) continue;

        if (href.match(expr) !== null) {
            img.setAttribute('width', img.width);
            img.removeAttribute('height');
            img.setAttribute('src', '');
            img.setAttribute('src', href);
        }
    }
}

function tryCommon()
{ //*.*
    var body = document.getElementsByTagName('body')[0];
    if (body === undefined || body == null) return false;

    var countImg = 0;
    window.onload = function() {
        allHrefToSrc();
    };
    body.addEventListener('DOMSubtreeModified', function() {
        var imgs = document.getElementsByTagName('img');
        if (countImg === imgs.length) return;
        countImg = imgs.length;

        console.log('DOMSubtreeModified');
        allHrefToSrc();
    });
    return true;
}

if (tryAnimePictures()) {
    console.log('type: anime-pictures.net');
} else if (tryAnimeReactorCC()) {
    console.log('type: anime.reactor.cc');
} else if (tryZerochan()) {
    console.log('type: zerochan.net');
} else if (tryOtakumode()) {
    console.log('type: otakumode.com');
} else {
    console.log('type: http?://.*\..*/.*');
    tryCommon();
}