1

我正在寻找一个 Greasemonkey 脚本,它将 Tumblr、Pinterest、Flickr、Facebook 和 Webstagram RSS 提要中的图像替换为 InoReader 中的较大版本

我已经在 Google Reader for Tumblr 和 Pinterest 中成功使用了以下脚本。想将它们移植到 InoReader 并将它们全部组合成一个脚本。

旧 Google 阅读器Tumblr脚本:

// ==UserScript==
// @name           Big Photos from Tumblr on Google Reader
// @include        http://*.google.com/reader/view/*
// @include        https://*.google.com/reader/view/*
// ==/UserScript==

document.getElementById("chrome").addEventListener("DOMNodeInserted", function (e) {
if (e.target.tagName && e.target.tagName == "DIV" && /entry\s?/.test(e.target.className)) {
    var t = e.target.getElementsByTagName("img");
    for (var n in t) {
        var r = t[n];
        r.style.maxHeight = "1080px";
        var i = r.src;
        if (i.indexOf("tumblr") > -1) {
            r.src = r.src.replace("_500.jpg", "_1280.jpg");
            r.onerror = function () {
                this.src = this.src.replace("_1280.jpg", "_500.jpg")
            }
        }
    }
}
}, false)

旧 Google 阅读器Pinterest脚本:

// ==UserScript==
// @id             greader-pinteresturlreplacer
// @name           Google Reader - Pinterest URL Replacer
// @version        1.3
// @include        https://www.google.com/reader/*
// ==/UserScript==

