aboutsummaryrefslogtreecommitdiff
path: root/modules/weather
blob: 0933622aa85abd31630e5aed2e2fb08a6574c9a3 (plain)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash

# Prints out the weather at your approximate location
# Needs an internet connection
# Dependencies: jq

SUN_ICON=''
CLOUD_ICON='摒'
RAIN_ICON='歹'
THUNDER_ICON='朗'
SNOW_ICON='流'
MIST_ICON='敖'

get_weather()
{
    LOCATION=$(curl -s http://ip-api.com/json | \
        jq '.lat, .lon' | \
        while read -r LATITUDE; do
                read -r LONGITUDE
                echo "${LATITUDE}:${LONGITUDE}" | tr -d '"'
        done)
    
    LANG="en"
    UNITS="Metric"
    API_KEY="756edce7e9d4c385ef9499a53492678c"

    LOCATION_FORMATTED_2=$(echo $LOCATION | cut -d ':' -f2)
    LOCATION_FORMATTED_1=$(echo $LOCATION | cut -d ':' -f1)

    OUTPUT=$(curl -s "http://api.openweathermap.org/data/2.5/weather?lat=$LOCATION_FORMATTED_1&lon=$LOCATION_FORMATTED_2&lang=$LANG&appid=$API_KEY&units=$UNITS")
    STATUS=$(echo $OUTPUT | jq '.weather' | tr '[' ' ' | tr ']' ' ' | jq '.main' | sed 's/"//g')
    TEMP=$(echo $OUTPUT | jq '.main' | jq '.temp' | xargs printf "%.*f\n" 0)

    case $STATUS in
        "Clear" )
            echo $SUN_ICON;;
        "Clouds" )
            echo $CLOUD_ICON;;
        "Rain" )
            echo $RAIN_ICON;;
        "Thunderstorm" )
            echo $THUNDER_ICON;;
        "Snow" )
            echo $SNOW_ICON;;
        "Mist" )
            echo $MIST_ICON;;
        * )
            echo "?";;
    esac

    echo "$STATUS, "
    echo "$TEMP°C"
}

get_weather