はてブにdel.icio.usのブックマークを移したいなとずっと思ってたんだけど、 簡単にコンバート出来そうなツールもなかったのでPHPで書きました。
それPlaと言われそうだけど気にしない。 使いたい人は自己責任の元で好きに使って下さい。
2006.12.30追記。
このエントリーのスクリプトは古くなってます。
詳細はdel2hatebu | labs.37to.netをご覧下さい。
<?php
require_once 'Services/Hatena.php';
define('PATTERN','/<(DT|DD)>((<A HREF="(.+)" LAST_VISIT="(.+)" ADD_DATE="(.+)" TAGS="(.+)">(.+)?<\/A>)|(.+))/');
/**
* del.icio.usでエクスポートしたhtmlファイルのパス
* https://secure.del.icio.us/settings/ユーザー名/bookmarks/exportから取得して保存
*/
$bookmark = '';
/**
* はてなのログインユーザー名
*/
$user = '';
/**
* はてなのログインパスワード
*/
$pass = '';
/**
* del.icio.usでエクスポートしたファイルを解析
*/
$html = file_get_contents($bookmark);
preg_match_all(PATTERN, $html ,$matches, PREG_SET_ORDER);
$len = count($matches);
//APIオブジェクト生成
$hatena = Services_Hatena::factory('Bookmark');
$hatena->hatena_login($user,$pass);
//古い順番に追加していく
for($i=$len-1; $i>=0; $i-- ){
//コメントのマッチしたパターンがコメント時はcontinue
if($matches[$i][1] === 'DD'){
continue;
}
//はてな式のタグに変換
$matches[$i][7] = explode(',',$matches[$i][7]);
$matches[$i][7] = '['.implode('][',$matches[$i][7]).']';
//コメントがあれば追加
if($matches[$i+1][1] == 'DD'){
$matches[$i][7] .= $matches[$i+1][9];
}
//APIで追加する
$hatena->add_bookmark($matches[$i][4],$matches[$i][7]);
print <<<PRINT
<pre>
title:{$matches[$i][8]}
url:{$matches[$i][4]}
tag:{$matches[$i][7]}
</pre>
PRINT;
//怒涛のリクエストでサーバーに迷惑を掛けては申し訳ないので、スリープ
sleep(3);
//簡単な経過表示
print '<b>'.$i.'/'.$len.'</b><br>';
}
?>
del.icio.usのブックマーク1400ぐらいをエクスポートするのに大体1.5時間から2時間ぐらい掛かった。 sleepしなければもっと早く出来ると思うけど、悪質なクローラーと思われても困るので気長に待ちました。
メインで使うのはdel.icio.usになると思うので、あとはGreasemonkyでdel.icio.usとはてブの同期を取るようにしていけばいいかな。
気が向けばLivedoor クリップ版も作るかもです。
Posted at 37to : commetns(0) : trackbacks(0)
本エントリへのトラックバックURL
http://blog.37to.net/mt/mt-tb.cgi/68