-
Notifications
You must be signed in to change notification settings - Fork 0
/
eomf_metadata.py
37 lines (30 loc) · 1.21 KB
/
eomf_metadata.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python
import os, re, subprocess, shlex
from datetime import datetime
import json
import hashlib
def exif(fname):
p = subprocess.Popen(shlex.split('exiftool -j %s' % fname), stdout=subprocess.PIPE)
return json.loads(p.communicate()[0])
def md5(fname):
return hashlib.md5(open(fname).read()).hexdigest()
def ls(dir):
return os.listdir(dir)
def asisoformat(string, datepart, format):
""" Example: asisoformat('Elreno-2012-0710-133001.jpg', '[0-9]{4}-[0-9]{4}-[0-9]{6}', '%Y-%m%d-%H%M%S') """
return datetime.strptime( re.search(datepart, string).group(), format).isoformat()
def phenocam(fname):
md = {}
md['date'] = asisoformat(fname, '[0-9]{4}-[0-9]{4}-[0-9]{6}', '%Y-%m%d-%H%M%S')
md['filename'] = os.path.abspath(fname)
md['host'] = os.uname()[1]
md['site'] = fname.split('-')[0]
md['exif'] = exif(fname)
md['url'] = 'http://static.cybercommons.org/phenocam/%s/%s' % (md['site'],fname)
md['size'] = os.path.getsize(fname)
md['md5'] = md5(fname)
return json.dumps({'date_keys': ["date"], 'database':'eomf_phenocam', 'collection': 'data', 'data': md })
if __name__ == '__main__':
import sys
fname = sys.argv[1]
print phenocam(fname)