#!/usr/bin/perl ## no critic (InputOutput::RequireBriefOpen) #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 repository found in current path\n") unless -r './.git'; mkdir($output_dir) unless -d $output_dir; open( my $GITLOG, '-|', q/git log --pretty=format:"%ae|%an" --reverse/ ) 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 = "https://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;