Photologをflickrからtumblrへ移行しました

以前にも書いたように、携帯電話で撮ったそのへんのものをコメントつきでflickrにアップしてたんですが、flickrの無料アカウントでの制限(200枚)に達してしまったのを機に、tumblrへ移行しました。

もうちょっとがんばって撮った写真(携帯電話以外で撮った写真)はflickrに置いたまま。これが200枚に達したらProアカウントにするか考えよう。

で、移行ですが、手動で1つづつ移すのは面倒なので、両サービスのAPIを利用して、flickrの特定セットの写真をtumblrに投稿するスクリプトを作成、ローカルサーバで走らせました。

自分で、しかも1回使うだけなので、使い勝手はひどいですが、参考にしたい人もいるかと思いますので、掲載しておきます。

<?php
//flickrのSetのid。SetのURLに含まれています
$flickr_photoset_id = '○○○○○○○○○○';
//flickrのAPI Key。 http://www.flickr.com/services/api/ で取得してください。
$flickr_api_key = '○○○○○○○○○○';
//tumblrに登録したメールアドレス
$tumblr_email = '○○○○○○@○○○○○○○○○○';
//tumblrのパスワード
$tumblr_password = '○○○○○○○○○○';
//投稿先のtumblr
$tumblr_group = '○○○○○○.tumblr.com';
//Setの情報を取得する
$s = simplexml_load_file('http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key='.&flickr_api_key.'&photoset_id='.$flickr_photoset_id.'&extras=url_o,date_upload,date_taken');

foreach($s->photoset->photo as $p_no => $p_val){
    //写真1枚の情報を取得
    $p_info = simplexml_load_file('http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key='.&flickr_api_key.'&photo_id='.$p_val->attributes()->id);
    //tumblrへのリクエスト作成
    $request_multipart = array(
        'email' => $tumblr_email,
        'password' => $tumblr_password,
        'type' => 'photo',
        'source' => substr($p_val->attributes()->url_o,7),
        'caption' => $p_info->photo->description,
        'date' => $p_info->photo->dates->attributes()->taken,
        'group' => $tumblr_group
    );
    //tumblrへのリクエスト$c = curl_init('http://www.tumblr.com/api/write');
    curl_setopt($c, CURLOPT_POST, true);
    curl_setopt($c, CURLOPT_POSTFIELDS, $request_multipart);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($c);
    $status = curl_getinfo($c, CURLINFO_HTTP_CODE);
    if (curl_errno($c)) { echo "curl_error($c)\n"; }
    curl_close($c);
    print_r($result."\n");
}
?>

flickr.photosets.getPhotosだとオリジナル画像のURLが取得できるのに、flickr.photos.getInfoだと取得できないのがよくわからんけど、まあ問題なし。

これをxampp上で実行して、tumblrを確認しだい、手動でflickr側の写真を削除していきました。削除は手でやったほうが安心だもんね。

その後、サブドメインの設定をドメイン管理会社の管理ページとtumblrのカスタマイズページで行い、めでたく完了。

いやしかし、API提供されてるといろいろ便利です。Webサービスを選ぶ際にはAPIやインポート/エクスポート機能をちゃんと見ておくべきですね。

参考