document.getElementById("chrome").addEventListener("DOMNodeInserted", function (e) {
var t = e.target;
if (t.tagName && t.tagName == "DIV" && /entry\b/i.test(t.className)) {
    var n = t.getElementsByTagName("img");
    for (var r in n) {
        var i = n[r];
        if (/pinterest\.com.*_b\.\w+$/.test(i.src) || /pinterest\.com\/192x\//.test(i.src)) {
            i.style.width = "inherit";
            i.style.height = "inherit";
            i.src = i.src.replace(/_b\.(\w+)$/, ".$1");
            i.src = i.src.replace(/\.com\/192x\//, ".com/550x/")
        }
    }
}
}, false);
document.getElementById("chrome").addEventListener("DOMNodeInserted", function (e) {
var t = e.target;
if (t.tagName && t.tagName == "DIV" && /entry\b/i.test(t.className)) {
    var n = t.getElementsByTagName("img");
    for (var r in n) {
        var i = n[r];
        if (/pinimg\.com.*_b\.\w+$/.test(i.src) || /pinimg\.com\/192x\//.test(i.src)) {
            i.style.width = "inherit";
            i.style.height = "inherit";
            i.src = i.src.replace(/_b\.(\w+)$/, ".$1");
            i.src = i.src.replace(/\.com\/192x\//, ".com/550x/")
        }
    }
}
}, false)


以下是适用于 Facebook、Webstagram 和 Flickr 的 Greasemonkey InoReader 脚本。

InoReader脸书:

// ==UserScript==
// @id             inoreaderfacebookthumbs
// @name           InoReader Facebook Thumbnail Replacer
// @version        1.0
// @include        https://inoreader.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==

/*- The @grant directive is needed to work around a design change
introduced in GM 1.0.   It restores the sandbox.
*/

/* Facebook Thumbnails */ 
 waitForKeyElements (
"#reader_pane div.article_full_contents div.article_content a.underlink img",
swapOutFbcdnThumnails
);

function swapOutFbcdnThumnails (jNode) {
/*-- Change src from:
    https://fbcdn-photos- ... _s.jpg
    to:
    https://fbcdn-sphotos- ... _n.jpg
*/
var newSrc      = jNode[0].src.replace (/fbcdn\-photos\-/, "fbcdn-sphotos-");
newSrc          = newSrc.replace (/_s\.jpg$/, "_n.jpg");
jNode[0].src    = newSrc;
}

InoReader网站:

// ==UserScript==
// @id             inoreaderwebstagramthumbs
// @name           InoReader Webstagram Thumbnail Replacer
// @version        1.0  
// @include        https://inoreader.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==

/* Webstagram Thumbnails */ 
waitForKeyElements (
"#reader_pane div.article_full_contents div.article_content a.underlink img",
swapOutWebstgmThumnails
);

function swapOutWebstgmThumnails (jNode) {
/*-- Change src from:
    https://*.amazonaws.com ... _6.jpg
    to:
    https://*.amazonaws.com ... _7.jpg
*/
var newSrc      = jNode[0].src.replace (/amazonaws/, "amazonaws");
newSrc          = newSrc.replace (/_6\.jpg$/, "_7.jpg");
jNode[0].src    = newSrc;
}

InoReader Flickr:

// ==UserScript==
// @id             inoreaderflickrthumbsreplacer
// @name           InoReader Flickr Thumbnail Replacer
// @version        1.0
// @include        https://inoreader.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==

/* Flickr Thumbnails */ 
waitForKeyElements (
"#reader_pane div.article_full_contents div.article_content a.underlink img",
swapOutFlickrThumnails
);

function swapOutFlickrThumnails (jNode) {
/*-- Change src from:
    https://*.staticflickr ... _m.jpg
    to:
    https://*.staticflickr ... _b.jpg
*/
var newSrc      = jNode[0].src.replace (/staticflickr/, "staticflickr");
newSrc          = newSrc.replace (/_m\.jpg$/, "_b.jpg");
jNode[0].src    = newSrc;
}

以下是每个示例的 RSS 提要:TumblrFlickrPinterestFacebookWebstagram

如何合并这些脚本?提前致谢。

4

1 回答 1

1

忘记旧的 2 个脚本。他们使用DOMNodeInserted which is deprecated

合并 InoReader.com 脚本很容易。它们都使用相同的选择器waitForKeyElements(),因此只需使用if()语句来确定在回调函数中应用哪个正则表达式。

这样的事情应该这样做:

// ==UserScript==
// @name        InoReader Thumbnail Replacer
// @version     1.0
// @include     http://inoreader.com/*
// @include     http://www.inoreader.com/*
// @include     https://inoreader.com/*
// @include     https://www.inoreader.com/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require     https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant       GM_addStyle
// ==/UserScript==

waitForKeyElements (
    "#reader_pane div.article_full_contents div.article_content a.underlink img",
    swapOutThumbnails
);

function swapOutThumbnails (jNode) {
    var imgSrc      = jNode[0].src;

    //-- The necessary regex changes depending on where the images are hosted.

    if (/staticflickr/.test (imgSrc) ) {
        /*-- Change src from:   https://*.staticflickr ... _m.jpg
                          to:   https://*.staticflickr ... _b.jpg
        */
        imgSrc      = imgSrc.replace (/_m\.jpg$/, "_b.jpg");
    }
    else if (/amazonaws/.test (imgSrc) ) {
        /*-- Change src from:   https://*.amazonaws.com ... _6.jpg
                          to:   https://*.amazonaws.com ... _7.jpg
        */
        imgSrc      = imgSrc.replace (/_6\.jpg$/, "_7.jpg");
    }
    else if (/fbcdn\-photos/.test (imgSrc) ) {
        /*-- Change src from:   https://fbcdn-photos- ... _s.jpg
                          to:   https://fbcdn-sphotos- ... _n.jpg
        */
        imgSrc      = imgSrc.replace (/fbcdn\-photos\-/, "fbcdn-sphotos-");
        imgSrc      = imgSrc.replace (/_s\.jpg$/, "_n.jpg");
    }
    else if (/pinimg\.com.*_b\.\w+$/.test (imgSrc) || /pinimg\.com\/192x\//.test (imgSrc) ) {
        /*-- Change src from:   http://*.pinimg.com/192x/...
                          to:   http://*.pinimg.com/550x/...
        */
        imgSrc      = imgSrc.replace(/\.com\/192x\//, ".com/550x/");
    }
    else if (/pinterest\.com.*_b\.\w+$/.test (imgSrc) || /pinterest\.com\/192x\//.test (imgSrc) ) {
        /*-- Change src from:   http://*.pinterest.com/192x/...
                          to:   http://*.pinterest.com/550x/...
        */
        imgSrc      = imgSrc.replace(/\.com\/192x\//, ".com/550x/");
    }

    jNode[0].src    = imgSrc;
}

/* Tumblr */
waitForKeyElements (
    "#reader_pane div.article_full_contents div.article_content img", swapOutThumbnails2
);

function swapOutThumbnails2 (jNode) {
    var imgSrc      = jNode[0].src;
    if (/tumblr/.test (imgSrc)) {
        imgSrc      = imgSrc.replace (/_500\.jpg$/, "_1280.jpg");
        jNode[0].addEventListener ("error", tumblrImgErrFix, false);
    }
    jNode[0].src    = imgSrc;
}

function tumblrImgErrFix () {
    this.src        = this.src.replace ("_1280.jpg", "_500.jpg");
    console.log ("*** Img Err fix.");
}
于 2013-07-03T04:26:06.600 回答