from urllib.request import urlopen
from datetime import date
import geojson

def currentAQI(userloc):

    link = "https://www.airnowapi.org/aq/observation/latLong/current/?format=application/json&latitude=" + str(round(userloc[0],4)) + "&longitude=" + str(round(userloc[1],4)) + "&distance=50&API_KEY=4E6813A3-0F20-48D4-AA00-D2038C4005D6"

    f = urlopen(link)
    myfile = f.read()
    s = geojson.loads(myfile)

    aqi = -1
    for i in range(len(s)):
        if len(s) == 1:
            pos = 1
        else:
            if s[i]['AQI'] > aqi:
                aqi = s[i]['AQI']
                pos = i

    current1 = "<strong>The current AQI is:</strong> " + str(s[pos]['AQI']) + " - " + s[pos]['Category']['Name'] +  " for " + s[pos]['ParameterName']

    return current1


def forecastedAQI(userloc):

    link = "https://www.airnowapi.org/aq/forecast/latLong/?format=application/json&latitude=" + str(round(userloc[0],4)) + "&longitude=" + str(round(userloc[1],4)) + "&date=" + str(date.today()) + "&distance=50&API_KEY=4E6813A3-0F20-48D4-AA00-D2038C4005D6"

    f = urlopen(link)
    myfile = f.read()
    s = geojson.loads(myfile)

    pos = []
    num = -1
    for i in range(len(s)):
        if len(s) == 1:
            pos = pos + [0]
        elif i == len(s)-1:
            if s[i]['Category']['Number'] >= num:
                sel = i
            pos = pos + [sel]
        elif s[i]['DateForecast'] == s[i+1]['DateForecast']:
            if s[i]['Category']['Number'] >= num:
                sel = i
                num = s[i]['Category']['Number']
        elif s[i]['DateForecast'] != s[i+1]['DateForecast']:
            if s[i]['Category']['Number'] >= num:
                sel = i
                num = -1
            pos = pos + [sel]

    count = len(pos)

    dow = {0: 'Sunday', 1: 'Monday', 2: 'Tuesday', 3: 'Wednesday', 4: 'Thursday', 5: 'Friday', 6: 'Saturday', 7: 'Sunday', 8: 'Monday', 9: 'Tuesday', 10: 'Wednesday'}

    x = date.today()
    x = int(x.strftime('%w'))

    d0 = "<strong>Forecast for:</strong> " + str(date.today()) + " in " + s[0]['ReportingArea'] + ", " + s[0]['StateCode']
    d1 = "<strong>Today:</strong> " + s[pos[0]]['ParameterName'] + " - " + s[pos[0]]['Category']['Name']
    if count >= 2:
        d2 = "<strong>Tomorrow:</strong> " + s[pos[1]]['ParameterName'] + " - " + s[pos[1]]['Category']['Name']
    else:
        d2 = ''
    if count >= 3:
        d3 = "<strong>" + dow[x+2] + ":</strong> " + s[pos[2]]['ParameterName'] + " - " + s[pos[2]]['Category']['Name']
    else:
        d3 = ''
    if count >= 4:
        d4 = "<strong>" + dow[x+3] + ":</strong> " + s[pos[3]]['ParameterName'] + " - " + s[pos[3]]['Category']['Name']
    else:
        d4 = ''
    if count >= 5:
        d5 = "<strong>" + dow[x+4] + ":</strong> " + s[pos[4]]['ParameterName'] + " - " + s[pos[4]]['Category']['Name']
    else:
        d5 = ''

    forecast1 = [d0,d1,d2,d3,d4,d5]

    return forecast1

def main(userloc):

    forecast = forecastedAQI(userloc)
    current = currentAQI(userloc)
    forecast = [current] + forecast

    return forecast

#main()
#input()
