summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'BuildTools/Gource/GetGravatars.py')
-rwxr-xr-xBuildTools/Gource/GetGravatars.py48
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"