たまには日記の一つでも。

28にしてはじめたバイオリンの記録と、ときどき日曜ハッキング

auoneブログをexportする

とりあえずデータ化するのはROME()で一瞬だった。

import java.util.List;
import java.util.Date;
import java.net.URL;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

public class AuoneBlogExporter {
	private static final String FEED_URL
		= "http://blog.auone.jp/igarashitm/?disp=rss&pageID=";
	
	public static void main( String[] args ) throws Exception {
		SyndFeedInput sfi = new SyndFeedInput();
		String prevTitle = null;
		Date prevDate = null;
		int page = 1;
		while(true) { 
			SyndFeed sf = sfi.build(new XmlReader(new URL(FEED_URL+page)));
			List<SyndEntry> entries = sf.getEntries();
			SyndEntry topEntry = entries.get(0);
			if( topEntry.getTitle().equals(prevTitle)
					&& topEntry.getPublishedDate().equals(prevDate) ) {
				// auoneブログでは(他は知らね)、最終ページより大きいページを指定しても
				// 最終ページが取得されるので、 これを利用して最終ページを判定する。
				break;
			}else {
				prevTitle = topEntry.getTitle();
				prevDate = topEntry.getPublishedDate();
				page++;
			}
			
			for( int i=0; i<entries.size(); i++ ) {
				SyndEntry entry = entries.get(i);
				// ここでエントリごとの処理。Description, title, PublishedDate, 
				// entry.modules[0].subject(ここにカテゴリが入るっぽい) あたりを取り出して、
				// はてな記法に変換すればよろし。
				System.out.println(
						entry.getPublishedDate() + "\t" + entry.getTitle()
				);
			}
		}
	}
}

あとは、これをはてな記法に整形して投稿するか、はてなダイアリーデータ形式に変換してインポートするか。インポートするなら、はてなに既存の同日付のエントリーが上書きされてしまわないか、とかを確認しておいたほうがよさげ。つか、rssの出力をさくっとはてな向けに変換する手段ないかなぁ。だれか作ってそうだけど・・・ともあれ、できることはわかったぞと。