View Twitter Origin Images

將新版推特的圖片轉為原畫質版本,並可以從右鍵取得圖片網址

Από την 29/07/2019. Δείτε την τελευταία έκδοση.

// ==UserScript==
// @name         View Twitter Origin Images
// @namespace    https://greasyfork.org
// @version      0.0.3
// @description  將新版推特的圖片轉為原畫質版本,並可以從右鍵取得圖片網址
// @author       Pixmi
// @icon         https://i.imgur.com/AmUaAWh.png
// @include      https://twitter.com/*
// @include      https://pbs.twimg.com/media/*
// @run-at       document-end
// @grant        none
// ==/UserScript==

/* jshint esversion: 6 */

if (window.location.href.includes('pbs.twimg.com/media')) {
    const twimg_URL = /https:\/\/pbs\.twimg\.com\/media\/([a-zA-Z0-9\-]+)\.(jpg|jpeg|png)\?name\=orig/;
    let imgHref = location.href;
    if (!twimg_URL.test(imgHref)) {
        let url = imgHref.replace('?format=','.').replace(/\&name=(\w+)/g,'?name=orig');
        window.location.replace(url);
    }
} else {
    console.log('View Twitter Origin Images 0.0.3 start up.');
    let rootmatch = document.evaluate("//div[@id='react-root']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
    let rootnode = rootmatch.singleNodeValue;

    //new Twitter UI
    if (rootnode) {
        let imgSet;
        var callback = function (mutationsList, observer) {
            for (let mutation of mutationsList) {
                if (mutation.target.className.includes("css-1dbjc4n")) {
                    imgSet = mutation.target.getElementsByTagName('img');
                    let i;
                    for (i = 0; i < imgSet.length; i++) {
                        let imgSrc = imgSet[i].src;
                        if (imgSrc.includes("https://pbs.twimg.com/media/") && !imgSrc.match(/name=orig/)) {
                            console.log(imgSrc);
                            imgSet[i].src = imgSrc.replace('?format=','.').replace(/&name=(\w+)/g,'?name=orig');
                        }
                    }
                }
            }
        };
        const observeConfig = {
            attributes: true,
            childList: true,
            subtree: true
        };
        const observer = new MutationObserver(callback);

        observer.observe(document.body, observeConfig);
    }
}