Yet Another Small はてダラ

ごく簡単な仕様

元祖はてダラとの違い

「元祖はてダラ」と同じなんですが(というか、実際には縮小版なんですが)、AtomPubではできそうにないことがいくつかあります。

  • Cookieを使って、ログインしたことにしてしまうcオプション
  • いわゆる「ちょっとした更新」のチェックマークであるtオプション
  • ユーザーエイジェントの変更であるaオプション
  • タイムアウトであるTオプション
  • グループでのダイアリーにするgオプション(なぜかグループの方ではAtomPubが使えないらしい)

それから、「元祖はてダラ」にはないものは次の2つ。

  • 下書き等を登録するようにするために、タイトル行にdraft:を入れるようにした。
  • 更新か新規作成かは「<!--blog_id=xxxxx-->」か「<!--epoch=1353413527-->」が2行に存在しているかどうかで判断することにした(暫定)。

変更したものは次の2つ。

  • 画像は本文中にファイル名を書いておき、その画像ファイルがあった場合は、それをはてなフォトライフにアップし、その写真IDを取得して、ファイル名をそのIDに書き換える。したがって、フォトライフの容量無いでれば、何枚でもアップできるようになる(png,jpg,gifが対象)。
  • 削除はタイトル行の最後に:delete:を書き込むようにした。
実際の仕様
  1. 2012-11-20.txtのような「YYYY-MM-DD.txt」形式のファイルを対象にする。
  2. スクリプトを実行した時にtouchファイルを作成し、タイムスタンプを保存しておき、上記の対象のファイルが存在しても、そのファイルのタイムスタンプがtouchファイルのタイムスタンプと比較して古ければ、そのファイルは対象にしない。
  3. 1行目がタイトル。
  4. 2行目が「*」で始まる部分が小見出しになる。
  5. 1行目が「:delete:」で終わっている場合、その日の日記を削除する。
  6. 画像ファイルは「元祖はてダラ」の方式とは違い、文章中に「[^\w+(jpg|png|gif)$]---大文字小文字区別せず」という1行があったら、そのファイルを「はてなフォトライフ」にその画像をアップロードし、そのファイル名を「f:id:hatenadiary:20041007101545j:image\<」という文言にもとの文を書き換えて、その場所にその画像を表示させるようにします。アップロードできる最大の画像数は、設定で変えられるようにする。注意すべきは、これを元のファイル名にすれば再度アップロードが行われるので、画像を更新したいような場合はこの方法で可能ですが、もとのファイルを削除したりする機能はありません(要検討)。
  7. 冒頭が「draft:」で始まっているタイトル行の場合は対象になるファイルを「下書き保存」する。下書き保存は登録した時のエポック(epoch)で管理していて、「d.hatena.ne.jp/chikkun530/draft?epoch=1353413527」という感じなので<!--epoch=1353413527--> という独立した行があった場合は、更新とする(それらを削除したり、そのepochが「はてなダイアリー」になかったりしたら、新規登録する)。
  8. 正式登録・更新の場合も下書きと同様に、最初に登録した際に<!--blog_id=xxxxx-->を保存しておき、それで判断する。
  9. コマンドオプション
    1. u ユーザ名
    2. p パスワード
    3. d デバッグ表示
    4. help ヘルプメッセージ表示
    5. version version表示
    6. f 送信ファイルの指定
    7. M見出しスタンプの置換禁止
    8. n 設定ファイルの指定(デフォルトはconfig.txt)
  10. 設定ファイルで上記設定が優先する
TODO
  1. global変数が多すぎなので、もう少し丁寧にソースを見直す
  2. はてなダイアリーでの日記の表示モードの違いでURLが違ったりしないか要調査
  3. 画像ファイルを管理すべきかどうかを検討
  4. エラー処理ももう少し検討