Movable Type ( はてなブログ ) からエクスポートした内容をパースする

直ちにブログを置き換えたいというわけではないけど、いざそうなあった場合にどうすべきか考えてはてなブログの過去の記事のエクスポートについて調べた。

help.hatenablog.com

上の記事に書いてある通り 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 というのを書いた。

github.com

今回は勉強がてら yacc を使ってみたけど goyaccを使う - Qiita第9章 速習yacc が参考になった。最終的には go のコードが生成されるのでそれを見ればなるほどとなるので結果的に手を動かした方が早かった気がしなくもない。

*1:ちなみに IMAGE という Movable Type 形式には記されていないキーも存在した