2011年9月5日月曜日

大商戦の総影響度がアテにならないので

アテにならないので、自分で調べてきたよ!

2011/09/05 20:39現在の総影響度合計

ポルトガル : 2859
イスパニア : 2814
フランス : 2428
イングランド : 2293
ネーデルランド : 2283
ヴェネツィア : 1986
オスマントルコ : 1025

イングとネデが超僅差!
午前中に調べたときはイングがネデに負けてたんだけど、盛り返してきたようです。

各街ごとの影響度はここを → here



(おまけ)
影響度を調べるのに、ちょちょっと作ったPerlスクリプトです → here
$gcidにはGamecity市民ID、$passにはパスワードを入れてね!!
#!/usr/bin/perl
use strict;

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Cookies;
use URI::Escape;

#-----------------------------------
my $gcid = '********';
my $pass = '********';
my $sleep_time = 0;
my $retry = 5;
#-----------------------------------

{
	my $ua = create_ua();
	login($ua, $gcid, $pass) or die "cannot login";
	
	my @towns = ((1..162),(164..167));
	
	my %POWER = (
		'イスパニア' => 0,
		'ポルトガル' => 0,
		'ヴェネツィア' => 0,
		'フランス' => 0,
		'ネーデルランド' => 0,
		'イングランド' => 0,
		'オスマントルコ' => 0
	);
	
	foreach ( sort { $a <=> $b } @towns ) {
		my %power = get_town_info($ua, $_);
		foreach ( keys %POWER ) {
			$POWER{$_} += $power{$_};
		}
	}
	
	print "\n総影響度合計\n";
	foreach ( keys %POWER ) {
		print "\t$_ : $POWER{$_}\n";
	}
}

#-----------------------------------

sub create_ua{
	my $cookie_jar = new HTTP::Cookies(hide_cookie2 => 1, ignore_discard => 1);
	my $ua = new LWP::UserAgent(cookie_jar=>$cookie_jar);

	$ua->agent('Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8.12) Gecko/20070219 Firefox/2.0.0.4');
	$ua->default_header('Accept'=>'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1');
	$ua->default_header('Accept-Language'=>'ja, en;q=0.66, en-us;q=0.33');
	$ua->default_header('Accept-Charset'=>'Shift_JIS,utf-8;q=0.7,*;q=0.7');

	return $ua;
}


sub login{
	my ($ua, $gcid, $pass) = @_;

	my $url = 'http://www.gamecity.ne.jp/dol/web/d';
	my $req = new HTTP::Request('POST', $url);
	my %content = ('gcid'=>$gcid, 'pass'=>$pass, 'Act'=>'contract');
	my $content = join('&', map{$_.'='.uri_escape($content{$_})} keys %content);
	$req->content($content);
	$req->content_length(length $content);
	$req->content_type('application/x-www-form-urlencoded');

	my $res = $ua->request($req);
	my $string = $res->content;

	return $string !~ m/ログインできません/;
}


sub get_town_info{
	my ($ua, $town) = @_;

	my $url = 'http://www.gamecity.ne.jp/dol/web/d?Act=info_nation_town_i&Tid=' . $town;
	my $req = new HTTP::Request('GET', $url);
	my $name;
	my @result;

	my $r = $retry;
	while (1) {
		my $res = $ua->request($req);
		my $string = $res->content;
		$string =~ s/\r\n/\n/g;

		($name) = ($string =~ m/<\/td>/);
		@result = ($string =~ m/([^<]+)<\/td>\n(\d+)\%<\/td>/g);

		last if @result;
		warn("情報取得失敗 $town\n");
		die if (--$r <= 0);
	}

	print "$town $name\n";
	print "\t" . join(" ", map { "$_%" } @result) . "\n";

	return @result;
}

0 件のコメント:

コメントを投稿