# HG changeset patch # User "Rex Tsai " # Date 1235916845 -28800 # Node ID d9d3cdff27c6156479e637177f4bf9b914024823 # Parent 2cfa03edc22e39973a03941a4a6b2000ba0d5709 handling field not found error diff -r 2cfa03edc22e -r d9d3cdff27c6 Ikariam.pm --- a/Ikariam.pm Sun Mar 01 11:10:52 2009 +0800 +++ b/Ikariam.pm Sun Mar 01 22:14:05 2009 +0800 @@ -638,9 +638,18 @@ my $city = Ikariam::Cities->retrieve($cityId); $city->delete; } else { - $self->{mech}->submit_form( - form_number => 1, - fields => $fields); + $self->{mech}->form_number(1); + + foreach my $k (keys(%{$fields})) { + eval{ + $self->{mech}->field($k, $fields->{$k}) + }; + warn $@ if($@); + } + $self->{mech}->submit(); +# $self->{mech}->submit_form( +# form_number => 1, +# fields => $fields); } } else { # put the id in the friends.txt file. @@ -1262,17 +1271,21 @@ password => $self->{pass}, ]); - my @cities = Ikariam::Extractor->new(content => $res->content)->find('//option[@class="avatarCities coords"]/@value'); + while (1) { + my @cities = Ikariam::Extractor->new(content => $res->content)->find('//option[@class="avatarCities coords"]/@value'); - if($#cities<0) { - die ("login failed\n"); - } - foreach (@cities) { - $self->{'cities'}->{$_} = {}; - $self->{'cities'}->{$_}->{id} = $_; - if(-f "city-$_-dump.yaml") { - $self->{'cities'}->{$_} = LoadFile("city-$_-dump.yaml"); + if($#cities<0) { + warn ("login failed\n"); + next; } + foreach (@cities) { + $self->{'cities'}->{$_} = {}; + $self->{'cities'}->{$_}->{id} = $_; + if(-f "city-$_-dump.yaml") { + $self->{'cities'}->{$_} = LoadFile("city-$_-dump.yaml"); + } + } + last; } }