#!/bin/env python

from urllib2 import urlopen
from datetime import datetime, timedelta
from  matplotlib import pyplot as plt

dem_target = 7000
lwap_target = 2000

today = datetime.today()
date = (today - timedelta(days=int(not bool(today.hour)))).strftime('%Y%m%d') 
hour = today.hour + 24 * int(not bool(today.hour))

url = urlopen('http://www.wesm.ph/chart/export/luzon_dmd_csv_export.php?date=' + date + '&hour=' + str(hour).zfill(2))
luzon_str = url.read().replace('\n', ',' + str(dem_target) + ',' + str(lwap_target) + '\n').replace(' ','').splitlines()[1:25]

# HOUR, DEM_DAPEL, DEM_RTDEL, DEM_RTXEL, LWAP_DAPEL, LWAP_RTDEL, LWAP_RTXEL, DEM_TARGET, LWAP_TARGET
luzon_data = [list(row) for row in zip(*[[float(column or 'nan') for column in row.split(',')] for row in luzon_str])]

plt.plot(luzon_data[0], luzon_data[7], 'r.-', label='Target')
plt.plot(luzon_data[0], luzon_data[1], 'y.-', label='Day Ahead Projection (DAP)')
plt.plot(luzon_data[0], luzon_data[2], 'c.-', label='Hour Ahead Projection (RTD)')
plt.plot(luzon_data[0], luzon_data[3], 'b.-', label='Current Demand (RTX)')
plt.title('Luzon Market Demand - ' + today.strftime('%B %d, %Y') + '\n' + 'Current Hour Demand: ' + str(luzon_data[3][hour - 2]) + ' MW' )
plt.xlabel('Hours')
plt.ylabel('MEGAWATTS')
plt.xticks(range(1,25))
plt.grid(linestyle=':')
plt.legend(loc='center', frameon=False, bbox_to_anchor=(0.5, -0.2), fontsize='small')
plt.savefig(date + str(hour).zfill(2) + '.png', format='png', bbox_inches='tight')
