西の東屋
2020年

過去のブログのアーカイブを作成

最近週末も出かけられず暇なので、ふと思い立ち過去のブログを全部Exportしてテキスト(markdown)として手元に置き、一応画像なども含めアーカイブを作ってみました。

一部サムネイル画像とか出てないものがあるけど、まあいいや…。

発端は懐かしのmixi

なんでこんなことをやろうと思ったかというと、発端はmixiのアカントを閉じようと思ったところからでした。10年ぶりくらいにログインしてみると、あまり書いてないですが古い日記があるではないですか…!

歴史的に貴重でも何でも無いですが、「まあ遺産として取っておこう」と思ったのが運の付き、ここからが随分と長い道のりでした…。

日記はexport出来ない…!

アカウントを閉じる前に日記をエクスポートしておこう、と思って設定画面を見てみるのですが、どこをどう探してもそれらしいメニューがない。これは、、、と思ったら、どうやら物理本に製本するとか、外部のツールで引っこ抜くのが主流で、本家の機能としてはExportには対応していない模様。

そうですかそうですか、、、ということで、長い日曜大工が始まりました。

旧コンテンツのサルベージ計画を立案

コンテンツはmarkdownにしておけば今後もとりあえずどうにかなるだろうということで、最終目的地は仕事でも滅茶苦茶お世話になってるHugoとしました。

出来れば画像も持ってきたいとは思っていましたが、この時点では可能かどうかよく分かっておらず、最悪そのままでも良いかな、位の心構えでした。

mixiのついでに、引っ越して放置されてる https://k-nishijima.blogspot.com/ のコンテンツもExportしておくことにしました。利用するブログサービスを変えるたびにここに蓄積していくイメージですw

いつか https://medium.com/@k_nishijima から何か別のサービスに引っ越すときも、ここに積まれることになります。

じゃあもう全部Github pagesにすれば良いんじゃ?って話ではありますが、今の所Mediumはまあまあ気に入っているので、しばらくそのまま使いますw

mixiの日記サルベージ

Linux環境でも動く手段を模索したところ、 adiary https://adiary.org/ とそれに連携するmixi export https://adiary.org/tools.html#mixi_export で、画像も含めてとりあえずローカルに持ってくることに成功しました。

mixi_exportはproxy型で動くというのもあり、mixi側の仕様が変わると意図しない挙動になると思うので、とりあえず現時点では動きました、という参考程度に見ていただければと思います。

adiaryからExport出来る adiary形式 (XML) をパースしてmarkdownに変換するのは、自力で書かないとなんともなりそうにない雰囲気だったので、超雑い変換ツールを書きました。出力ファイル名とかが超適当なので、もしご利用になるという奇特な方がいましたら、ご注意ください。

adiary2md.go

あまり意味もないですがコメントもadiary上に載ってきていたので、それも合わせてFront Matterに書き出しています。

あとは、markupされていない文字を直したり、サムネイルを含む画像のパスを一斉置換などして、整形しました(が、完璧は求めていないのでHTML生成物としては適当な箇所も多数あります…。)。

これで道のりの1/3くらいは完了です。

blogger.comの過去ブログをサルベージ

次にblogger.comことblogspot.comからのExportです。

Hugoの公式サイトにはMigrate to Hugoというページがあり、このページのツールを全部試して行きました。

結果、良さそうだったblogger-to-hugoをすこーしだけ手を入れて利用しました。

こちらもExport後の画像のパスを修正しています。やはり画像がだいぶ厄介というか面倒ですね。

また、最終的にファイル名をslugにするつもりで、標準のslugifyで生成されるファイル名がどうしても気に食わなかったので、そこだけ直しました(pythonでした…)。具体的には、blogger.comからExportしたatomに埋め込まれていたpermallinkの拡張子を除いたファイル名部分をslugにしました。

bitbucketアカウントがないのでforkはしていないんですが、修正内容のdiffはこんな感じです。

178,186d177
< def get_html_link(post):
<     result = ''
<     for c in post.findall('atom:link', NS):
<         if c.attrib['rel'] == 'alternate':
<             href = c.attrib['href'].split('/')
<             result = href[len(href)-1].split('.')[0]
<     return result
< 
< 
198c189
<     logger.info('Starting to process post: %s', post)
---
>     logger.info('Starting to process post: %s', title)
205,207c196
< #    slug = '{}-{}'.format(published_date, slugify(title, to_lower=True))
< #    slug = published_date
<     slug = 'blogspot-{}-{}'.format(published_date, get_html_link(post))
---
>     slug = '{}-{}'.format(published_date, slugify(title, to_lower=True))

Hugoでサイト構築

さて、最後にHugoでサイトを構築します。今回利用したテーマはMainroadです。

苦労の跡が垣間見えるリポジトリはhttps://github.com/k-nishijima/k-nishijima.github.ioです。

コンテンツの他にテーマ、画像も含めてまとめてリポジトリで管理したかったので、以下のサイトを参考にさせていただきました。ありがとうございました。

最終的にローカルでリンクチェッカーにかけて、完了!…と思っていたのですが、意外にGithub Pagesに移したあとに出た環境依存の不具合(ドットファイルが無視されるとか。。。)をぼちぼち修正して、作業は完了しました。

トップを飾る画像は、リスボンでよく行ったお気に入りのTime Out Market Lisboaです。今はこちらも閉まってますね…。

あ〜旅行したいな!