#!/bin/bash # 時間単位のスクリプト [ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc" [ -f "$HOME/.zshrc" ] && source "$HOME/.zshrc" # 場所のURL(日本語表記にしたい場合は/en/を/ja/に書き換える) WEATHER_URL=${WEATHER_URL:='https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230'} # 何時間分? NUM_HOUR=24 # 何時間おき? SKIP=2 # 何段? COLUM=2 # 各段の間の改行数 NLF=5 # 表示桁数 MY_STRLN=15 # 見出しの文字数 MY_INDEX=9 # 気温、降水確率、雨量、風速、フレーズを表示する?(1 表示する、0 表示しない) F_TEMP=1 F_PRECIP=1 F_RAIN=1 F_WIND=1 F_PHRASE=0 # 天気アイコンを取得する?(1 取得する、0 取得しない) F_ICON=1 # AMとPMの色 30 黒、31 赤、32 緑、33 黄、34 青、35 マゼンタ、36 シアン、37 白、0 デフォルト、二桁目が4で背景の色指定 COLOR_AM='47;31;1' COLOR_PM='47;34;1' # 見出しの色 COLOR_CP='0' # 天気フレーズの色 COLOR_PHRASE='3' # 日本語対応の等幅フォント?(1 対応【Osaka-等幅、Ricty、Myrica Mなど】、0 非対応【Andale Mono、Courier、Menlo、Monacoなど】) F_JFNT=1 # 設定 [ $F_JFNT -eq 1 ] && JFNT='℃' || JFNT='°' # 文字数取得用関数 mystrln() { local LANG=ja_JP.UTF-8 local dn=0 mb=0 for ((j = 0; j < $((${#1})); ++j)) do [ $(/bin/echo -n ${1:$j:1} | wc -c) -le 1 ] ; fd=$? dn=$(($dn+1+$fd)) [ $dn -gt $2 ] && break mb=$(($mb+$fd)) done printf -v $3 "%s" "`/bin/echo -n ${1:0:$j}`" printf -v $4 "%d" $(($mb+$2)) } # データ表示用関数 display_data() { mystr=$(echo "$1" | perl -C -MEncode -pe 's/([0-9A-F]{2,4});/chr(hex($1))/ge') mystrln "$mystr" $MY_INDEX S1 S2 printf "\033[0;${COLOR_CP}m%-*s\033[0m" $S2 "$S1" for i in $(seq 0 $SKIP $(($nt-1))) do mystrln "$(eval echo '${'$2'[$(($i+$n))]}' | perl -C -MEncode -pe 's/([0-9A-F]{2,4});/chr(hex($1))/ge')" $MY_STRLN S1 S2 printf "%-*s" $S2 "$S1" done echo } # 元データ取得 USER_AGENT='Mozilla/5.0 (Macintosh; Intel Mac OS X)' WEATHER_DATA0=$(curl -A "$USER_AGENT" --silent ${WEATHER_URL/weather-forecast/hourly-weather-forecast}) WEATHER_DATA1=$(curl -A "$USER_AGENT" --silent ${WEATHER_URL/weather-forecast/hourly-weather-forecast}"?day=2") # 表示する項目名を取得 LOCALE_TEMP=' ' LOCALE_PRECIP='' if [ "$(echo $WEATHER_URL | grep 'com/en/')" ]; then LOCALE_RAIN="Rain" LOCALE_WIND="Wind" elif [ "$(echo $WEATHER_URL | grep 'com/ja/')" ]; then LOCALE_RAIN="雨" LOCALE_WIND="風向" else F_RAIN=0 F_WIND=0 fi # 時刻・気温・降水確率・雨量・風速・天気を配列変数として取得 _IFS="$IFS";IFS=$'\n' HOUR_TIME=($(echo "$WEATHER_DATA0" "$WEATHER_DATA1" | grep -A2 'class="date"' | grep 'div' | sed -e 's/<[^>]*>//g')) HOUR_TEMP=($(echo "$WEATHER_DATA0" "$WEATHER_DATA1" | grep 'class="temp metric"'| sed -e 's/<[^>]*>//g' | cut -d\& -f1 | sed -E s/$/$JFNT/)) HOUR_PRECIP=($(echo "$WEATHER_DATA0" "$WEATHER_DATA1" | grep -A2 '