Skip to content

Instantly share code, notes, and snippets.

@kernelhcy
Last active March 10, 2020 06:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kernelhcy/13de78e2973ca9addc7ea5cdaa5bed84 to your computer and use it in GitHub Desktop.
Save kernelhcy/13de78e2973ca9addc7ea5cdaa5bed84 to your computer and use it in GitHub Desktop.
bitbar
#!/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