1

让我先说我上一堂计算机课是在 1968-69 年的高中。我确定我没有使用最佳实践,我总是很感激那里的帮助。我所做的一切都是自学的,这是我编写的第一段真正原创的代码。

在这种情况下,我正在尝试制作天气预报页面。 这是檀香山的样品。数据来自 NWS NDFD(国家数字预报数据库),通过 api.weather.gov 以 json 格式提供。我提取这些变量并将它们插入 ImageMagick。

两个问题。我可以适应每次不同长度的预测的唯一方法是使用标题命令。但是SUNNY,旁边的三四线预测是不和谐的。有没有更好的方法或至少有一种方法来限制字体上限?

此外,这比我预期的要长得多。有没有办法让我加快这个过程?

在此先感谢您的帮助。我在这里学到了很多东西。

#!/bin/bash
#process forecast json 
#8Oct2019
#@geofffox

cd /tmp/json
#curl -o kofk https://api.weather.gov/gridpoints/OAX/31,93/forecast
#curl -o kofk https://api.weather.gov/gridpoints/AFG/381,359/forecast
#curl -o kofk https://api.weather.gov/gridpoints/APX/36,23/forecast
#curl -o kofk https://api.weather.gov/gridpoints/HFO/153,144/forecast
curl -o kofk https://api.weather.gov/gridpoints/OKX/66,65/forecast

counter=0
while [ $counter -le 13 ]
do


number["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].number')
name["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].name')
start["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].startTime')
end["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].endTime')
swch["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].isDaytime')
temp["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].temperature')
wind["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].windSpeed')
wdir["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].windDirection')
shrt["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].shortForecast')
long["$counter"]=$(cat kofk | jq -r  '.properties.periods['$counter'].detailedForecast')


echo $counter
((counter++))
done


innerLoop=0
rm /var/www/html/output/json/kofk/*.png
while [ $innerLoop -le 13 ]
do 
echo $innerLoop

convert -size 1920x1080 xc:blue PNG32:/var/www/html/output/json/kofk/kofk.png

    convert  -background rgba\(0,0,0,0.001\) -fill white -stroke black -strokewidth 3 -gravity west -font Open-Sans-Extrabold -size 700x400 caption:"${shrt["$innerLoop"]^^}" \( +clone -shadow 70x12+5+5 \) +swap \
    -flatten  -trim +repage  /var/www/html/output/json/kofk/shrt["$innerLoop"].png

 convert /var/www/html/output/json/kofk/kofk.png -gravity northwest -pointsize 50 -fill white -font Open-Sans-Bold -stroke black -strokewidth 2 -draw "text 950,115 '${name["$innerLoop"]^^}'" /var/www/html/output/json/kofk/kofk["$innerLoop"].png 

        if ${swch["$innerLoop"]} == false; then

 convert /var/www/html/output/json/kofk/kofk["$innerLoop"].png -pointsize 50 -fill white -font Open-Sans-Bold -stroke black -strokewidth 2  -draw "text 950 700 'DAYTIME HIGH:'" /var/www/html/output/json/kofk/kofk["$innerLoop"].png

        else
 convert /var/www/html/output/json/kofk/kofk["$innerLoop"].png -pointsize 50 -fill white -font Open-Sans-Bold -stroke black -strokewidth 2  -draw "text 950 700 'OVERNIGHT LOW:'" /var/www/html/output/json/kofk/kofk["$innerLoop"].png

       fi

 convert /var/www/html/output/json/kofk/kofk["$innerLoop"].png -pointsize 200 -fill black -font Open-Sans-Extrabold -draw "text 1405 705 '${temp["$innerLoop"]^^}°'" -fill white -stroke black -strokewidth 5 -draw "text 1400 700 '${temp["$innerLoop"]^^}°'" /var/www/html/output/json/kofk/kofk["$innerLoop"].png
 convert /var/www/html/output/json/kofk/kofk["$innerLoop"].png -pointsize 50 -fill white -font Open-Sans-Bold -stroke black -strokewidth 2  -draw "text 950 750 'WIND: ${wdir["$innerLoop"]}"" ${wind["$innerLoop"]^^}'" /var/www/html/output/json/kofk/kofk["$innerLoop"].png

 convert -composite -gravity west -geometry +950-175 /var/www/html/output/json/kofk/kofk["$innerLoop"].png /var/www/html/output/json/kofk/shrt["$innerLoop"].png /var/www/html/output/json/kofk/kofk["$innerLoop"].png 

rm /var/www/html/output/json/kofk/shrt["$innerLoop"].png

 ((innerLoop++))
done


exit
4

0 回答 0