Humanity

Edit the world by your favorite way

はてダバックアップ計画 3日目

エクスポートURLにGETするとなぜか302 Movedとなってしまう。
しかも遷移先はトップページ(http://d.hatena.ne.jp/tyru/)。

ログインは自分ではできているはずなんだけど、
多分そこらへんが間違っているのは確か。

はてダバックアップ計画 2日目 - Humanity

わかった・・・ログインした後LWP::UserAgentにcookie指定してないだけだった・・・ orz
分かってからはとんとん拍子に進んでいくつかの機能を足してみた。


あとgithubのpull requestのメッセージでも言ったのですが
届いてるかちょっと不安だしはてダで言った方が簡単なので
ここでも言います。> id:koseki2さん

githubでも送った部分を引用します。

パスワードを間違えていた場合にlogin()が再度訊き直すようにしました。
また他にもいくつかの機能を追加してみましたので
僕のforkの方に目を通していただけるとうれしいです。

機能はブランチごとに分かれています。
僕が送ったのはpatch-retry-loginというブランチのパッチのみです。
もしよかったらパッチを取り込んでいただけると幸いです。


またmyworkというブランチでは全てのブランチの機能のパッチを当てた上で
さらに機能を追加したり「今風」のPerlらしい書き方にしていきたいと思っています。

具体的に言うと次のような感じです。

  • ファイル名を扱う場合にはFile::Specを使う
  • ベアワードのファイルハンドルをスカラーのファイルハンドルに直す
  • WWW::HatenaLoginなどのはてな用のモジュールを使う?
  • 当時にはなかったHatena AtomPubという便利なAPIがあるのでそれを使う
  • サブルーチン名の前の&を削除(せっかくプロトタイプ指定しているのに意味がなくなるので)
  • ヘルプメッセージはpodに書いてPod::Usageを使ってヘルプ表示する
  • use warnings
  • system()にはスカラーじゃなく配列を渡す(ただスクリプトなのでセキュリティを気にする必要はあまりない?)

こちらもよければ目を通していただけるとうれしいです!

あと、スクリプト内の$VERSIONを上げるのを忘れていたので
もしパッチを取り込んでいただける際はこれも修正していただけると助かりますorz
僕はmyworkでは"1.4.2"にしました。
度々要求をしてしまってすみません orz


追記:

  • ファイル名を扱う場合にはFile::Specを使う
  • ベアワードのファイルハンドルをスカラーのファイルハンドルに直す
  • サブルーチン名の前の&を削除
  • ヘルプメッセージはpodに書いてPod::Usageを使ってヘルプ表示する
  • use warnings
  • system()にはスカラーじゃなく配列を渡す(ただスクリプトなのでセキュリティを気にする必要はあまりない?)

はmyworkでは既に直しました。

  • Hatena AtomPub APIを使う

はかなり書き直さなきゃならないので必要な所だけやろうかなという感じです。


追記2:
File::Specは「今風」な感じではないけど、
使う箇所が少なかったのでわざわざ組込みでない
Path::Classを使うのはもったいなかった。