## 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