SBMCommentsViewerのLivedoor ClipのJSONP対応パッチ作成
クリップ情報取得 API - livedoor クリップ まとめサイト - livedoor Wiki(ウィキ)に作成方法が載っているんで、早速パッチ作成してみた。
面倒なので全貼り付け
patch -c sbmcommentsviewer.user.js patch.file
でいけると思う。
*** sbmcommentsviewer.user.js Sat Nov 24 05:12:54 2007 --- sbmcommentsviewer.20071125.user.js Sun Nov 25 03:14:10 2007 *************** *** 77,82 **** --- 77,83 ---- // false : RSS var hatena_use_jsonp = true; var buzzurl_use_jsonp = true; + var livedoor_use_jsonp = true; // -------------------------------------------------------------- // CSS *************** *** 899,905 **** tags = RegExp.$4.split(" "); } var date = RegExp.$3; ! var comment = RegExp.$1; if(comment.match(/<p class="description">([^<]+)<\/p>/)){ comment = RegExp.$1.replace(/^\s+|\s+$/g, ""); } --- 900,906 ---- tags = RegExp.$4.split(" "); } var date = RegExp.$3; ! var comment = RegExp.$1.replace(/&/g,'&'); if(comment.match(/<p class="description">([^<]+)<\/p>/)){ comment = RegExp.$1.replace(/^\s+|\s+$/g, ""); } *************** *** 991,997 **** var livedoor = "http://clip.livedoor.com/clips/"; var livedoor_favicon = "http://clip.livedoor.com/favicon.ico"; var livedoor_page = livedoor_url + uri; ! function ldLoad() { GM_xmlhttpRequest({ method: "GET", url: livedoor_url + uri , --- 992,998 ---- var livedoor = "http://clip.livedoor.com/clips/"; var livedoor_favicon = "http://clip.livedoor.com/favicon.ico"; var livedoor_page = livedoor_url + uri; ! function ldLoadHTML() { GM_xmlhttpRequest({ method: "GET", url: livedoor_url + uri , *************** *** 1091,1096 **** --- 1092,1137 ---- } } // -------------------------------------------------------------- + // Livedoor Clip (josn) + // -------------------------------------------------------------- + var ld_jsonp = 'http://api.clip.livedoor.com/json/comments'; + function ldLoadJSONP(){ + w.ldCallback = function(json){ + var comments = []; + if(json && json.isSuccess){ + comment_area.addCount(json.total_clip_count, livedoor_favicon, livedoor_page); + var count = (json.Comments.length < MAX_GET_COUNT)? json.Comments.length : MAX_GET_COUNT; + for (var i=0; i<count; i++){ + var bm = json.Comments[i]; + var user = bm.livedoor_id; + var href = livedoor + user; + var image = 'http://image.clip.livedoor.com/profile/?viewer_id=[%%20member.livedoor_id%20%]&target_id=' + user; + var tags = bm.tags; + var comment = bm.notes ? bm.notes.replace(/</g,'<').replace(/>/g,'>') : ''; + var date = new Date(bm.created_on*1000); + var tag_base = livedoor + user + '/tag/'; + comments.push(new Comment(user, image, href, tags, comment, date, tag_base, 'livedoor')); + } + comment_area.addComments('livedoor', comments); + } else { + comment_area.addCount(0, livedoor_favicon, livedoor_page); + } + } + var json = document.createElement('script'); + json.src = ld_jsonp + '?link=' + encodeURIComponent(uri.replace(/%23/g,'#')) + '&callback=ldCallback&all=1'; + json.type = 'text/javascript'; + json.charset = 'utf-8'; + comment_area.div.appendChild(json); + } + function ldLoad(){ + if(livedoor_use_jsonp){ + ldLoadJSONP(); + } else { + ldLoadHTML(); + } + } + + // -------------------------------------------------------------- // buzzurl (html) // -------------------------------------------------------------- var buzzurl_rss = 'http://buzzurl.jp/entry/comment/rss/';