#!/usr/bin/env python
from time import time
from os import stat, environ
from re import search
def nice_size(file):
size = stat(file).st_size
KB = 1024.
MB = 1024. * KB
GB = 1024. * MB
TB = 1024. * GB
if size < KB:
size, suffix = size, ''
elif size < MB:
size, suffix = size/KB, 'KB'
elif size < GB:
size, suffix = size/MB, 'MB'
elif size < TB:
size, suffix = size/GB, 'GB'
else:
size, suffix = size/TB, 'TB'
if size < 10:
return '%.1f %s' % (round(size,1), suffix)
else:
return '%d %s' % (round(size), suffix)
def nice_time(time):
if time < 15:
return 'moments'
if time < 90:
return '%d seconds' % time
if time < 60 * 60 * 1.5:
return '%d minutes' % (time / 60.)
if time < 24 * 60 * 60 * 1.5:
return '%d hours' % (time / 3600.)
if time < 7 * 24 * 60 * 60 * 1.5:
return '%d days' % (time / 86400.)
if time < 30 * 24 * 60 * 60 * 1.5:
return '%d weeks' % (time / 604800.)
return '%d months' % (time / 2592000.)
def file_info(file, name):
size = nice_size(file)
hash = search(r'\w{32}', open(file+'.md5', 'r').read()).group(0)
date = nice_time(time() - stat(file).st_mtime)
return '%(name)s
%(size)s, created %(date)s ago.
md5: %(hash)s.' % locals()
planet_link = file_info('history-latest.osm.bz2', 'Latest Full History Planet XML File')
planet_pbf_link = file_info('../../pbf/full-history/history-latest.osm.pbf', 'Latest Full History Planet PBF File')
print """
The files found here are complete copies of the OpenStreetMap.org database, including editing history. These are published under an Open Data Commons Open Database License 1.0 licensed. For more information, see the project wiki.
Complete OSM Data History |
Using The Data |
Extracts & Mirrors |
---|---|---|
%(planet_link)s %(planet_pbf_link)s The full history planet file contains the full editing history of the OpenStreetMap database in both XML and custom PBF formats. |
You are granted permission to use OpenStreetMap data by the OpenStreetMap License, which also describes your obligations. You can process the file or extracts with a variety of tools, although some tools for processing OSM data will only work on 'current' planets and will not process a 'history' planet available here. |
The complete history planet is extremely large, so you may prefer to use one of the available extracts (individual countries or states) from third parties. |
If you find data within OpenStreetMap that you believe is an infringement of someone else's copyright, then please make contact with the OpenStreetMap Data Working Group.
""" % locals()