diff options
Diffstat (limited to 'BuildTools/Gource/GetGravatars.py')
-rwxr-xr-x | BuildTools/Gource/GetGravatars.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/BuildTools/Gource/GetGravatars.py b/BuildTools/Gource/GetGravatars.py new file mode 100755 index 0000000..c6602ad --- /dev/null +++ b/BuildTools/Gource/GetGravatars.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +import subprocess, os, sys, hashlib, urllib + +GRAVATAR_URL = "http://www.gravatar.com/avatar/%(id)s?d=404" + +if len(sys.argv) != 2 : + print "Usage: " + sys.argv[0] + " <output-dir>" + sys.exit(-1) + +output_dir = sys.argv[1] + +# Retrieve the list of authors +authors = {} +p = subprocess.Popen("git log --pretty=format:'%ae|%an'", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=(os.name != "nt")) +for line in p.stdout.readlines() : + author_components = line.rstrip().split("|") + authors[author_components[0]] = author_components[1] +p.stdin.close() +if p.wait() != 0 : + print "Error" + sys.exit(-1) + +# Get & save the avatars +os.makedirs(output_dir) +for email, name in authors.items() : + print "Processing avatar for " + name + " <" + email + ">" + filename = os.path.join(output_dir, name + ".png") + if os.path.isfile(filename) : + print "-> Already there. Skipping." + continue + + m = hashlib.md5() + m.update(email) + url = GRAVATAR_URL % {"id" : m.hexdigest()} + print "- Downloading " + url + f = urllib.urlopen(url) + input = None + if f.getcode() == 200 : + input = f.read() + f.close() + if input : + print "- Saving file " + filename + f = open(filename, "w") + f.write(input) + f.close() + else : + print "- No Gravatar found" |