Brightkiteが終わってしまうのでコンテンツのバックアップを取得

Brightkiteが突然終了するらしい。
TLで知った。お知らせメールとかこない。猶予期間もほとんど無い。


言いたいことはいろいろあるけど、まあしょうがないんだろうな。
金の問題らしい。いままでなんらコスト削減や収益の確保をしてこなかったんだから、
存続させようにも厳しいだろう。巨大な資本がつけば別だろうけど。



せっかくなのでコンテンツを一気にバックアップする。

MT形式で取り出せたりすればいいのにそういう便利なものがなくて、
とりあえずだけどこんな感じで作ってみた。


とりあえず取り出せるだけ取り出しておいて、WordPressに取り込めるようにとか、Flickrに自動アップとか、そういうことはあとで考える。



【何をするもの?】
Brightkiteの自分のポストをRSSにして抜き出して、オリジナルサイズの写真をダウンロードするよ。


【どうやってやるの?】
PHPでできてるから、好きなとこにおいて、ユーザ名を変えて実行するだけだよ。
PHPはlibxmlが使えないと動かないよ。


【何ができるの?】
rssファイルが20個くらいと、でっかい写真が大量にできるよ。
rssファイルはブラウザにドラッグドロップすれば読めるけど、Brightkiteのサービスが終了すると写真が表示されなくなると思うよ。
写真はファイル名とパスがRSSの中のポストと関連付けしてあるから、あとでなんかのサービスで使えるはずだよ。


【気づいたこととか】
2000ポストまでしかゲットできないらしいよ?
RSSSafariで表示したときにうまくいくようにしようと思ったけど難しくて断念したよ。Windowsなら簡単に表示できそうな気もするけど・・・

コメントもまるまる保存したかったんだけど、とりあえずポストを確保。

ちなみに、ものすごい時間かかるよ!


bkget.php

<?php
$username = "Lingurin";

//2000ポストまでしか取得できないみたい
for($i =0; $i<=20; $i++){

	//URL作るよ
	$url = "http://brightkite.com/objects.rss?person_id=$username&offset=" . $i * 100 . "&limit=100";

	//これでRSSを取得
	$rss = simplexml_load_file($url);

	//ループ
	for($j=0; $j<100; $j++){
		$org_photo_url =$rss->channel->item[$j]->enclosure["url"] ;
		if ($org_photo_url =="")continue;

		//ちっちゃい写真のURLをでっかい写真のURLに変更
		$photo_url = str_replace("-feed", "", $org_photo_url);

		//写真をダウンロード
		$pfile = file_get_contents($photo_url);

		$u = parse_url($photo_url);
		$pi = pathinfo( $u["path"] );

		@mkdir("img" . $pi['dirname'] , 0755, true);
		if (!$handle = fopen( "img" . $u["path"], 'w')) {
 			echo "Cannot open file (" . $u['path']  .  ")";
		}

		// オープンしたファイルに書き込みます
		if (fwrite($handle, $pfile) === FALSE) {
			echo "Cannot write to file (" . "img" . $u["path"] . ")";
			exit;
		}
		$fullpath = realpath("img" . $u["path"] );
		//echo $fullpath . "\n";

		fclose($handle);

		//RSS表示用のdescriptionを書き換え、、、と思ったけどSafariでうまく表示されないので止め。
		//$rss->channel->item[$j]->description  =  str_replace($rss->channel->item[$j]->enclosure["url"]  , "file://localhost" . $fullpath  , $rss->channel->item[$j]->description);
		
		//enclosureに書き換えた相対パスを記録
		$rss->channel->item[$j]->enclosure["url"]  =  "img" . $u["path"];
		echo  $rss->channel->item[$j]->enclosure["url"] . "\n";
	}

	//保存するXMLファイル名
	$xmlfilename = "brightkite_" . $username . "_" . $i . ".rss";
	$rss->asXml($xmlfilename);

}
?>


ちなみに、できたrssテキストエディタで開いて、「-feed」っていう文字列を一括置換で削除してrssをブラウザで表示させるとでっかい写真で表示されるから、それを丸ごと保存してもいいかも。