在RSS阅读器中替换Facebook缩略图(InoReader)

时间:2013-06-30 14:46:41

标签: javascript facebook greasemonkey rss-reader

我正在寻找创建一个Greasemonkey脚本,它将取代InoReader或任何其他RSS阅读器中的Facebook缩略图。以前我在Google阅读器中成功使用了以下脚本,但它在InoReader,Feedly或任何非Google RSS阅读器中都不起作用。

// ==UserScript==
// @id             greader-facebookurlreplacer
// @name           Google Reader - Facebook URL Replacer
// @version        1.1
// @namespace      
// @author         
// @description    
// @include        https://www.google.com/reader/*
// @include        https://www.feedspot.com/*
// ==/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];
        if (/.*akamaihd\.net.*_s\.\w+$/.test(r.src)) {
            r.style.width = r.style.height = "inherit";
            r.src = r.src.replace(/_s\.(\w+)$/, "_n.$1")
        }
    }
}
}, false)

我还尝试使用从stackoverflow上的类似帖子中检索到的以下代码,但它在InoReader中也不起作用。

$("img[src^='https://fbcdn-photos-a.akamaihd.net']")
.each(function()
{ 
  this.src = this.src.replace(/(\/[^/]*)s\.jpg$/, '/s720x720$1n.jpg');
});​

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

DOMNodeInserted is deprecated.不要再使用这种方法了。最好使用像waitForKeyElements这样的实用程序。

之后,只需要为图像找到正确的jQuery selector,然后使用正确的正则表达式将src转换为更大的图像尺寸。 (但请注意,有些网站故意使正则表达式方法无法实现。)

对于the sample RSS feed you listedinoreader.com,我们可以use Firebug to determine a CSS/jQuery path查看缩略图:

#reader_pane div.article_full_contents div.article_content a.underlink img

对于src更改/正则表达式,请参阅代码。

以下是如何在该阅读器上替换该Feed的图像:

// ==UserScript==
// @name     _InoReader thumbnail replacer
// @include  http://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==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
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;
}