• Blog.37to.net
    • home
    • blog
    • labs
    • about
    • contact
  • プログラミング・開発 > del.icio.usからはてブにエクスポートするスクリプト

    • del.icio.us
    • PHP
    • はてな
    作成:
    2006-11-03T13:45:15+09:00
    更新:
    2009-04-19T16:25:57+09:00
  • はてブに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>';
    }
    
    ?>
    
    
    

    使い方

    1. PHPが動く環境に上記スクリプトを保存
    2. Pearの「Services_Hatena」を使用しているので無ければインストールして下さい。
    3. スクリプトの変数、「$bookmark」「$user」「$pass」を自分の環境に書き換える
    4. del.icio.usのエクスポート機能を使って、htmlファイルをスクリプトが取得出来る場所に保存。
    5. いざ実行(はてなサーバーに負荷をかけないようにしている為、ブックマークの量によっては相当時間が掛かります。)

    使ってみた感じ

    del.icio.usのブックマーク1400ぐらいをエクスポートするのに大体1.5時間から2時間ぐらい掛かった。 sleepしなければもっと早く出来ると思うけど、悪質なクローラーと思われても困るので気長に待ちました。

    メインで使うのはdel.icio.usになると思うので、あとはGreasemonkyでdel.icio.usとはてブの同期を取るようにしていけばいいかな。

    気が向けばLivedoor クリップ版も作るかもです。

    • PHPのちょっと便利なTips
    • ページ上部へ戻る
    • livedoor Readerにフィード公開機能が追加

    Posted at 37to : commetns(0) : trackbacks(0)

  • 同一カテゴリのエントリ

    • サイトをリニューアルした時のメモ
    • Kanasan.JS JSDeferred Code Readingが終了しました
    • JavaScriptでCSSとイベントを扱う from Kanasan.JS
    • Firebugで作るGreasemonkeyスクリプト〜入門と実践(From Kanasan.JS)
    • 2008年度のEmacsをまとめたメモ
  • 関連エントリ

    • livedoor Clipのブックマークレットからdel.icio.usとはてブのブックマークを編集、削除する(+はてブAPIについて)
    • livedoor Clipからdel.icio.usとはてなブックマークに同時投稿するGreasemonkeyスクリプト
    • PEAR Services_Hatenaが公開
    • del.icio.usのnetworkを可視化
    • PHPのちょっと便利なTips
  • 関連商品

  • コメント

    コメントはありません
  • トラックバック

    本エントリへのトラックバックURL http://blog.37to.net/mt/mt-tb.cgi/68

    トラックバックはありません
  • About

    about

    Name
    37to (minato)
    Job
    Web Developper
    Community

    Kanasan.JS

    関西を中心に活動するJavaScriptの勉強会

    ...more about

    Twitter Updates

      follow me on Twitter
    • Categories

      • Web・コンピュータ(23)
      • お知らせ(1)
      • コンピュータ・ガジェット(2)
      • プログラミング・開発(39)
      • 雑記(12)
    • Tags

      • (X)HTML
      • CSS
      • del.icio.us
      • Firefox
      • JavaScript
      • Kanasan.JS
      • MovableType
      • PHP
      • Python
      • RSS
      • SBM
      • Web
      • はてな
      • イベント
      • オブジェクト指向
      • テンプレート
      • デザイン
      • フォーム
      • 雑記
      • 勉強会
    • Archives

      • 2009年12月(1)
      • 2009年10月(1)
      • 2009年6月(3)
      • 2009年4月(2)
      • 2009年3月(1)
      • 2009年2月(1)
      • 2009年1月(1)
      • 2008年12月(1)
      • 2008年11月(2)
      • 2008年10月(1)

      ...more archives

    • Feeds

      • blog feedBlog.37to.netBlog.37to.netのフィード
      • 37to's reading new feedlivedoor Readerの新着フィード - k_37to
      • 37to's New Bookmark Feeddel.icio.us - 37to's Bookmark Feeds
    • Sorcial Bookmarks

      • livedoor クリップ - k_37tolivedoor クリップ - k_37to
      • はてなブックマーク - k_37toはてなブックマーク - k_37to
    • Copyright © Since 2006-2010 37to
    • Home | blog | labs | about | contact | feed