はてなダイアリーからはてなブログへの移行 残作業

昔のはてなダイアリー時代の、テキストファイルでブログ記事を書いておいて、後でまとめてアップロードする便利なツール『はてなダイアリーライター』。
今回、はてなブログに移行した際に、この便利な環境もそのまま移行したく、新たに『はてなブログライター』を導入しましたが・・・・どうも私がイメージしていた手軽さがすべてスポイルされている・・・・(泣)

https://…/2018/09/19/ はてなダイアリーライター → はてなブログライターへの移行を考える
https://…/2018/10/18/ はてなブログ移行準備完了・・・・あとは踏ん切りかしらね

なんだよ~!!
旧来は、一日1テキストファイル。日記の日付のコントロールはファイル名
Webサイトへの投稿。不投稿は、touchファイルのファイル更新日時より、日記テキストファイルの更新日時が新しいかどうか(UNIX系OSの、touchコマンドから来ている。)という、超簡単仕様

f:id:vfr750f2:20181125122606g:plain
・【使いまわし写真】はてなダイアリー さようなら・・・・

これらを新環境に移行する際に、日記テキストファイルの書式が異なっているので全ファイル、コンバートする処理を作成し、コレで一安心かと思ったら、これら新日記テキストファイルを更新して投稿したら、記事が二重になってしまう・・・・


なぜこんな動きをするのか、結局はrubyで書かれたスクリプトやら、はてな側のAtomPub APIの仕様を解析する始末・・・・

http://developer.hatena.ne.jp/ja/documents/blog/apis/atom はてなブログAtomPub

そしてわかったことは、どうもこれら動きの原因は、はてな社側のAPI仕様にも問題がありそう。
AtomPub APIで投稿をすると、URIとは別に、記事識別用のユニークな{entry_id}が振られ、次回以降はこの{entry_id}を指定して書き込みに行かないと、別記事になってしまうという仕様。


ということは、記事ごとの{entry_id}を予め知らないとダメなわけで、スクリプト『はてなブログライター』では、一度新規投稿した際に決定される記事の{entry_id}をデータファイルに書き込んで保存しておく仕組み。
ということは、私のPCに存在する過去の日記のテキストファイルのみをコンバートしたのではダメ。


次に、{entry_id}が推測可能なのか調査。一応はてな社のAtomPubドキュメントを読むと、この部分はepoch値(←UNIXでの時刻表現方法。)ということになっているが、どうも桁数が膨大。そして日記の日付ではなく、投稿した時点で振られる模様で、今回の場合はデータコンバート処理をした時の値が振られている・・・・まぁ第三者からは規則性のないランダム値というわけか。


というわけで、こんな作戦。

  1. AtomPubコレクションAPIをGETして、記事ごとの{entry_id}一覧を取得する。しかし一度に7日分しか取得できず、取得したxmlファイル内の{next}リンクに示されているURIを再びGETしに行かねばならぬ
  2. 繰り返しの処理が必要なので、手作業で5,000日分の{entry_id}の取得は不可能。とりあえずC言語で、AtomPubを、リンクを辿りながら繰り返し叩くプログラムを作り、xmlファイルをダウンロードしまくる
  3. 溜まったxmlファイルから、別途{entry_id}と日付の関連する部分だけ抽出する処理を作成する
  4. 5,000日分のデータベースファイルをプログラムで偽造する

とりあえず、3までは終わっているのでもう一息かしらね。

一日1画像ファイル時代の日記の取扱

はてなダイアリー時代の黎明期は、今ほど使用可能な容量がなく、一日に掲載可能な写真は、150px×150pxの解像度のもの一枚のみ
そして一日に複数日記を書けるのですが、それらに対応する写真はわずか一枚。


ある日の日記(複数の可能性あり。)と写真の関係は、n:1になり、どの日記からも同じ写真が紐付いています。


しかし、はてなブログにコンバートすると、このn:1の関係が保持できず、写真一枚だけの日記と、文章だけの日記として分離されてしまったので、昔の日記(2009年12月4日以前)を読むとさっぱり訳がわからない・・・・


該当する日記は、1,500日を超えることが判明しており、コレも手作業での修正は不可能・・・・


まずは、日記と{entry_id}の関係が確定しないと機械処理できないな・・・・う~む。

デザイン

まぁなんとか落ち着いてきたような気がします。


全体的には、まだまだ作業が必要だな・・・・

https://…/2018/11/13/ はてなブログへの移行作業 その後の状況です