diff options
Diffstat (limited to 'segments/earthquake.sh')
-rwxr-xr-x | segments/earthquake.sh | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/segments/earthquake.sh b/segments/earthquake.sh deleted file mode 100755 index 3859094..0000000 --- a/segments/earthquake.sh +++ /dev/null @@ -1,173 +0,0 @@ -# Prints the most recent earthquake (currently only supports japan) -# It prints the location, time, and magnitude if the quake happened within -# a timelimit and magnitude threshold - -earthquake_symbol='#[fg=colour1]~' - -# The update period in seconds. -update_period=600 - -TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER_DEFAULT="goo" -TMUX_POWERLINE_SEG_EARTHQUAKE_UPDATE_PERIOD_DEFAULT="600" -TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW_DEFAULT="60" -TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT_DEFAULT='(%H:%M)' -TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE_DEFAULT='3' - -generate_segmentrc() { - read -d '' rccontents << EORC -# The data provider to use. Currently only "goo" is supported. -export TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER="${TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER_DEFAULT}" -# How often to update the earthquake data in seconds. -# Note: This is not an early warning detector, use this -# to be informed about recent earthquake magnitudes in your -# area. If this is too often, goo may decide to ban you form -# their server -export TMUX_POWERLINE_SEG_EARTHQUAKE_UPDATE_PERIOD="${TMUX_POWERLINE_SEG_EARTHQUAKE_UPDATE_PERIOD_DEFAULT}" -# Only display information when earthquakes are within this many minutes -export TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW="${TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW_DEFAULT}" -# Display time with this format -export TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT='${TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT_DEFAULT}' -# Display only if magnitude is greater or equal to this number -export TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE="${TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE_DEFAULT}" -EORC - echo "$rccontents" -} - -run_segment() { - __process_settings - local tmp_file="${TMUX_POWERLINE_DIR_TEMPORARY}/earthquake.txt" - local earthquake - case "$TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER" in - "goo") earthquake=$(__goo_earthquake) ;; - *) - echo "Unknown earthquake-information provider [${$TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER}]"; - return 1 - esac - if [ -n "$earthquake" ]; then - echo "$earthquake_symbol #[fg=colour237]${earthquake}" - fi -} - -__process_settings() { - if [ -z "$TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER" ]; then - export TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER="${TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER_DEFAULT}" - fi - if [ -z "$TMUX_POWERLINE_SEG_EARTHQUAKE_UPDATE_PERIOD" ]; then - export TMUX_POWERLINE_SEG_EARTHQUAKE_UPDATE_PERIOD="${TMUX_POWERLINE_SEG_EARTHQUAKE_UPDATE_PERIOD_DEFAULT}" - fi - if [ -z "$TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW" ]; then - export TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW="${TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW_DEFAULT}" - fi - if [ -z "$TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT" ]; then - export TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT="${TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT_DEFAULT}" - fi - if [ -z "$TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE" ]; then - export TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE="${TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE_DEFAULT}" - fi -} - -__goo_earthquake() { - location="" - magnitude="" - magnitude_number="" - timestamp="" - 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 "$magnitude" ]; then - # get the rss file, convert encoding to UTF-8, then delete windows carriage-returns - earthquake_data=$(curl --max-time 4 -s "http://weather.goo.ne.jp/earthquake/index.rdf" | iconv -f EUC-JP -t UTF-8 | tr -d "\r") - if [ "$?" -eq "0" ]; then - # This rss feed is not very clean or easy to use, but we will use it because - # this is all that can be found for now - - # we grab the data from the title of the first item (most recent earthquake) - earthquake_data=${earthquake_data#*item\><title>} - # end our data at the end of the approx. time - earthquake_data=${earthquake_data%%頃*} - - # pluck our data - location=$(echo $earthquake_data | awk '{print $2}') - magnitude=$(echo $earthquake_data | awk '{print $4}') - timestamp=${earthquake_data#*\(} - - __convert_jp_magnitude - __convert_jp_timestamp - - echo $location > $tmp_file - echo $magnitude >> $tmp_file - echo $timestamp >> $tmp_file - elif [ -f "$tmp_file" ]; then - __read_tmp_file - fi - fi - __convert_timestamp_to_fmt - - # extract the numerical portion of magnitude - magnitude_number=$(echo $magnitude | sed -e 's/+//' -e 's/-//') - - if [ -n "$magnitude" ]; then - if __check_alert_time_window && __check_min_magnitude ; then - echo "${location}${timestamp_fmt}:#[fg=colour0]${magnitude}" - fi - fi -} - -__convert_jp_magnitude() { - magnitude=${magnitude#震度} - # simplify high-lower designation (only used in extreme cases: above 4) - if [[ "$magnitude" == *弱 ]] ; then - magnitude="-${magnitude%弱}" - elif [[ "$magnitude" == *強 ]] ; then - magnitude="+${magnitude%強}" - fi -} - -__check_alert_time_window() { - [[ $(( ( $(date +%s) - $timestamp ) / 60 )) -lt $TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW ]] -} - -__check_min_magnitude() { - [[ $magnitude_number -ge $TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE ]] -} - -__convert_jp_timestamp() { - if shell_is_osx ; then - timestamp=$(date -j -f "%Y年%m月%d日 %H時%M分" "$timestamp" +"%s") - else - timestamp=$(echo $timestamp | $sed -e 's/年/-/' -e 's/月/-/' -e 's/日//' -e 's/時/:/' -e 's/分//') - timestamp=$(date -d "$timestamp" +"%s") - fi -} - -__convert_timestamp_to_fmt() { - if shell_is_osx ; then - timestamp_fmt=$(date -r "$timestamp" +"$TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT") - else - timestamp_fmt=$(date -d "$timestamp" +"$TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT") - fi -} - -__read_tmp_file() { - if [ ! -f "$tmp_file" ]; then - return - fi - IFS_bak="$IFS" - IFS=$'\n' - lines=($(cat ${tmp_file})) - IFS="$IFS_bak" - location="${lines[0]}" - magnitude="${lines[1]}" - timestamp="${lines[2]}" -} |