del.icio.usがアップグレード

URLもhttp://del.icio.us/%E3%81%8B%E3%82%89http://delicious.com/%E3%81%AB%E3%80%82URL%E3%81%AF%E5%89%8D%E3%81%AE%E3%81%BB%E3%81%86%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%A0%E3%81%A3%E3%81%9F%E3%82%93%E3%81%A0%E3%81%8C%E3%81%AA%E3%81%81%E3%80%82%E3%81%9D%E3%82%8C%E3%81%A8%E3%80%81%E4%B8%80%E9%83%A8%E6%A9%9F%E8%83%BD%E3%81%8CJavaScript%E3%81%8C%E6%9C%89%E5%8A%B9%E3%81%98%E3%82%83%E3%81%AA%E3%81%84%E3%81%A8%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%83%80%E3%83%A1%E3%81%A0%E3%82%8D%E3%80%82

んで、APIも微妙に変わってるようなので、手元のスクリプトを一部修正した。

SBMCommentsViewer

880行目~906行目を以下のように修正。

var delicious_rss = "http://delicious.com/rss/url/";
var delicious_url = "http://delicious.com/";
var delicious_favicon = "http://delicious.com/favicon.ico";
var delicious_page = "http://delicious.com/url/" + MD5_hexhash(uri.replace(/%23/g, '#'));
function dlLoadRSS() {
    GM_xmlhttpRequest({
      method: "GET",
      url: delicious_rss + MD5_hexhash(uri.replace(/%23/g, '#')),
      onload: function(response) {
          var r;
          var comments = [];
          //var tags = [];
          if (r=response.responseText.match(/<item>[\s\S]*?<\/item>/mg)) {
              comment_area.addCount(r.length, delicious_favicon, delicious_page);
              var len = (r.length < MAX_GET_COUNT) ? r.length : MAX_GET_COUNT;
              for (var i=0; i<len; i++){
                  r[i].match(/<item>\s*<title>[^<]+<\/title>\s*<pubDate>([^<]*)<\/pubDate>[\s\S]*?<link>[^<]+<\/link>\s*<dc:creator><!\[CDATA\[([^\]]+)\]\]><\/dc:creator>[\s\S]*?(?:<description>([^<]*)<\/description>\s*)?((?:\s*<category[^>]*?>[^<]*?<\/category>)*)\s*<\/item>/ );
                  var date = RegExp.$1;
                  var user = RegExp.$2;
                  var comment = RegExp.$3;
                  var categories = RegExp.$4;
                  var tags = [];

                  date.match( /^[a-z]+, (\d+) ([a-z]+) (\d{4}) (\d\d):(\d\d):(\d\d).*?$/i );
                  var d = RegExp.$1;
                  var yyyy = RegExp.$3;
                  var hh = RegExp.$4;
                  var mm = RegExp.$5;
                  var ss = RegExp.$6;
                  var m = RegExp.$2;
                  m = m.replace( /Jan/i, "01" )
                       .replace( /Feb/i, "02" )
                       .replace( /Mar/i, "03" )
                       .replace( /Apr/i, "04" )
                       .replace( /May/i, "05" )
                       .replace( /Jun/i, "06" )
                       .replace( /Jul/i, "07" )
                       .replace( /Aug/i, "08" )
                       .replace( /Sep/i, "09" )
                       .replace( /Oct/i, "10" )
                       .replace( /Nov/i, "11" )
                       .replace( /Dec/i, "12" )
                       ;
                  date = new Date(yyyy, m, d, hh, mm, ss );
                  if(categories){
                      categories.replace( /<category[^>]*?>([^<]*?)<\/category>/g,
                          function( $0, tag ) { tags.push( tag ); }
                      );
                  }
                  if(comment.match(/&lt;p class="description">([^<]+)&lt;\/p>/)){
                      comment = comment.replace(/^\s+|\s+$/g, "");
                  }

ついでにlivedoorClipのユーザー名の位置が微妙に変わったので修正。

1028行目(上の修正を当てた後は1047行目)を以下のように修正。

var userName = userA.href.replace( /^.*\//, "" );

sbmcomments.rb

このサイトのエントリについたコメントを取得するやつ。元のソースで使っていたREXMLが利かなくなったのでsimple-rssで取得するようにした。

def get_delicious_comments( url )
    posts = []
    host  = 'feeds.delicious.com'
    path  = '/v2/rss/url/' + Digest::MD5.hexdigest( url )
    body  = Net::HTTP.start( host, 80 ).get( path ).body

    rss = SimpleRSS.new( body )

    rss.items.each do |item|
        if item.description != nil
            post = {
                :date => "",
                :user => item.dc_creator,
                :cmnt => item.description,
                :site => "del.icio.us"
            }

            posts.push( post )
        end
    end

    return posts
end

del.icio.usからの取得部分をこんな感じに直したんだが、今度は肝心のGet URLsが500でどうしたもんかと。

追記

SBMCommentsViewerの作者の方にスクリプトをgistに上げていただいたので、修正版をダウンロードできます。

sbmcommentsviewer.user.js(リンク先はgist内)

さらに変更が入ったりしたらgist: 3883の右端にあるrevisionかforkを追えばいいハズ。