Movable Type ( はてなブログ ) からエクスポートした内容をパースする
直ちにブログを置き換えたいというわけではないけど、いざそうなあった場合にどうすべきか考えてはてなブログの過去の記事のエクスポートについて調べた。
上の記事に書いてある通り Movable Type 形式というものでエクスポートされる。実際にはこういう形式である。 *1
AUTHOR: soh335 TITLE: hogehoge BASENAME: 2016/05/06/010712 STATUS: Publish ALLOW COMMENTS: 1 CONVERT BREAKS: 0 DATE: 05/06/2016 01:07:12 CATEGORY: book ----- BODY: hogehoge fugafuga ----- --------
メタデータが Foo: Bar\n
のようなに羅列され、-----\n
で区切られた後に本文やコメント(これらはマルチラインデータというらしく、先頭が Foo:\n
の後にコメントの場合は Foo: Bar\n
などがあり、最後に本文が羅列される)などを記し、最後に --------\n
で区切る。
この形式のものを Golang でパースする mtexport/parser というのを書いた。
今回は勉強がてら yacc を使ってみたけど goyaccを使う - Qiita や 第9章 速習yacc が参考になった。最終的には go のコードが生成されるのでそれを見ればなるほどとなるので結果的に手を動かした方が早かった気がしなくもない。
*1:ちなみに IMAGE という Movable Type 形式には記されていないキーも存在した