changing weather script to support wttr.in
This commit is contained in:
		
							parent
							
								
									2e087b18c0
								
							
						
					
					
						commit
						60972cc069
					
				@ -1,15 +1,35 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
# creates a hidden file of your location details based on your address, will expand to support addition via zip codes
 | 
					# creates a hidden file of your location details based on your address, will expand to support addition via zip codes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -z $1 ]] ; then
 | 
					usage() { echo "Usage: $0 [-z zipcode]" 1>&2; exit 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ $# -eq 0 ]] ; then
 | 
				
			||||||
    # called without args
 | 
					    # called without args
 | 
				
			||||||
    CURRENT_LOCATION=$(curl --silent http://ip-api.com/csv)
 | 
					    CURRENT_LOCATION=$(curl --silent http://ip-api.com/csv)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    STATE_CODE=$(echo "$CURRENT_LOCATION" | cut -d, -f 4)
 | 
					 | 
				
			||||||
    CITY=$(echo "$CURRENT_LOCATION" | cut -d , -f 6)
 | 
					    CITY=$(echo "$CURRENT_LOCATION" | cut -d , -f 6)
 | 
				
			||||||
    LAT=$(echo "$CURRENT_LOCATION" | cut -d , -f 8)
 | 
					    LAT=$(echo "$CURRENT_LOCATION" | cut -d , -f 8)
 | 
				
			||||||
    LON=$(echo "$CURRENT_LOCATION" | cut -d , -f 9)
 | 
					    LON=$(echo "$CURRENT_LOCATION" | cut -d , -f 9)
 | 
				
			||||||
    printf "STATE=%s\nCITY=%s\nLAT=%s\nLON=%s\n" $STATE_CODE $CITY $LAT $LON > "$HOME/.dotfiles/bin/weather/.env.location"
 | 
					    printf "CITY=%s\nLAT=%s\nLON=%s\n" "$CITY" $LAT $LON > "$HOME/.dotfiles/bin/weather/.env.location"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while getopts "z:" arg; do
 | 
				
			||||||
 | 
					    case ${arg} in
 | 
				
			||||||
 | 
					        z)
 | 
				
			||||||
 | 
					            ZIPCODE=${OPTARG}
 | 
				
			||||||
 | 
					            source "$HOME/.dotfiles/.priv/key"
 | 
				
			||||||
 | 
					            URL="http://api.openweathermap.org/geo/1.0/zip?zip=$ZIPCODE&appid=$API_KEY"
 | 
				
			||||||
 | 
					            LOCATION=$(curl --silent "$URL")
 | 
				
			||||||
 | 
					            CITY=$(echo $LOCATION | jq -r '.name')
 | 
				
			||||||
 | 
					            LAT=$(echo $LOCATION | jq -r '.lat')
 | 
				
			||||||
 | 
					            LON=$(echo $LOCATION | jq -r '.lon')
 | 
				
			||||||
 | 
					            printf "CITY=%s\nLAT=%s\nLON=%s\n" "$CITY" $LAT $LON > "$HOME/.dotfiles/bin/weather/.env.location"
 | 
				
			||||||
 | 
					            # emptying weather buffer
 | 
				
			||||||
 | 
					            >"$HOME/.dotfiles/bin/weather/.env.weather"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        ?)
 | 
				
			||||||
 | 
					            usage
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -15,7 +15,6 @@ type Weather struct {
 | 
				
			|||||||
	Humidity   int
 | 
						Humidity   int
 | 
				
			||||||
	Icon       rune
 | 
						Icon       rune
 | 
				
			||||||
	City       string
 | 
						City       string
 | 
				
			||||||
	State      string
 | 
					 | 
				
			||||||
	LastPinged int64
 | 
						LastPinged int64
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -36,7 +35,7 @@ const (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (w *Weather) String() string {
 | 
					func (w *Weather) String() string {
 | 
				
			||||||
	return fmt.Sprintf(" %c %.1f%c %d%c in %s, %s", w.Icon, w.Temp, DEGREES_F, w.Humidity, HUMIDITY, w.City, w.State) // Output as ICON ##.#*F ##% in City, ST where the rune is a degree sign
 | 
						return fmt.Sprintf(" %c %.1f%c %d%c in %s", w.Icon, w.Temp, DEGREES_F, w.Humidity, HUMIDITY, w.City) // Output as ICON ##.#*F ##% in City, ST where the rune is a degree sign
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
@ -56,7 +55,6 @@ func main() {
 | 
				
			|||||||
	var err error
 | 
						var err error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	city := os.Getenv("CITY")
 | 
						city := os.Getenv("CITY")
 | 
				
			||||||
	state := os.Getenv("STATE") // fine as strings
 | 
					 | 
				
			||||||
	icon := getIcon(os.Getenv("ICON"))
 | 
						icon := getIcon(os.Getenv("ICON"))
 | 
				
			||||||
	h := os.Getenv("HUMIDITY")
 | 
						h := os.Getenv("HUMIDITY")
 | 
				
			||||||
	t := os.Getenv("TEMP")
 | 
						t := os.Getenv("TEMP")
 | 
				
			||||||
@ -73,7 +71,7 @@ func main() {
 | 
				
			|||||||
			panic(err)
 | 
								panic(err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	weather := &Weather{City: city, State: state, Icon: icon, Humidity: humidity, Temp: temp}
 | 
						weather := &Weather{City: city, Icon: icon, Humidity: humidity, Temp: temp}
 | 
				
			||||||
	fmt.Print(weather)
 | 
						fmt.Print(weather)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										56
									
								
								bin/weather/symbols.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								bin/weather/symbols.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var WeatherCodesDay map[string]rune
 | 
				
			||||||
 | 
					var WeatherCodesNight map[string]rune
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func SymbolTest() {
 | 
				
			||||||
 | 
						WeatherCodesDay := map[string]rune{
 | 
				
			||||||
 | 
							"Unkown":              '\ue374',
 | 
				
			||||||
 | 
							"Cloudy":              '\ue302',
 | 
				
			||||||
 | 
							"Fog":                 '\ue303',
 | 
				
			||||||
 | 
							"HeavyRain":           '\ue318',
 | 
				
			||||||
 | 
							"HeavyShowers":        '\ue318',
 | 
				
			||||||
 | 
							"HeavySnow":           '\ue31a',
 | 
				
			||||||
 | 
							"HeavySnowShowers":    '\ue31a',
 | 
				
			||||||
 | 
							"LightRain":           '\ue308',
 | 
				
			||||||
 | 
							"LightShowers":        '\ue308',
 | 
				
			||||||
 | 
							"LightSleet":          '\ue3aa',
 | 
				
			||||||
 | 
							"LightSleetShowers":   '\ue3aa',
 | 
				
			||||||
 | 
							"LightSnow":           '\ue30a',
 | 
				
			||||||
 | 
							"LightSnowShowers":    '\ue30a',
 | 
				
			||||||
 | 
							"PartlyCloudy":        '\ue37b',
 | 
				
			||||||
 | 
							"Sunny":               '\ue30d',
 | 
				
			||||||
 | 
							"ThunderyHeavyRain":   '\ue31d',
 | 
				
			||||||
 | 
							"ThunderyShowers":     '\ue31d',
 | 
				
			||||||
 | 
							"ThunderySnowShowers": '\ue365',
 | 
				
			||||||
 | 
							"VeryCloudy":          '\ue312',
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						WeatherCodesNight := map[string]rune{
 | 
				
			||||||
 | 
							"Unkown":              '\ue374',
 | 
				
			||||||
 | 
							"Cloudy":              '\ue37e',
 | 
				
			||||||
 | 
							"Fog":                 '\ue346',
 | 
				
			||||||
 | 
							"HeavyRain":           '\ue318',
 | 
				
			||||||
 | 
							"HeavyShowers":        '\ue318',
 | 
				
			||||||
 | 
							"HeavySnow":           '\ue31a',
 | 
				
			||||||
 | 
							"HeavySnowShowers":    '\ue31a',
 | 
				
			||||||
 | 
							"LightRain":           '\ue325',
 | 
				
			||||||
 | 
							"LightShowers":        '\ue325',
 | 
				
			||||||
 | 
							"LightSleet":          '\ue3ac',
 | 
				
			||||||
 | 
							"LightSleetShowers":   '\ue3ac',
 | 
				
			||||||
 | 
							"LightSnow":           '\ue361',
 | 
				
			||||||
 | 
							"LightSnowShowers":    '\ue361',
 | 
				
			||||||
 | 
							"PartlyCloudy":        '\ue379',
 | 
				
			||||||
 | 
							"Sunny":               '\ue32b',
 | 
				
			||||||
 | 
							"ThunderyHeavyRain":   '\ue31d',
 | 
				
			||||||
 | 
							"ThunderyShowers":     '\ue31d',
 | 
				
			||||||
 | 
							"ThunderySnowShowers": '\ue365',
 | 
				
			||||||
 | 
							"VeryCloudy":          '\ue312',
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for k, v := range WeatherCodesDay {
 | 
				
			||||||
 | 
							fmt.Printf("%s: %c %c\n", k, v, WeatherCodesNight[k])
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							@ -10,6 +10,7 @@ CUR_TIMESTAMP=$(date +%s)
 | 
				
			|||||||
if [[ $CUR_TIMESTAMP -gt $EXPIRATION  || -z $EXPIRATION ]] ; then
 | 
					if [[ $CUR_TIMESTAMP -gt $EXPIRATION  || -z $EXPIRATION ]] ; then
 | 
				
			||||||
    WEATHER=$(curl --silent http://api.openweathermap.org/data/2.5/weather\?lat="$LAT"\&lon="$LON"\&appid="$API_KEY"\&units=imperial)
 | 
					    WEATHER=$(curl --silent http://api.openweathermap.org/data/2.5/weather\?lat="$LAT"\&lon="$LON"\&appid="$API_KEY"\&units=imperial)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo $WEATHER
 | 
				
			||||||
    TEMP=$(echo $WEATHER | jq -r '.main.temp')
 | 
					    TEMP=$(echo $WEATHER | jq -r '.main.temp')
 | 
				
			||||||
    HUMIDITY=$(echo $WEATHER | jq -r '.main.humidity')
 | 
					    HUMIDITY=$(echo $WEATHER | jq -r '.main.humidity')
 | 
				
			||||||
    ICON=$(echo $WEATHER | jq -r '.weather[0].icon')
 | 
					    ICON=$(echo $WEATHER | jq -r '.weather[0].icon')
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user