以前にも書いたように、携帯電話で撮ったそのへんのものをコメントつきで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やインポート/エクスポート機能をちゃんと見ておくべきですね。