diff options
-rw-r--r-- | BuildTools/Gource/.gitignore | 2 | ||||
-rwxr-xr-x | BuildTools/Gource/CreateVideo.sh | 8 | ||||
-rwxr-xr-x | BuildTools/Gource/GetGravatars.py | 48 | ||||
-rwxr-xr-x | BuildTools/Gource/RunGource.sh | 3 |
4 files changed, 61 insertions, 0 deletions
diff --git a/BuildTools/Gource/.gitignore b/BuildTools/Gource/.gitignore new file mode 100644 index 0000000..d7dc963 --- /dev/null +++ b/BuildTools/Gource/.gitignore @@ -0,0 +1,2 @@ +UserImages +*.mp4 diff --git a/BuildTools/Gource/CreateVideo.sh b/BuildTools/Gource/CreateVideo.sh new file mode 100755 index 0000000..92083f0 --- /dev/null +++ b/BuildTools/Gource/CreateVideo.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# Can be 25, 30, or 60 (per Gource) +FRAMERATE=25 +BITRATE=3000K + +BuildTools/Gource/GetGravatars.py BuildTools/Gource/UserImages +BuildTools/Gource/RunGource.sh --disable-progress --stop-at-end -640x360 $@ --output-framerate $FRAMERATE --output-ppm-stream - | ffmpeg -y -b $BITRATE -r $FRAMERATE -f image2pipe -vcodec ppm -i - -vcodec libx264 -vpre default BuildTools/Gource/SwiftGource.mp4 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" diff --git a/BuildTools/Gource/RunGource.sh b/BuildTools/Gource/RunGource.sh new file mode 100755 index 0000000..7f5e967 --- /dev/null +++ b/BuildTools/Gource/RunGource.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +gource --user-scale 2.0 --file-filter 3rdParty --user-image-dir BuildTools/Gource/UserImages -s .5 --hide filenames $@ |