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