最近はPlaggerで遊ぶのが楽しかったりするのですが、例のピザの注文をやろうとしてもうまく動かないのです。いろいろと見ていたのですが、結局Pizza.pmを書き換えたらうまく動きました……と思ってたらまた動かなくなっていたのですが、もしかしたら出前館の中の店自体が営業していないからかも知れません。この時間だとウェブからも申し込めないし。それにうまく動いたといってもtest: 1
を書いておいたので実際には注文は発生していません。ただ注文の確認画面までは行けたのでおそらく大丈夫だったのだと思います。
そういうわけで夜が明けてピザ屋が動き出すまで確認のしようがないのですが、とりあえず昨日の夜に注文の確認画面まで行けたときのPizza.pmの差分を記しておきます。perlはあんまり分からないのですが、WWW::Mechanizeのマニュアルを読んで試してみた結果です。これで明日注文出来るといいなあ。ちなみに夜ごはんはカレーでした。帰ってきたら彼女が作ってくれてた。
出前館に届け先を複数指定している場合でもPlaggerで届け先を選びたい! という潜在的なニーズに応えられるようにしてみました。
ボクの場合は自宅と職場を登録しているので、2番目の届け先の職場を指定するばあいはdeliver_to: 1
、1番目ならdeliver_to: 0
です。省略した場合は0、つまり登録されているひとつめの届け先が指定されます。
突っ込みよろしくお願いします。
無事、注文できました。
--- Pizza.pm.original Wed Aug 30 02:37:57 2006
+++ Pizza.pm Wed Aug 30 10:19:18 2006
@@ -30,14 +30,14 @@
my $mech = Plagger::Mechanize->new;
- $mech->get('http://demae-can.com/');
+ $mech->get('http://demae-can.com/index.php?action=dream_login_index');
unless ($mech->success) {
$context->log(error => "Connect faled.");
return;
}
- $mech->field('id' => $self->conf->{username} || $self->conf->{email});
- $mech->field('pass' => $self->conf->{password});
+ $mech->set_fields('id' => $self->conf->{username} || $self->conf->{email});
+ $mech->set_fields('pass' => $self->conf->{password});
$mech->click;
if ($mech->content !~ m{http://demae-can.com/search/shop_list.html\?word=0}) {
@@ -47,7 +47,8 @@
return;
}
- $mech->get('/search/shop_list.html?word=0');
+ my $deliver_to = $self->conf->{deliver_to} || 0;
+ $mech->get("/search/shop_list.html?word=$deliver_to");
unless ($mech->success) {
$context->log(error => "Can't find group list.");
print $mech->content;
yamlファイルにオプションを追加。
- module: Notify::Pizza
config:
deliver_to: 1