from urllib.request import urlopen
import csv
import sqlite3
from datetime import date
from NEWAFireInfo.settings import BASE_DIR, DATABASES
import psycopg2

def fetch():

    link = "http://pnwnfdr.pythonanywhere.com/wanec/kaniksu/"

    f = urlopen(link)
    myfile = f.read()
    s=myfile.decode()
    ts = s.find('Yesterdays Observed')
    tf = s.find('Todays Forecast and Predicted')
    s=s[ts:tf]

    return s

def checkdates():
    dbstring = DATABASES['default']
    con = psycopg2.connect(
        host=dbstring['HOST'],
        port=dbstring['PORT'],
        database=dbstring['NAME'],
        user=dbstring['USER'],
        password=dbstring['PASSWORD'])
    cur = con.cursor()

    checked_yesterday = False
    check_yesterday=''

    today = date.today()
    today = str(today)
    today = today.split('-')
    today = today[0] + today[1] + today[2]
    yesterday = str(int(today) - 1)

    if yesterday[6:] == '00':
        if yesterday[4:6] == '01':
            yesterday = str(int(yesterday[:4])-1) + '1231'
        elif yesterday[4:6] == '02':
            yesterday = str(int(yesterday[:4])) + '0131'
        elif yesterday[4:6] == '03':
            if int(yesterday[:4]) % 4 == 0:
                yesterday = str(int(yesterday[:4])) + '0229'
            else:
                yesterday = str(int(yesterday[:4])) + '0228'
        elif yesterday[4:6] == '04':
            yesterday = str(int(yesterday[:4])) + '0331'
        elif yesterday[4:6] == '05':
            yesterday = str(int(yesterday[:4])) + '0430'
        elif yesterday[4:6] == '06':
            yesterday = str(int(yesterday[:4])) + '0531'
        elif yesterday[4:6] == '07':
            yesterday = str(int(yesterday[:4])) + '0630'
        elif yesterday[4:6] == '08':
            yesterday = str(int(yesterday[:4])) + '0731'
        elif yesterday[4:6] == '09':
            yesterday = str(int(yesterday[:4])) + '0831'
        elif yesterday[4:6] == '10':
            yesterday = str(int(yesterday[:4])) + '0930'
        elif yesterday[4:6] == '11':
            yesterday = str(int(yesterday[:4])) + '1031'
        elif yesterday[4:6] == '12':
            yesterday = str(int(yesterday[:4])) + '1130'

    cur.execute("SELECT date FROM firedata WHERE date='" + yesterday + "' ORDER BY date")
    answer = cur.fetchone()
    try:
        check_yesterday = answer[0]
        if check_yesterday == yesterday:
            checked_yesterday = True
    except:
        pass
    if checked_yesterday == True:
        con.close()
        return True
    else:
        con.close()
        return False

def parse(s):
    pval = [0]
    for i in range(14):
        ts = 4 + s.find('<td>')
        tf = s.find('</td>')
        pval = pval + [s[ts:tf]]
        s = s[tf+5:]
    for i in range(3):
        ts = 4 + s.find('<td>')
        tf = s.find('</td>')
        s = s[tf+5:]
    for i in range(11):
        ts = 4 + s.find('<td>')
        tf = s.find('</td>')
        pval = pval + [s[ts:tf]]
        s = s[tf+5:]      

    return pval

def main():
    s = fetch()
    pval = parse(s)
    station = pval[1]
    values = pval[2].split('-')
    pval[2] = values[0]+values[1]+values[2]
    date = pval[2]
    hr100 = pval[7]
    hr1000 = pval[8]
    hrb = pval[9]
    wdy = pval[10]

    


    dbstring = DATABASES['default']
    con = psycopg2.connect(
        host=dbstring['HOST'],
        port=dbstring['PORT'],
        database=dbstring['NAME'],
        user=dbstring['USER'],
        password=dbstring['PASSWORD'])
    cur = con.cursor()
    cur.execute("INSERT INTO firedata (station, date, time, model, hr1, hr10, hr100, hr1000, hrb, wdy, ic, sc, ec, bi, type, temp, rh, wdir, wspd, tmax, tmin, rhmax, rhmin, pdur, pamt) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",(pval[1],pval[2],int(pval[3]),pval[4],int(pval[5]),int(pval[6]),int(pval[7]),int(pval[8]),int(pval[9]),int(pval[10]),int(pval[11]),int(pval[12]),int(pval[13]),int(pval[14]),pval[15],int(pval[16]),int(pval[17]),int(pval[18]),int(pval[19]),int(pval[20]),int(pval[21]),int(pval[22]),int(pval[23]),int(pval[24]),float(pval[25])))
    con.commit()
    con.close()




#main()
#input()
