Skip to content

Instantly share code, notes, and snippets.

@aanatoly
Created December 5, 2015 16:44
Show Gist options
  • Save aanatoly/42eac40250baaabd8643 to your computer and use it in GitHub Desktop.
Save aanatoly/42eac40250baaabd8643 to your computer and use it in GitHub Desktop.
python script to fetch gravtar image
#!/usr/bin/python
'''Get your grvatar image
'''
prog_name = "wget-gravatar"
prog_version = "0.1"
prog_epilog = '''
Example:
%(prog)s --email me@foo.com -o /tmp/gravatar
'''
############################################
# Imports
############################################
import logging
import argparse
import json
import os
import sys
import signal
import time
import hashlib
import subprocess as sp
############################################
# Logging
############################################
try:
# Module logging_conf should intialize root logger and, perhaps some
# others, and assign 'log' variable to proper logger.
from logging_conf import log
except:
log = logging.getLogger()
log.setLevel(logging.WARNING)
# log.setLevel(logging.DEBUG)
h = logging.StreamHandler()
# f = MyFormatter()
f = logging.Formatter()
h.setFormatter(f)
log.addHandler(h)
############################################
# Argument parsing
############################################
p = argparse.ArgumentParser(
prog=prog_name,
formatter_class=argparse.RawDescriptionHelpFormatter,
description=__doc__,
epilog=prog_epilog)
p.add_argument("--debug", help="debug mode", dest='debug', action="store_true")
p.add_argument("--version",
action='version',
version='%(prog)s ' + prog_version)
p.add_argument("-v", help="verbose mode", dest='verbose', action="store_true")
p.add_argument("-e",
help="e-mail assigned with your gravatar profile",
dest='email', metavar='email', required=True)
p.add_argument("-o",
help="output file, default '%(default)s'",
dest='output', metavar='path', default='gravatar')
args = p.parse_args()
if args.verbose:
log.setLevel(logging.INFO)
if args.debug:
log.setLevel(logging.DEBUG)
log.debug("Args: %s", json.dumps(vars(args), indent=4, sort_keys=True))
############################################
# Misc
############################################
def mkdir_p(path):
path = os.path.expanduser(path)
try:
os.makedirs(path)
except OSError as exc: # Python >2.5
if exc.errno == os.errno.EEXIST and os.path.isdir(path):
pass
else:
raise
return path
def signal_handler(signal, frame):
print
sys.exit(1)
############################################
# Main
############################################
cdir = '~/.config/get-gravatar/'
cdir = os.path.expanduser(cdir)
def get_gravatar(email, output):
log.debug("email '%s', out '%s'", email, output)
md5 = hashlib.md5(email.lower().encode()).hexdigest()
cmd = ['wget', '-O', output, 'http://www.gravatar.com/avatar/' + md5]
log.debug("cmd %s", cmd)
sp.check_call(cmd)
def main():
signal.signal(signal.SIGINT, signal_handler)
get_gravatar(args.email, args.output)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment