目次
ブログ移行日記(その5)です。前回まではこちら
今回はこれまでとは異なる特殊な話です。
最初にブログを書き始めたときに利用していたのがJugemのブログでした。 その後、Octopressに移行して、今年、Hugoに移行したという流れです。
で、よくよく考えると、Jugemのブログも移行できるんじゃないか?となりました。 じゃあ、やってみるかと。なので、今回のブログは自分の備忘録です(興味のない人が大多数じゃないかな)。 一応、Pythonで書いたプログラムはGitHubに上がっています。文字列置換と正規表現のオンパレードです。
JugemからExport
まずは、移行元のデータが取り出せるかどうかを調べたところ、text形式もしくはXML形式でエクスポートが可能でした。
変換処理が必要なはずなので、XMLでダウンロードします。
独自のXMLですが、記事ごとにXMLのタグ(<entry>
)でまとめられているので、処理が楽です。
XMLをMarkdownに
<entry>
タグの下に次のような項目が入っているので、抜き出します。
ヘッダ部
- title - 記事タイトル
- author - 著者
- category - タグ
- date - 投稿日付
- description : 本文(先頭部分)
- sequel : 本文(つづき)
titleからdateまでをHugoのMarkdownのヘッダ部分として出力します。
日付は形式が違うので合わせるように変換し、
titleは(Jugemより移植)
という文字列を追加しました。
また、Hugoの個別のコンテンツにするためにそれぞれをMarkdownのファイルに変換しています。
ファイル名は変換後のdate
の先頭10文字(yyyy-MM-dd
)に-
を付け加えて、
タイトルを追加しました。ホントは英語のファイル名にしたかったんですが、ちょっと手抜き。ファイル名に使用できないような文字は-
に置換しています。
本文
本文部分はもう少し複雑です。 まずは、descriptionとsequelから抜き出した文字列を結合します。
で、内部の文字列に次のようなものがあるので、それぞれMarkdownに変換したりという処理を書いてます。
などです。 アフィリエイトタグは、数行に渡るの複数のHTMLタグで記述されているので、 ASINと商品タイトルだけを抜き出しています。 Hugoでアフィリエイトのリンクを作るために、hugo-amazon-jpという公開されているshortcodeを元に、カスタマイズしたものを使っています。 これ用に、必要なASINとタイトルを別ファイルに出力したりしています。
また、いくつか画像を使っている記事があったのですが、これが曲者でした。 XMLに入っているimgタグに画像へのURLがあるのですが、アクセスしても存在しないURL担っています。。。 ブログで公開している画像のファイル名に似たものがXMLに入っていたので、URLを組み直して、ダウンロードするという処理も書いています。
あとは、昔ちょっと凝った書き方(spanタグで章みたいなことやってた)をしていた部分の処理を加えて完成です。
まとめ
元のXMLを見たり、抜き出したファイルを見ながら、トライアンドエラーでプログラムを書きました。 なんとなく変換できたなかっていうところで、取り込んで公開しました。 まだ、全部の記事をチェックしてないですが、なんとなく移植できたので一旦これでいいかなと。 昔の記事を見たときにおかしい場所があったら手で治すつもりでいます。
なんか、もうちょっとうまくプログラムかけた気もしますが、書き捨てのプログラムだと思うのでこんなもんかな。
1点気になっているところは、コメントの部分です。 ブログにコメントをいただいていたのですが、その部分は移植できてないです。
Octopresに移植していこうは、Disqusのサービスでコメント部分を提供しています。ここに移植するのも変な話だなぁと思っているので、本文にコメントを取り込む感じかなぁ?
もともとのJugemのサイトもそのまままだ残してあるので、そのうち気が向いたらで。
comments powered by Disqus
See Also by Hugo
- ブログ移行日記(その2) - Markdownファイルの変換
- ブログ移行日記(その1) - Hugoとテーマ
- ブログ移行日記(その4) - 検索機能(Algolia)の導入
- ブログ移行日記(その3) - Hugoの設定と微調整(テーマに合わせた)
- ブログ記述環境としてのDev Container