All pastes #126638 Raw Edit

download_clouds.py

public python v1 · immutable
·published 2006-08-11 17:40 UTC
rendered paste body
## download_clouds.py ver. 1.1## Download coulds map for xplanet from a random mirror, optionally# save the one to archive directory.## Usage:#   python download_clouds.py - to save the output as clouds_2048.jpg#   python download_coulds.py output.jpg - to save the output as output.jpg## (C) 2004 Michal Pasternak <michal@pasternak.w.lub.pl>## This file is in public domain.# user-tunable parameters:# how often to download the image?maxDownloadFrequencyHours = 3# how many times to retry if download fails (each time tries using a# different mirror)maxRetries = 3# default filename of the output file (in current directory). You can# specify it on the command linedefaultOutputFile = "/other/capture/clouds/clouds_2048.jpg"# archive dir - where to save old files?archiveDir = "/other/capture/clouds/archive"# The list of mirrors. Add new ones here.#mirrors = [    "ftp://mirror.pacific.net.au/pub2/xplanet/clouds_2048.jpg", #               "http://spierepf.dyndns.org/~peter/clouds_2048.jpg", #               "http://liotierj.free.fr/clouds_2048.jpg", #               "http://www.ruwenzori.net/earth/clouds_2048.jpg", #               "http://xplanet.dyndns.org/clouds/clouds_2048.jpg", #               "http://userpage.fu-berlin.de/~jml/clouds_2048.jpg", #               "http://rcswww.urz.tu-dresden.de/~es179238/clouds_2048.jpg", #               "http://home.megapass.co.kr/~jhkim1101/cloud_data/clouds_2048.jpg", #               "http://user.chol.com/~winxplanet/cloud_data/clouds_2048.jpg",#               "http://home.megapass.co.kr/~gitto88/cloud_data/clouds_2048.jpg", #               "http://myhome.hanafos.com/~hyoungkee/cloud_data/clouds_2048.jpg", #               "http://giga.forfun.net/clouds_2048.jpg", #               "http://php.nctu.edu.tw/~ijliao/clouds_2048.jpg", #               "ftp://ftp.iastate.edu/pub/xplanet/clouds_2048.jpg", #               "http://www.nmt.edu/~houdini/clouds_2048.jpg", #               "http://enekoalonso.com/projects/xplanet/clouds_2048.php", #               "http://xplanet.nerp.net/clouds_2048.php" ]mirrors = [    "ftp://ftp.iastate.edu/pub/xplanet/clouds_2048.jpg" ]#, #               "http://xplanet.dyndns.org/clouds/clouds_2048.jpg", #               "http://userpage.fu-berlin.de/~jml/clouds_2048.jpg", #               "http://php.nctu.edu.tw/~ijliao/clouds_2048.jpg", #                "http://xplanet.nerp.net/clouds_2048.php" ]# end of user-tunable parametersimport random, urllib, sys, stat, time, os# set output file nametry:    outputFile = sys.argv[1]except:    outputFile = defaultOutputFile    pass# check if the file exists and is old enough to overwritetry:    s = os.stat(outputFile)    mtime = s[stat.ST_MTIME]    fs = s[stat.ST_SIZE]    found = Trueexcept:    mtime = 0    fs = 0    found = False    passif time.time() - mtime < maxDownloadFrequencyHours * 3600 and fs > 400000:    sys.stderr.write("File is already up to date!\n")    sys.exit(0)else:    if found and archiveDir is not None:	# archivize old file	import shutil	archName = os.path.join(archiveDir, time.strftime("%Y-%m-%d_%H-%I") + "_" + os.path.basename(outputFile))	sys.stderr.write("Archivizing old file to %s...\n" % archName)	shutil.move(outputFile, archName)	pass    pass# ok, download:for a in range(maxRetries):    try:        url = mirrors [ random.randint(0, len(mirrors)-1) ]        sys.stderr.write("Using %s\nDownloading...\n" % url)        urllib.urlretrieve(url, outputFile)        break    except:        pass    pass