Mercurial > eagle-eye
view scan.pl @ 30:de5de6d472f9
added space checking
author | "Rex Tsai <chihchun@kalug.linux.org.tw>" |
---|---|
date | Fri, 10 Oct 2008 05:24:04 +0800 |
parents | 51a35c3d057e |
children | 704d76b67670 |
line wrap: on
line source
#!/usr/bin/perl use strict; use Data::Dumper; use Ikariam; package main; sub saveCities { my ($island, @cities) = @_; die ("empty cities list.\n") if ($#cities == -1); foreach my $city (@cities) { $city->{island} = $island; $city->{'time'} = time; if(my $c = Ikariam::Cities->retrieve($city->{cityId})) { foreach my $i (keys(%$city)) { eval($c->$i($city->{$i})); # printf("%s %s ", $i, $city->{$i}); } # print ("\n"); $c->autoupdate(1); $c->update(); } else { Ikariam::Cities->insert($city); } printf("city %d %s saved\n", $city->{cityId}, $city->{cityname}); my $user = Ikariam::User->retrieve($city->{user}); if(!defined($user) || $user->time le (time - 60*60*12)) { # Download user profile. foreach my $x (qw/score army_score_main trader_score_secondary/) { my $users = $::i->viewScore($x, $city->{owner}, 0); saveUser($users); } } } } sub saveUser { my $users = shift; foreach my $h_user (values(%{$users})) { # print(Dumper($user)); printf("Saving user %s\n", $h_user->{'name'}); $h_user->{'time'} = time; my $user; if($user = Ikariam::User->retrieve($h_user->{id})) { foreach my $i (keys(%$h_user)) { # eval($c->$i($h_user->{$i})); $user->set($i => $h_user->{$i}); } } else { $user = Ikariam::User->insert($h_user); } $user->update(); } } our $i = new Ikariam("s2.ikariam.tw", "chihchun", "c795d57d"); my @islands; if($#ARGV == 1) { $i->login; @islands = $i->viewWorldMap($ARGV[0], $ARGV[1]); } elsif($#ARGV == 0) { $i->login; my $island = $ARGV[0]; my @cities = $i->viewIsland($island); saveCities($island, @cities); $i->logout; return; } elsif($#ARGV == -1) { $i->login; @islands = $i->viewHomeMap(); } else { die("Usage: $0\nUsage: $0 x y\n"); } foreach my $h_island (@islands) { printf("checking island %d\n", $h_island->{id}); my $island; if($island = Ikariam::Island->retrieve($h_island->{id})) { foreach my $i (keys(%$h_island)) { $island->set($i => $h_island->{$i}); } } else { $island = Ikariam::Island->insert($h_island); } # scanning the island if($island->time le (time - 60*60*12 )) { my @cities = $i->viewIsland($h_island->{id}); saveCities($h_island->{id}, @cities); } $island->set('time', time); $island->update(); } $i->logout; # $i->getCityInfo();