Humanity

Edit the world by your favorite way

Hatena Diary Writer Wrapper

注:このエントリは随時更新中です


はてなダイアリーライター(通称はてダラ)のラッパーとなるコマンド、はてなダイアリーライターラッパー(長い)というのを作りました。

tyru/hatenadiary-writer-wrapper · GitHub

またforkさせてもらったオリジナルのはてダラこちら


はてダララッパー(なんか微妙・・・)はgitみたいなスクリプトで、
とりあえず今は下の様なコマンドを持ってます。(随時追加予定)


注:いくつかのコマンドは追加モジュールが必要です。いずれモジュールも一緒に付けるつもりです。

注:from Rakefileと書いてあるものは、id:kosekiさんが書いたRakefileの同名のコマンドからアイデアをいただきました。なので「rake コマンド」で同様のことが可能です。(一部引数を拡張したものあり)

  • init
    • from Rakefile
    • 以下id:kosekiさんのREADMEより
    • hww.plだと別のディレクトリを指定することもできます
    • ただディレクトリだけなら自分で作ればいいだけです
    • Rakefileではディレクトリはtext固定として扱ってるので、別のディレクトリにテキストを置きたい方もtextにシンボリックリンクを貼ることをおすすめします(Linuxcygwinから使う場合)
  • status
    • from Rakefile
    • アップデートされたファイルをリストアップ
  • update
    • from Rakefile
    • release --trivial(-t)と一緒
  • touch
    • from Rakefile
    • 以下id:kosekiさんのREADMEより
    • touch.txtを現在時刻に設定。今までの修正を更新に含めない。
    • 引数を指定するなら Date::Manip が必要
  • diff
    • from Rakefile
    • もし引数としてテキストファイルを与えればそのファイルと現在はてダで公開されてるものとのdiffを表示する
    • 引数を何も与えなければアップデートされたファイル全てのdiffを表示する
  • update-index
    • テンプレートファイルを元にindex.htmlを作る
    • 詳しくはヘルプ参照(例も載せてある)
    • HTML::TreeBuilder, HTML::Template, DateTime, Time::Local が必要
  • help
    • ヘルプメッセージ表示
  • version
    • バージョンメッセージ表示
  • chain
    • いくつかのコマンドを続けて実行。
    • e.g.: perl hww.pl chain gen-html from to -- update-index index.tmpl to -- version
    • ただ上の操作はperl hww.pl gen-html -I index.tmpl from toで可能
    • ぶっちゃけあまり必要ではない
  • verify
    • 重複した日付のテキストファイルがないか確認
    • いずれその他のチェックもする予定
  • apply-headline
    • ファイル中の見出しを取ってきてそれをつけたファイル名に変更します
    • 例えば「2009-08-03.txt」というファイルにHeadLineとHeadLine2という見出しがあれば、「2009-08-03-HeadLine-HeadLine2.txt」というファイルにリネームされる
    • 何個も見出しがついた日は予想外に長くなる可能性が
    • 「YYYY-MM-DD.txt」形式に戻すオプション追加予定(今思いついた)
  • load
    • はてなからエントリを取ってくる
    • 全てのエントリを取ってくることもできる。結構早い。
    • 下書きを取ってくることもできる。ただし現状再ログインが必要になったりしてうまくクッキーを読み込めてない気がする・・・
    • --all(-a)オプションを使うには XML::TreePP が必要
    • --draft(-d)オプションを使うには XML::TreePP, LWP::Authen::Wsse が必要
  • その他実装してないコマンド
    • タグや見出しを操作するコマンド


またそれぞれのヘルプは

$ perl hww.pl help <コマンド>

とすれば見られます。
いくつかのコマンドではまだヘルプを書いてなかったり更新してないものもありますが・・・
(ヘルプは lib-hww/pod/ 以下にpod形式で置いてあります)


いくつかのコマンドではディレクトリを受け取れるようになってます。
hw.plでは、入っているディレクトリの設定を変えるには設定ファイル(config.txt)を変更する必要があったので、いくつかのダイアリーを持っていた場合にいくつかの設定ファイルを書く必要があったのが、はてダララッパー(やっぱ微妙・・・)では引数として受け取れるようにしました。
指定されるとconfig.txtの設定を上書きします。
(元の設定ファイルは変更されません。あくまでコマンド実行中にというだけです)

一部のコマンドでは対応できてないものもあると思いますが、対応する予定です。
(それかhww.plのオプションとしてつければいいですね。今気づきました)




ダウンロード

gitを持ってるなら

$ git clone git://github.com/tyru/hatenadiary-writer-wrapper.git

でダウンロードできます。


gitを持ってないなら

のどちらかで僕がlatestというタグを最新版のものにするのを忘れてなければ最新版のものをダウンロードできるはずです。




気を付けること

gitのようにhww.pl本体のオプションとコマンドのオプションがあるので注意。
コマンドは「引数で一番最初のオプションでない文字列」です。
もう少し正確に言うと「引数で一番最初の最初が'-'でない文字列」のことを言います。
ややこしいですね。例を見ると分かるかと思います。

# twitter-textというディレクトリをテキストファイルの入ったディレクトリとして指定して
# twitterグループにアップロード
$ perl hww.pl -g=twitter release twitter-text

上のを

$ perl hww.pl -g twitter release twitter-text

としてしまうと「twitter」がコマンド名として見なされてしまうので注意。




tips

これ以外にも実際に日記を書く際に有用なtipsなどは結城さんのHPを参照してください。




自分用TODO

書いてて気づいたこと含む。
これ以外はソースに書いてあるはず。

  • 追加モジュール(少なくともコアでないモジュール)をextlibというディレクトリにまとめる。
  • hww.plにテキストファイルの入ったディレクトリを指定するオプションを追加する。(今までのコマンドで引数として対応してるものはどうしよう...)
  • rake diffがこのエントリを書いてる時にかなり有用なことに気づいたのではてダララッパー(微mry)にも実装する → 実装した