· 6 years ago · Sep 14, 2019, 11:22 AM
1#!/bin/bash
2
3# I take this script from Anachron's i3blocks
4# I only slightly modify this script to add an option to show icon, useful for my tint2 executor
5# 'weather -i' = with icon, 'weather' = text only
6# Cheers!
7# Addy
8
9# Open Weather Map API code, register to http://openweathermap.org to get one ;)
10API_KEY="API_KEY_FROM YOUR OPENWEATHER KEY"
11
12# Check on http://openweathermap.org/find
13CITY_ID="XXXXXXX" # enter your CITY_ID fro openweathermap.org
14
15# i have used nerd fonts for glyphs ; Use Meteocons for weather glyphs for default & reverse comments
16
17URGENT_LOWER=9
18URGENT_HIGHER=38
19
20#ICON_SUNNY="B Clear"
21ICON_SUNNY=" Clear"
22#ICON_CLOUDY="Y Cloudy"
23ICON_CLOUDY=" Cloudy"
24#ICON_RAINY="X Rainy"
25ICON_RAINY=" Rainy"
26#ICON_STORM="F Storm"
27ICON_STORM="Storm"
28#ICON_SNOW="L Snow"
29ICON_SNOW=" Snow"
30#ICON_FOG="E Fog"
31ICON_FOG=" Fog"
32#ICON_MISC="H "
33ICON_MISC=" "
34
35TEXT_SUNNY="Clear"
36TEXT_CLOUDY="Cloudy"
37TEXT_RAINY="Rainy"
38TEXT_STORM="Storm"
39TEXT_SNOW="Snow"
40TEXT_FOG="Fog"
41
42SYMBOL_CELSIUS="˚C"
43
44WEATHER_URL="https://api.openweathermap.org/data/2.5/weather?id=${CITY_ID}&appid=${API_KEY}&units=metric"
45
46WEATHER_INFO=$(wget -qO- "${WEATHER_URL}")
47WEATHER_MAIN=$(echo "${WEATHER_INFO}" | grep -o -e '\"main\":\"[a-Z]*\"' | awk -F ':' '{print $2}' | tr -d '"')
48WEATHER_TEMP=$(echo "${WEATHER_INFO}" | grep -o -e '\"temp\":\-\?[0-9]*' | awk -F ':' '{print $2}' | tr -d '"')
49
50if [[ "${WEATHER_MAIN}" = *Snow* ]]; then
51 if [[ $1 = "-i" ]]; then
52 echo "${ICON_SNOW} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
53 else
54 echo "${TEXT_SNOW} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
55 fi
56elif [[ "${WEATHER_MAIN}" = *Rain* ]] || [[ "${WEATHER_MAIN}" = *Drizzle* ]]; then
57 if [[ $1 = "-i" ]]; then
58 echo "${ICON_RAINY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
59 else
60 echo "${TEXT_RAINY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
61 fi
62elif [[ "${WEATHER_MAIN}" = *Cloud* ]]; then
63 if [[ $1 = "-i" ]]; then
64 echo "${ICON_CLOUDY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
65 else
66 echo "${TEXT_CLOUDY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
67 fi
68elif [[ "${WEATHER_MAIN}" = *Clear* ]]; then
69 if [[ $1 = "-i" ]]; then
70 echo "${ICON_SUNNY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
71 else
72 echo "${TEXT_SUNNY} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
73 fi
74elif [[ "${WEATHER_MAIN}" = *Fog* ]] || [[ "${WEATHER_MAIN}" = *Mist* ]]; then
75 if [[ $1 = "-i" ]]; then
76 echo "${ICON_FOG} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
77 else
78 echo "${TEXT_FOG} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
79 fi
80else
81 if [[ $1 = "-i" ]]; then
82 echo "${ICON_MISC} ${WEATHER_MAIN} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
83 else
84 echo "${WEATHER_MAIN} ${WEATHER_TEMP}${SYMBOL_CELSIUS}"
85 fi
86fi
87
88if [[ "${WEATHER_TEMP}" -lt "${URGENT_LOWER}" ]] || [[ "${WEATHER_TEMP}" -gt "${URGENT_HIGHER}" ]]; then
89 exit 33
90fi