50 lines
993 B
Perl
50 lines
993 B
Perl
#!/usr/bin/perl
|
|
#fetch Gravatars
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use LWP::Simple;
|
|
use Digest::MD5 qw(md5_hex);
|
|
|
|
my $size = 90;
|
|
my $output_dir = './avatars';
|
|
|
|
die("no .git/ directory found in current path\n") unless -d './avatars';
|
|
|
|
mkdir($output_dir) unless -d $output_dir;
|
|
|
|
open(GITLOG, q/git log --pretty=format:"%ae|%an" |/) or die("failed to read git-log: $!\n");
|
|
|
|
my %processed_authors;
|
|
|
|
while(<GITLOG>) {
|
|
chomp;
|
|
my($email, $author) = split(/\|/, $_);
|
|
|
|
next if $processed_authors{$author}++;
|
|
|
|
my $author_image_file = $output_dir . '/' . $author . '.png';
|
|
|
|
#skip images we have
|
|
next if -e $author_image_file;
|
|
|
|
#try and fetch image
|
|
|
|
my $grav_url = "http://www.gravatar.com/avatar/".md5_hex(lc $email)."?d=404&size=".$size;
|
|
|
|
warn "fetching image for '$author' $email ($grav_url)...\n";
|
|
|
|
my $rc = getstore($grav_url, $author_image_file);
|
|
|
|
sleep(1);
|
|
|
|
if($rc != 200) {
|
|
unlink($author_image_file);
|
|
next;
|
|
}
|
|
}
|
|
|
|
close GITLOG;
|
|
|