aboutsummaryrefslogtreecommitdiff
path: root/segments/weather.sh
diff options
context:
space:
mode:
authorCody Hiar <codyfh@gmail.com>2017-04-20 19:37:10 -0600
committerCody Hiar <codyfh@gmail.com>2017-04-20 19:37:10 -0600
commit2dd809781527976307b47a598887062047e202c9 (patch)
tree8b29daba2c1ef072f380ef530b7e7d9256e43eb3 /segments/weather.sh
parentbaeb698bb006193559fc5aa1901180a3ccc73b7a (diff)
Making tmux configuration much easier to manage
Diffstat (limited to 'segments/weather.sh')
-rwxr-xr-xsegments/weather.sh182
1 files changed, 0 insertions, 182 deletions
diff --git a/segments/weather.sh b/segments/weather.sh
deleted file mode 100755
index 74e352e..0000000
--- a/segments/weather.sh
+++ /dev/null
@@ -1,182 +0,0 @@
-# Prints the current weather in Celsius, Fahrenheits or lord Kelvins. The forecast is cached and updated with a period of $update_period.
-
-# The update period in seconds.
-update_period=600
-
-TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER_DEFAULT="yahoo"
-TMUX_POWERLINE_SEG_WEATHER_UNIT_DEFAULT="c"
-TMUX_POWERLINE_SEG_WEATHER_UPDATE_PERIOD_DEFAULT="600"
-if shell_is_bsd; then
- TMUX_POWERLINE_SEG_WEATHER_GREP_DEFAULT="/usr/local/bin/grep"
-else
- TMUX_POWERLINE_SEG_WEATHER_GREP_DEFAULT="grep"
-fi
-
-
-generate_segmentrc() {
- read -d '' rccontents << EORC
-# The data provider to use. Currently only "yahoo" is supported.
-export TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER="${TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER_DEFAULT}"
-# What unit to use. Can be any of {c,f,k}.
-export TMUX_POWERLINE_SEG_WEATHER_UNIT="${TMUX_POWERLINE_SEG_WEATHER_UNIT_DEFAULT}"
-# How often to update the weather in seconds.
-export TMUX_POWERLINE_SEG_WEATHER_UPDATE_PERIOD="${TMUX_POWERLINE_SEG_WEATHER_UPDATE_PERIOD_DEFAULT}"
-# Name of GNU grep binary if in PATH, or path to it.
-export TMUX_POWERLINE_SEG_WEATHER_GREP="${TMUX_POWERLINE_SEG_WEATHER_GREP_DEFAULT}"
-
-# Your location. Find a code that works for you:
-# 1. Go to Yahoo weather http://weather.yahoo.com/
-# 2. Find the weather for you location
-# 3. Copy the last numbers in that URL. e.g. "http://weather.yahoo.com/united-states/california/newport-beach-12796587/" has the numbers "12796587"
-export TMUX_POWERLINE_SEG_WEATHER_LOCATION="8691"
-EORC
- echo "$rccontents"
-}
-
-run_segment() {
- __process_settings
- local tmp_file="${TMUX_POWERLINE_DIR_TEMPORARY}/weather_yahoo.txt"
- local weather
- case "$TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER" in
- "yahoo") weather=$(__yahoo_weather) ;;
- *)
- echo "Unknown weather provider [${$TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER}]";
- return 1
- esac
- if [ -n "$weather" ]; then
- echo "$weather"
- fi
-}
-
-__process_settings() {
- if [ -z "$TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER" ]; then
- export TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER="${TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER_DEFAULT}"
- fi
- if [ -z "$TMUX_POWERLINE_SEG_WEATHER_UNIT" ]; then
- export TMUX_POWERLINE_SEG_WEATHER_UNIT="${TMUX_POWERLINE_SEG_WEATHER_UNIT_DEFAULT}"
- fi
- if [ -z "$TMUX_POWERLINE_SEG_WEATHER_UPDATE_PERIOD" ]; then
- export TMUX_POWERLINE_SEG_WEATHER_UPDATE_PERIOD="${TMUX_POWERLINE_SEG_WEATHER_UPDATE_PERIOD_DEFAULT}"
- fi
- if [ -z "$TMUX_POWERLINE_SEG_WEATHER_GREP" ]; then
- export TMUX_POWERLINE_SEG_WEATHER_GREP="${TMUX_POWERLINE_SEG_WEATHER_GREP_DEFAULT}"
- fi
- if [ -z "$TMUX_POWERLINE_SEG_WEATHER_LOCATION" ]; then
- echo "No weather location specified.";
- exit 8
- fi
-}
-
-__yahoo_weather() {
- degree=""
- if [ -f "$tmp_file" ]; then
- if shell_is_osx || shell_is_bsd; then
- last_update=$(stat -f "%m" ${tmp_file})
- elif shell_is_linux; then
- last_update=$(stat -c "%Y" ${tmp_file})
- fi
- time_now=$(date +%s)
-
- up_to_date=$(echo "(${time_now}-${last_update}) < ${update_period}" | bc)
- if [ "$up_to_date" -eq 1 ]; then
- __read_tmp_file
- fi
- fi
-
- if [ -z "$degree" ]; then
- weather_data=$(curl --max-time 4 -s "http://weather.yahooapis.com/forecastrss?w=${TMUX_POWERLINE_SEG_WEATHER_LOCATION}&u=${TMUX_POWERLINE_SEG_WEATHER_UNIT}")
- if [ "$?" -eq "0" ]; then
- error=$(echo "$weather_data" | grep "problem_cause\|DOCTYPE");
- if [ -n "$error" ]; then
- echo "error"
- exit 1
- fi
-
- # Assume latest grep is in PATH
- gnugrep="${TMUX_POWERLINE_SEG_WEATHER_GREP}"
-
- # <yweather:units temperature="F" distance="mi" pressure="in" speed="mph"/>
- unit=$(echo "$weather_data" | "$gnugrep" -PZo "<yweather:units [^<>]*/>" | sed 's/.*temperature="\([^"]*\)".*/\1/')
- condition=$(echo "$weather_data" | "$gnugrep" -PZo "<yweather:condition [^<>]*/>")
- # <yweather:condition text="Clear" code="31" temp="66" date="Mon, 01 Oct 2012 8:00 pm CST" />
- degree=$(echo "$condition" | sed 's/.*temp="\([^"]*\)".*/\1/')
- condition=$(echo "$condition" | sed 's/.*text="\([^"]*\)".*/\1/')
- # Pull the times for sunrise and sunset so we know when to change the day/night indicator
- # <yweather:astronomy sunrise="6:56 am" sunset="6:21 pm"/>
- sunrise=$(date -d"$(echo "$weather_data" | "$gnugrep" "yweather:astronomy" | sed 's/^\(.*\)sunset.*/\1/' | sed 's/^.*sunrise="\(.*m\)".*/\1/')" +%H%M)
- sunset=$(date -d"$(echo "$weather_data" | "$gnugrep" "yweather:astronomy" | sed 's/^.*sunset="\(.*m\)".*/\1/')" +%H%M)
- elif [ -f "${tmp_file}" ]; then
- __read_tmp_file
- fi
- fi
-
- if [ -n "$degree" ]; then
- if [ "$TMUX_POWERLINE_SEG_WEATHER_UNIT" == "k" ]; then
- degree=$(echo "${degree} + 273.15" | bc)
- fi
- condition_symbol=$(__get_condition_symbol "$condition" "$sunrise" "$sunset")
- echo "${condition_symbol} ${degree}°$(echo "$TMUX_POWERLINE_SEG_WEATHER_UNIT" | tr '[:lower:]' '[:upper:]')" | tee "${tmp_file}"
- fi
-}
-
-# Get symbol for condition. Available conditions: http://developer.yahoo.com/weather/#codes
-__get_condition_symbol() {
- local condition=$(echo "$1" | tr '[:upper:]' '[:lower:]')
- local sunrise="$2"
- local sunset="$3"
- case "$condition" in
- "sunny" | "hot")
- hourmin=$(date +%H%M)
- if [ "$hourmin" -ge "$sunset" -o "$hourmin" -le "$sunrise" ]; then
- #echo "☽"
- echo "☾"
- else
- #echo "☀"
- echo "☼"
- fi
- ;;
- "rain" | "mixed rain and snow" | "mixed rain and sleet" | "freezing drizzle" | "drizzle" | "light drizzle" | "freezing rain" | "showers" | "mixed rain and hail" | "scattered showers" | "isolated thundershowers" | "thundershowers" | "light rain with thunder" | "light rain" | "rain and snow")
- #echo "☂"
- echo "☔"
- ;;
- "snow" | "mixed snow and sleet" | "snow flurries" | "light snow showers" | "blowing snow" | "sleet" | "hail" | "heavy snow" | "scattered snow showers" | "snow showers" | "light snow" | "snow/windy" | "snow grains" | "snow/fog")
- #echo "☃"
- echo "❅"
- ;;
- "cloudy" | "mostly cloudy" | "partly cloudy" | "partly cloudy/windy")
- echo "☁"
- ;;
- "tornado" | "tropical storm" | "hurricane" | "severe thunderstorms" | "thunderstorms" | "isolated thunderstorms" | "scattered thunderstorms")
- #echo "⚡"
- echo "☈"
- ;;
- "dust" | "foggy" | "fog" | "haze" | "smoky" | "blustery" | "mist")
- #echo "♨"
- #echo "﹌"
- echo "〰"
- ;;
- "windy" | "fair/windy")
- #echo "⚐"
- echo "⚑"
- ;;
- "clear" | "fair" | "cold")
- hourmin=$(date +%H%M)
- if [ "$hourmin" -ge "$sunset" -o "$hourmin" -le "$sunrise" ]; then
- echo "☾"
- else
- echo "〇"
- fi
- ;;
- *)
- echo "?"
- ;;
- esac
-}
-
-__read_tmp_file() {
- if [ ! -f "$tmp_file" ]; then
- return
- fi
- cat "${tmp_file}"
- exit
-}