diff options
author | teramako | 2008-06-08 13:58:28 +0000 |
---|---|---|
committer | teramako | 2008-06-08 13:58:28 +0000 |
commit | 5e12a3c1e8998d765348219d01f8eb48d7ea0e0a (patch) | |
tree | 42dd8a3857574bca91e7d59db83bd793c20d103e /sbmcommentsviewer.js | |
parent | 23f52da95525e0b78053d5d44c3d2c47f9bf7e25 (diff) | |
download | vimperator-plugins-5e12a3c1e8998d765348219d01f8eb48d7ea0e0a.tar.bz2 |
buzzurlを追加
JSONのデコードにXPCOMを使用
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@13528 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'sbmcommentsviewer.js')
-rw-r--r-- | sbmcommentsviewer.js | 60 |
1 files changed, 54 insertions, 6 deletions
diff --git a/sbmcommentsviewer.js b/sbmcommentsviewer.js index 045fdef..abfbe4e 100644 --- a/sbmcommentsviewer.js +++ b/sbmcommentsviewer.js @@ -25,9 +25,10 @@ * id, timpstamp, tags, comment, tagsAndComment * * SBMタイプ: - * h : hatena bookmark - * d : del.icio.us bookmark - * l : livedoor clip + * h : hatena bookmark + * d : del.icio.us bookmark + * l : livedoor clip + * z : Buzzurl * XXX:今後増やしていきたい * * 例: @@ -201,7 +202,8 @@ var SBM = { //{{{ return urlPrefix + encodeURIComponent(url.replace(/%23/g,'#')); }, parser: function(xhr){ - var json = window.eval(xhr.responseText); + //var json = window.eval(xhr.responseText); + var json = jsonDecode(xhr.responseText, true); var count = json.bookmarks.length; var c = new SBMContainer('h', json.count, { faviconURL:'http://b.hatena.ne.jp/favicon.ico', @@ -265,9 +267,12 @@ var SBM = { //{{{ return urlPrefix + encodeURIComponent(url.replace(/%23/g,'#')) + '&all=0'; }, parser: function(xhr){ + /* var json = Components.classes['@mozilla.org/dom/json;1']. getService(Components.interfaces.nsIJSON). decode(xhr.responseText); + */ + var json = jsonDecode(xhr.reponseText); if (json && json.isSuccess){ var c = new SBMContainer('l', json.total_clip_count, { faviconURL: 'http://clip.livedoor.com/favicon.ico', @@ -291,8 +296,50 @@ var SBM = { //{{{ } } }, //}}} + buzzurl: { //{{{ + getURL: function(url){ + var urlPrefix = 'http://api.buzzurl.jp/api/posts/get/v1/json/?url='; + return urlPrefix + encodeURIComponent(url.replace(/%23/g,'#')); + }, + parser: function(xhr){ + var url = 'http://buzzurl.jp/user/'; + var json = jsonDecode(xhr.responseText); + if (json && json[0] && json[0].user_num){ + var c = new SBMContainer('buzzurl', json[0].user_num, { + faviconURL: 'http://buzzurl.jp/favicon.ico', + pageURL: 'http://buzzurl.jp/entry/' + json[0].url + }); + json[0].posts.forEach(function(entry){ + c.add( entry.user_name, window.eval('new Date(' + entry.date.split(/[-\s:]/,6).join(',') + ')'), + entry.comment ? entry.comment : '', entry.keywords.split(','), + { + userIcon: url + entry.user_name + '/photo', + link: url + '/' + entry.user_name + } + ); + }); + return c; + } else { + liverator.log('Faild: Buzzurl'); + } + } + }, //}}} }; //}}} + +/** + * jsonDecode {{{ + * @param {String} str JSON String + * @param {Boolean} toRemove はてなブックマークのJSONの様に + * 前後に()が付いている場合に取り除くためのフラグ + */ +function jsonDecode(str, toRemove){ + var json = Components.classes['@mozilla.org/dom/json;1'].getService(Components.interfaces.nsIJSON); + if (toRemove) str = str.substring(1, str.length -1); + + return json.decode(str); +} +//}}} /** * getMD5Hash {{{ * @param {String} str @@ -351,7 +398,8 @@ var manager = { type: { h: 'hatena', d: 'delicious', - l: 'livedoorclip' + l: 'livedoorclip', + z: 'buzzurl' }, format: { id: 'ID', @@ -389,7 +437,7 @@ var manager = { commands.addUserCommand(['viewSBMComments'], 'SBM Comments Viewer', //{{{ function(arg){ //{{{ - var types = liberator.globalVariables.def_sbms || 'hdl'; + var types = liberator.globalVariables.def_sbms || 'hdlz'; var format = (liberator.globalVariables.def_sbm_format || 'id,timestamp,tags,comment').split(','); var countOnly = false, openToBrowser = false; var url = buffer.URL; |