Last active
March 10, 2020 06:00
-
-
Save kernelhcy/13de78e2973ca9addc7ea5cdaa5bed84 to your computer and use it in GitHub Desktop.
bitbar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
JQ_BIN=/usr/local/bin/jq | |
#MENUFONT="size=13 font=UbuntuMono-Bold" | |
MENUFONT="size=15" | |
COLORS=("#0ed812" "#ffde33" "#ff9933" "#cc0033" "#660099" "#7e0023") | |
CURRENT_WEA_URL="https://tianqiapi.com/api/?version=v6&appid=76961778&appsecret=K1Evb4rc" | |
DATA=`curl --noproxy "*" -s "${CURRENT_WEA_URL}"` | |
MOON_DATA=`curl --noproxy "*" -s 'http://zh.wttr.in?format=%m&period=60'` | |
DAY_7_URL="https://tianqiapi.com/api?version=v1&appid=76961778&appsecret=K1Evb4rc" | |
DAY_7_DATA=`curl --noproxy "*" -s "${DAY_7_URL}"` | |
CLOUD_MAP_URL="https://tianqiapi.com/api?version=v8&appid=76961778&appsecret=K1Evb4rc" | |
CLOUD_MAP_DATA=`curl --noproxy "*" -s "${CLOUD_MAP_URL}"` | |
AQI_RES=`echo ${DATA} | $JQ_BIN -cMr '.air_pm25'` | |
function aqi_colorize { | |
if [ "$1" -le 50 ]; then | |
echo "${COLORS[0]}" | |
elif [ "$1" -le 100 ]; then | |
echo "${COLORS[1]}" | |
elif [ "$1" -le 150 ]; then | |
echo "${COLORS[2]}" | |
elif [ "$1" -le 200 ]; then | |
echo "${COLORS[3]}" | |
elif [ "$1" -le 300 ]; then | |
echo "${COLORS[4]}" | |
else | |
echo "${COLORS[5]}" | |
fi | |
} | |
function convertToWeaImg | |
{ | |
local wea_img='' | |
case $1 in | |
lei) wea_img='⚡️';; | |
qing) wea_img='☀️';; | |
shachen) wea_img='😷';; | |
wu) wea_img='🌫';; | |
xue) wea_img='❄️';; | |
yu) wea_img='🌧';; | |
yujiaxue) wea_img='🌨';; | |
yun) wea_img='⛅️';; | |
zhenyu) wea_img='🌧';; | |
yin) wea_img='☁️';; | |
bingbao) wea_img='🧊';; | |
*) wea_img='';; | |
esac | |
echo $wea_img | |
} | |
function convertToWinArrow | |
{ | |
local win_arrow='' | |
case $1 in | |
东南风) win_arrow='↖';; | |
南风) win_arrow='↑';; | |
西南风) win_arrow='↗';; | |
东风) win_arrow='←';; | |
西风) win_arrow='→';; | |
东北风) win_arrow='↙';; | |
北风) win_arrow='↓';; | |
西北风) win_arrow='↘';; | |
*) win_arrow='';; | |
esac | |
echo $win_arrow | |
} | |
function extractCity() | |
{ | |
local country=`echo -n $1 | $JQ_BIN -cMr '.country'` | |
local city=`echo -n $1 | $JQ_BIN -cMr '.city'` | |
echo "$city · $country" | |
} | |
function extractWeather() | |
{ | |
local wea=`echo -n $1 | $JQ_BIN -cMr '.wea'` | |
local wea_img=`echo -n $1 | $JQ_BIN -cMr '.wea_img'` | |
echo "[`convertToWeaImg $wea_img`] $wea" | |
} | |
function extractTemp() | |
{ | |
local tem=`echo -n $1 | $JQ_BIN -cMr '.tem'` | |
local tem1=`echo -n $1 | $JQ_BIN -cMr '.tem1'` | |
local tem2=`echo -n $1 | $JQ_BIN -cMr '.tem2'` | |
echo "$tem℃ [$tem2℃~$tem1℃]" | |
} | |
function extractHumidity() | |
{ | |
echo -n $1 | $JQ_BIN -cMr '.humidity' | |
} | |
function extractPressure() | |
{ | |
echo -n $1 | $JQ_BIN -cMr '.pressure' | |
} | |
function extractVisibility() | |
{ | |
echo -n $1 | $JQ_BIN -cMr '.visibility' | |
} | |
function extractWind() | |
{ | |
local win_speed=`echo -n $1 | $JQ_BIN -cMr '.win_speed'` | |
local win_meter=`echo -n $1 | $JQ_BIN -cMr '.win_meter'` | |
local win=`echo -n $1 | $JQ_BIN -cMr '.win'` | |
local win_arrow=`convertToWinArrow $win` | |
echo "[$win_arrow] $win $win_speed" | |
} | |
function extractPm25() | |
{ | |
local air_pm25=`echo -n $1 | $JQ_BIN -cMr '.air_pm25'` | |
local air_level=`echo -n $1 | $JQ_BIN -cMr '.air_level'` | |
local air_tips=`echo -n $1 | $JQ_BIN -cMr '.air_tips'` | |
echo "$air_pm25 [$air_level]" | |
} | |
function extractWeek() | |
{ | |
echo -n $1 | $JQ_BIN -cMr '.week' | |
} | |
function extractForecast() | |
{ | |
local data=$1 | |
local day=`echo $data | $JQ_BIN -cMr '.day'` | |
local week=`echo $data | $JQ_BIN -cMr '.week'` | |
local wea=`echo $data | $JQ_BIN -cMr '.wea'` | |
local weaLen=${#wea} | |
if [ $weaLen -lt 4 ]; then | |
wea="$wea\t\t" | |
fi | |
local wea_img=`echo $data | $JQ_BIN -cMr '.wea_img'` | |
local tem1=`echo $data | $JQ_BIN -cMr '.tem1'` | |
local tem2=`echo $data | $JQ_BIN -cMr '.tem2'` | |
local win=`echo $data | $JQ_BIN -cMr '.win[0]'` | |
local win_speed=`echo $data | $JQ_BIN -cMr '.win_speed'` | |
echo -e "$day`convertToWeaImg $wea_img` $wea 🌡️[$tem2~$tem1] \t🌬️`convertToWinArrow $win`$win($win_speed)" | |
} | |
function extractHourForecast() | |
{ | |
local day_data=$1 | |
local hour_data=`echo $day_data | $JQ_BIN -cMr ".hours[$2]"` | |
local day=`echo $hour_data | $JQ_BIN -cMr ".day"` | |
local wea=`echo $hour_data | $JQ_BIN -cMr ".wea"` | |
local tem=`echo $hour_data | $JQ_BIN -cMr ".tem"` | |
local win=`echo $hour_data | $JQ_BIN -cMr ".win"` | |
local win_speed=`echo $hour_data | $JQ_BIN -cMr ".win_speed"` | |
echo "$day\t$wea [$tem] $win $win_speed" | |
} | |
function printForecast() | |
{ | |
local data=`echo $DAY_7_DATA | $JQ_BIN -cMr ".data[$1]"` | |
echo -e "-- `extractForecast "$data"` | href=" | |
echo -e "---- `extractHourForecast "$data" '0'` | href=" | |
echo -e "---- `extractHourForecast "$data" '1'` | href=" | |
echo -e "---- `extractHourForecast "$data" '2'` | href=" | |
echo -e "---- `extractHourForecast "$data" '3'` | href=" | |
} | |
function printTodayHours() | |
{ | |
local data=`echo $1 | $JQ_BIN -cMr ".hours[$2]"` | |
local day=`echo $data | $JQ_BIN -cMr ".day"` | |
local wea=`echo $data | $JQ_BIN -cMr ".wea"` | |
local tem=`echo $data | $JQ_BIN -cMr ".tem"` | |
local win=`echo $data | $JQ_BIN -cMr ".win"` | |
local win_speed=`echo $data | $JQ_BIN -cMr ".win_speed"` | |
echo -e "-- $day\t$wea \t🌡[$tem] \t🌬️$win $win_speed | href=" | |
} | |
function printIndex() | |
{ | |
local data=`echo $1 | $JQ_BIN -cMr ".index[$2]"` | |
local title=`echo $data | $JQ_BIN -cMr '.title'` | |
local level=`echo $data | $JQ_BIN -cMr '.level'` | |
local desc=`echo $data | $JQ_BIN -cMr '.desc'` | |
echo "-- $title: [$level] $desc | href=" | |
} | |
function printCloudMap() | |
{ | |
local data=`echo $CLOUD_MAP_DATA | $JQ_BIN -cMr ".data[$1]"` | |
local title=`echo $data | $JQ_BIN -cMr '.title'` | |
local pic=`echo $data | $JQ_BIN -cMr '.pic'` | |
local picData=`curl -s --noproxy "*" "$pic" | base64` | |
echo "$title降水量预报图" | |
echo "-- | image=$picData href=$pic" | |
} | |
TODAY_DATA=`echo $DAY_7_DATA | $JQ_BIN -cMr ".data[0]"` | |
COLOR="$(aqi_colorize "${AQI_RES}")" | |
echo "${AQI_RES} | color=${COLOR} ${MENUFONT}" | |
echo "---" | |
echo -e "城市:\t`extractCity "$DATA"` | href=http://zh.wttr.in/hangzhou?m" | |
echo -e "天气:\t`extractWeather "$TODAY_DATA"` | href=http://zh.wttr.in/hangzhou?m" | |
for ((i=0;i<8;i++)) | |
do | |
printTodayHours "$TODAY_DATA" "$i" | |
done | |
echo -e "温度:\t`extractTemp "$DATA"` | href=http://zh.wttr.in/hangzhou?m" | |
echo -e "湿度:\t`extractHumidity "$DATA"` | href=http://zh.wttr.in/hangzhou?m" | |
echo -e "气压:\t`extractPressure "$DATA"`百帕 | href=http://zh.wttr.in/hangzhou?m" | |
echo -e "能见度:`extractVisibility "$DATA"` | href=http://zh.wttr.in/hangzhou?m" | |
echo -e "风力:\t`extractWind "$DATA"` | href=http://zh.wttr.in/hangzhou?m" | |
echo -e "空气:\t`extractPm25 "$DATA"` | color=${COLOR} href=http://zh.wttr.in/hangzhou?m" | |
echo -e "月相:\t$MOON_DATA | href=http://zh.wttr.in/hangzhou?m" | |
echo -e "-- | image=`curl -s --noproxy "*" "wttr.in/Moon.png" | base64` href=" | |
echo "---" | |
echo "7天预报" | |
for((i=1;i<7;++i)) | |
do | |
printForecast "$i" | |
done | |
echo "生活指数" | |
printIndex "$TODAY_DATA" '0' | |
printIndex "$TODAY_DATA" '2' | |
printIndex "$TODAY_DATA" '3' | |
printIndex "$TODAY_DATA" '4' | |
printIndex "$TODAY_DATA" '5' | |
echo "---" | |
printCloudMap '0' | |
printCloudMap '1' | |
printCloudMap '2' | |
echo "---" | |
/Users/hcy/programs/bitbar/backup/brew-updates.1h.sh | |
echo "---" | |
#echo "| image=`curl -s 'zh.wttr.in/hangzhou_p0.png?m' | base64`" | |
echo "Refresh... | refresh=true" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment