m2O

2007/02/12 (月)

del.icio.us API のフロントエンドに wget を使う

|  del.icio.us API のフロントエンドに wget を使う - m2O を含むブックマーク

先日から試行錯誤してる「あとで読むタグだけつけてdel.icio.us」を、wgetapi.del.icio.usリクエストを投げる方法でやってみた。

[deliciousadd.js](JScript)

// <user settings> //
var wget = '\\path\\to\\wget.exe';
var username = 'delicious_userid';
var password = 'delicious_password';
// </user settings> //

var args = WScript.Arguments;
var url   = (args.length>=1) ? args.item(0) : null;
if ( ! url ) WScript.quit();
var title = (args.length>=2) ? args.item(1) : url;

var delicious = 'https://api.del.icio.us/v1/posts/add?'
var target = delicious + 
            'url=' + encodeURIComponent(url) + 
            '&description=' + encodeURIComponent(title) + 
            '&tags=' + encodeURIComponent('あとで読む');
var cmd = [
    '"' + wget + '"',
    '"' + target + '"',
    '--http-user=' + username,
    '--http-passwd=' + password,
    '--spider'
];
var shell = new ActiveXObject('WScript.Shell');
shell.Run(cmd.join(' '), 0 );

これをコンテキストメニューから呼び出す。

[menu.ini]

[Link Popup Menu]
Item, リンクをdel.icio.usに追加=Execute program, "\path\to\deliciousadd.js","%l %t"

[Document Popup Menu]
Item, del.icio.usに追加=Execute program, "\path\to\deliciousadd.js","%u %t"

マウスジェスチャーにも。

[mouse.ini]

[Application]
GestureUp=Execute program, "\path\to\deliciousadd.js","%l %t"

--

タイトルがもっと簡単につけられるといいんだけどなぁ。
deliciousadd.js 内で ActiveXObject('Msxml2.XMLHTTP') を使えばとってこれるかな? 面倒だからやらないけど↓やっちゃった

--

はてブAPIからタイトルとってくるのは意外と簡単だった。

function getHatebuTitle(url) {
    var http = new ActiveXObject('Msxml2.XMLHTTP');
    http.open('get', 'http://b.hatena.ne.jp/entry/json/' + url, false);
    http.send();
    var matches = /"title":"([^"]*)"/.exec(http.responseText);
    if ( matches ) {
        var title = unescape(matches[1].replace(/\\/g,'%'));
        return title;
    }
    return null;
}
WScript.echo('['+getHatebuTitle('http://www.hatena.ne.jp/')+']');

これを上の deliciousadd.js に仕込めばはてなブックマークのタイトルを自動で設定できる。

トラックバック - http://orera.g.hatena.ne.jp/miya2000/20070212