For example, to create the United Kingdom's flag that is 100 pixels wide, you can access this URL:
http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Flag_of_the_United_Kingdom.svg/100px-the_United_Kingdom.png
which produces this flag:
So I developed a Perl script that would automate this process for me. I've included it below for anyone else who might need flag images. Note that I had to set the user agent string, or Wikipedia would not respond properly to the http request. If you use this script to download a lot of images, please be nice throttle your requests with the sleep() command.
#!/usr/bin/perl
# This script will attempt to download the national flag
# produced by Wikipedia using the $flag country name and
# $image_size as the image width. By Frank McCown.
use LWP::Simple;
use HTTP::Response;
use strict;
# Width of the image
my $image_size = 100;
# Country's name
my $flag = 'the United Kingdom';
my $filename = lc $flag;
$filename =~ s/\s/_/g;
$filename = $filename . "_" . $image_size . ".png";
my $url_filename = $flag;
$url_filename =~ s/\s/_/g;
my $img_url = "http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Flag_of_" .
$url_filename . ".svg/" . $image_size . "px-" . $url_filename . ".png";
print "Getting $img_url\n";
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 Firefox 5.6');
$ua->from('your@email.com');
my $response = $ua->get($img_url);
if ($response->is_success) {
print "Writing to $filename\n";
open(IMG, ">$filename");
binmode(IMG);
print IMG $response->content;
close IMG;
}
else {
print "ERROR: Could not download.\n";
}
No comments:
Post a Comment