"はてなダイアリー"から、"はてなブログ"への移行作業は、見た目的にはだいぶ完了してきましたが、まだ完璧ではありません。
・【使いまわし写真】はてなダイアリー さようなら・・・・ |
まぁ、今のレベルで妥協して使ってもよいのでしょうけれど、性格的に気になって仕方がない!(爆)
はてなブログライターへの移行 →100%完了
PCローカルにテキストファイルを置いておき、ローカルファイルを変更することでその内容がはてなブログ側に反映させられる『はてなブログライター』への移行作業は終了しました。
総ファイル数、5,344日。この環境構築が完了すれば、あとはローカルファイルを一括変換したり自由自在に加工して自動反映が可能となるので、以前の日記のリンクの修正とかが楽に出来るようになります。
https://…/2018/09/19/ はてなダイアリーライター → はてなブログライターへの移行を考える
数日前の日記にも書きましたが、厄介だったのはAtomPubの仕様。日記記事を投稿しないと{entry_id}が確定しないし、日記の更新時にも記事ごとの{entry_id}が必要なので、過去の日記のすべての{entry_id}を取得して、ローカル側にデータとして保持しておいたフリをするようにしました。
はてなブログライターの拡張 custom-url →完了
"はてなダイアリー"では、一日1記事。もともと日記としてスタートしたシステムなのでそういう仕様になっているのですが、世の中では一日に何回も記事を投稿する使い方が当たり前なので、"はてなダイアリー"では、一つの日記をあたかも複数の記事に見えるように細工して逃げていました。
なので、日記のURIも" http://d.hatena.ne.jp/はてなID/年月日 "でアクセスが可能でした。一日の日記のそれぞれの記事には、識別名称を付けることができ、これはhtmlの、" <a name="識別名称"> "として出力されていました。
したがって、日記URIと、それぞれの記事は次のような表現となっていました。
- 日記: http://d.hatena.ne.jp/はてなID/年月日
- 記事(ある日の識別名称1) http://d.hatena.ne.jp/はてなID/年月日#識別名称1
- 記事(ある日の識別名称2) http://d.hatena.ne.jp/はてなID/年月日#識別名称2
#以降は必須ではないので、細かい識別名称など知らなくても、日付を叩けばとりあえず表示できました。
これが、"はてなブログ"へ移行されると、一日の日記に(本当の意味で)いくつも記事が書けるので、次のような関係になります。
- 日記: http://tarsama.hatenadiary.com/entries/年/月/日/
- 記事(ある日の識別名称1) http://tarsama.hatenadiary.com/entry/年月日/識別名称1
- 記事(ある日の識別名称2) http://tarsama.hatenadiary.com/entry/年月日/識別名称2
そう、記事毎にURIが振られるので、アクセスする場合はURIを知らないとアクセスができない・・・・ しかも特段の指定をしないと、epoch値が勝手に付くので予測不能な数値になってしまう・・・・
私が日記の中で、別日にリンクを貼る際もそれは同じで、いちいち記事のURIを調べねばならぬ・・・・コレは不便!
なので、Web画面から"はてなブログ"に記事を投稿する場合は、カスタムURIなる機能が用意されていて、記事毎に自由なURIをユーザー側で振ることができます。
私の最近(と言っても5年以上か?)の日記では、一日=1記事のため、識別名称など無くアクセスできる方が都合が良いのです。
GUIではカスタムURIが使えるのに、AtomPub API経由の投稿では、その機能がない・・・・
調べてみると、はてな公式ドキュメントにも記載がない隠し機能なようで、xml名前空間を拡張する形で機能は存在しているようです。
https://blog.masahiko.info/entry/2018/08/01/191005 カスタムURLを指定した、はてなブログAtomPubによる記事投稿
なるほどね。
であれば、自分で使いやすいように、はてなブログライターを拡張しちゃおうかしら。(独自拡張をしちゃうと、本家がバージョンアップするたびにコチラも対応しなければならないのが面倒だけれども・・・・)
MITライセンスですが、隠すことでもないので修正箇所を公開。本家に取り込んでもらえないかしら?
HatenaBlogWriter.rb 94: class EntryFile 95: def initialize(filename) 96: @filename = filename 97: @header = { 98: title: "", 99: category: [], 100: draft: 'no', 101+ ##@@TSM BEGIN 102+ custom_url: "", 103+ ##@@TSM END 104: }
HatenaBlogWriter.rb 176: } 177+ ##@@TSM BEGIN 178+ ns = Atom::Namespace.new(:prefix => 'opt', :uri => 'http://www.hatena.ne.jp/info/xmlns#hatenablog') 179+ entry.set(ns,'custom-url',@header[:custom_url]) 180+ ##@@TSM END 181: entry.content = @content
HatenaBlogWriter.rb 199: def to_array 200: a = [ 201: "title: #{@header[:title]}", 202: "date: #{@header[:date]}", 203: "category: #{@header[:category].join(', ')}", 204: "draft: #{@header[:draft]}", 205+ ##@@TSM BEGIN 206+ "custom_url: #{@header[:custom_url]}", 207+ ##@@TSM END 208: "", 209: @content 210: ]
※ただし、削除処理の場合などは試験していないです。
2009年以前日記の、一日1画像ファイルの問題の修正 →前途多難
"はてなダイアリー"では、一日1記事。そして画像ファイルも一日一枚・・・・
まぁ2004年当時のストレージ事情であれば、仕方がない制限ですが、時代の進行とともにデジカメが一般化され、動画まで一般化され、ストレージ単価は急速に下がる一方。
そして、"はてなダイアリー"でも、そのしょぼい制限を回避するために、"はてなフォトライフ"という画像ストレージサービスが開始され、ダイアリーとフォトライフを併用するというスタイルに変化して、2018年まで過ごしてきました。
さて今回、はてなダイアリー → はてなブログに引っ越した際に、この一日1画像ファイルのコンバートが厄介であることを、前回の日記で書きました。
https://…/2018/11/08/ はてなダイアリーからはてなブログへの移行 残作業
一日の日記に、記事はn個、写真は1つという、n:1の関係。しかし"はてなブログ"ではこのような紐づけの表現ができず、1画像が1つの記事としてコンバートされてしまった・・・・
なので、とある記事を開くと、テキストが全く存在せず、写真が一枚だけ・・・・という不可解な現象が発生します。
該当する記事を調査したところ、1,500日超。
手作業ではやっていられないので、プログラムで画像だけの記事を抽出し、記事だけの日記に画像をマージするプログラムを作成し、PCローカルのテキストファイルを一括変換。
あとは、画像だけの記事をAtomPub APIで削除する処理も完成し、さぁ実行という直前で・・・・
おいおい。はてな社側の『皆様から頂いたコメントのコンバート処理』がアレで、画像だけの記事にその日のコメントが全部紐付けられてしまっている!
画像だけの記事を削除しちゃうと、これらのコメントも消えてしまう・・・・
どうしよう・・・・いよいよ自動化で逃げる手がなくなった・・・・。手作業かよ~
2009年以前の記事を見捨てるという方法もあるけれど・・・・ねぇ(泣)