2013-07-03 66 views
1

我正在尋找一個Greasemonkey腳本,用於替換Tumblr,Pinterest,Flickr,Facebook和Webstagram RSS Feed中的圖像, InoReader用InoReader中的大版本替換Tumblr,Pinterest,Flickr圖像(RSS閱讀器)

我在谷歌閱讀器中爲Tumblr和Pinterest成功使用了以下腳本。想將它們移植到InoReader並將它們合併成一個腳本。

老谷歌閱讀器的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) 

老谷歌閱讀器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正在努力的Greasemonkey腳本InoReader以下,Webstagram和Flickr。

InoReader Facebook的:

// ==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 Webstagram:

// ==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

如何合併這些腳本? 在此先感謝。

回答

1

忘記較舊的2個腳本。他們使用DOMNodeInsertedwhich 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."); 
} 
+0

很好,謝謝!我添加了額外的語句來轉換Pinterest的拇指,這工作正常。 只有在「_1280.jpg」版本存在的情況下,Tumblr零件纔有效。如果添加原始Tumblr腳本中的.onerror條件以返回「_500.jpg」,如果「_1280.jpg」不在那裏? – user2031073

+0

好的,更新的答案應該這樣做。我也添加了建議的編輯更改。 *重要提示:*第一個答案有潛在的錯誤。我改變了這個新版本如何設置'src'來解決這個問題。 –

+0

完美!謝謝! – user2031073