subscribe-by-google-reader

  • /*
     * @title subscribe-by-google-reader
     * @description google reader に RSS 登録するやつ。一応twitterとか、フィードへの link 要素のない tumblr にも対応。
     * @include http://*
     * @license MIT License
     * @require 
     */
    
    (function(){
       var BASE="http://www.google.com/reader/preview/*/feed/";
       var FEED_FINDER = [
         [
             /^(https?:\/\/(?!www\.)[^\.]+\.tumblr\.com)/,
           function(all,head){
             return head + '/' + rss;
           }
         ],
         [
           /^https?:\/\/twitter\.com\/#!\/([^/]+)/,
           function(all,user){
             var uid = null;
             var as = document.getElementsByTagName('a');
             for(var i=0,l=as.length;i<l;i++){
               var a = as[i];
               if(!a.className) continue;
               if(!a.className.match(/tweet-screen-name/)) continue;
               uid = a.getAttribute('data-user-id');
               break;
             }
             return uid ? "http://twitter.com/statuses/user_timeline/" + uid +
               ".rss" : null;
           }
         ]
       ];
       var find = null;
       FEED_FINDER.forEach(
         function(finder){
           if(find) return;
           var match = String(location.href).match(finder[0]); 
           if(!match) return;
           find = function(){ return finder[1].apply(null,match); };
         }
       );
       var url = (find || function(){
                    var links=document.getElementsByTagName("link");
                    var re=/application\/atom\|rss\+xml/ig;
                    for(var i=0;i<links.length;++i){
                      if((links[i].getAttribute("rel")=="alternate")&&
                        (re.test(links[i].getAttribute("type")))){
                        return links[i].getAttribute("href");
                      }
                      return null;
                      if(!(url && url.length>0)){
                        slert("Could not find rss feed.");
                      }else{
                        window.location.href=(BASE+url);
                      }
                    }
                  })();
       location.href=(BASE + url);
     })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2010/11/08 02:24:47 - 2010-11-08
  2. 2010/11/08 02:24:14 - 2010-11-08