Newer
Older
ondotori / merge.py
#!/usr/bin/env python

import csv
import lzma
from datetime import date, timedelta

result = []
sensorlist = [1,2,4,8,11,12,13,14,15,16,17,18,19,20]
#sensorlist = [8]

def gather_data(frm, to, which):
    global result
    if which == 0:
        dbdate = frm
    else:
        dbdate = to
    dname = "%04d%02d" % (dbdate.year, dbdate.month)
    frm_s = frm.strftime("%Y/%m/%d 00:00")
    to_s  = to.strftime("%Y/%m/%d 23:59")
    tmplist = []
    for i in sensorlist:
        no = str(i)
        fname = "./data/"+no+"/"+dname+".csv.xz"
        r1 = csv.DictReader(lzma.LZMAFile(fname), fieldnames=["datetime", "temp-"+no, "humid-"+no])
        tmp=filter(lambda x: x["datetime"] >= frm_s and x["datetime"] <= to_s, r1)
        if tmp == []: continue
        result+=(tmp)
    r1 = csv.DictReader(lzma.LZMAFile("JMA.csv.xz"), fieldnames=["datetime", "temp-jma", "humid-jma", "rainfall"])
    tmp=filter(lambda x: x["datetime"] >= frm_s and x["datetime"] <= to_s, r1)
    result += (tmp)

to = date.today()
frm = to - timedelta(15)

gather_data(frm, to, 0)
if frm.month != to.month:
	gather_data(frm, to, 1)

# align on 10 min.

for i in range(len(result)):
	result[i]["datetime"] = result[i]["datetime"][:-1]+"0"
	
result.sort(key=lambda x: x["datetime"])
prev=""
fa = []
for entry in result:
	if entry["datetime"] < "2016/12/01 00:00": continue
	if entry["datetime"] == prev:
		fa[-1] = {k: v for dic in [entry, fa[-1]]
			for k, v in dic.items()}
	else:
		fa.append(entry)
	prev = entry["datetime"]

print "var data = "
print fa