![Conky 和 Wunderground 天气](https://linux22.com/image/1542226/Conky%20%E5%92%8C%20%E2%80%8B%E2%80%8BWunderground%20%E5%A4%A9%E6%B0%94.png)
我正在编辑我的问题以便澄清...对于造成的混淆,我深感抱歉...Conky 语法已随着最新版本而改变(我认为最新版本的 Conky 用户已经意识到了这一点)。
我的问题澄清了:
我创建了一个 xml 文件,从 Wunderground.com 获取天气信息。
我希望找到一种简单的方法从 xml 文件中提取特定信息以在 Conky 中显示(包括天气图标)。
到目前为止,我找到的大多数信息都不能满足我的需求,我无法根据找到的信息拼凑出自己的解决方案,因为这些信息似乎过于复杂。我希望使用的方法不需要大量额外的程序和/或脚本编写。
例子:
我使用“curl -shttp://api.wunderground.com/api/[key]/conditions/q/TX/[mycity].xml-o ~/path/weather.xml” 使用 Wunderground.com 创建我的 xml 文件。
在 xml 文件中,有当前天气图标的路径(比如说:“http://icons.wxug.com/i/c/k/cloudy.gif“)
xml 文件中包含我想要显示的特定数据,例如当前温度(xml 文件显示“<'temp_f'>'68.9'<'/temp_f'>'”... 注意:我使用“<”,否则我的帖子将不会显示标签)。因此,我想取 68.9 并显示它(或将其四舍五入为 69)。
最后,使用上述示例,我的 Conky 将显示“多云”图标和 69F(或 68.9F)。然后我可以(我希望很容易)以类似的方式提取和显示其他信息。
提前感谢您提供的任何帮助。
答案1
第1部分:
为了直接从网址中提取信息,您可以使用以下命令:
curl api.wunderground.com/api/[key]/conditions/q/[state]/[mycity].xml | awk -F'[<|>]' '/<temp_f>/ {print "Current Temperature:"$3"°F"}/<windchill_f>/ {print "Windchill:"$3"°F"}'
...或者,您也可以从下载的 xml 文件中提取信息:
curl 'file:///home/path/weather.xml' | awk -F'[<|>]' '/<temp_f>/ {print "Current Temperature:"$3"°F"}/<windchill_f>/ {print "Windchill:"$3"°F"}'
您可以更换
'/<temp_f>/' {print "Current Temperature:"$3"°F"}
与您想要显示的任何其他标签和信息。
第2部分:
为了提取图标 URL,然后让图标显示在 Conky 中,您需要将 URL 提取到以下文件中:
curl api.wunderground.com/api/[key]/conditions/q/[state]/[mycity].xml | awk -F'[<|>]' '/<icon_url>/ {print $3}' >~/path/image
然后您需要下载该图标,给它一个通用名称,然后将其移动到您想要的文件夹:
wget -O weather.gif -i ~/path/image
mv ~/weather.gif ~/path/
使用上述步骤创建一个 sh 脚本(我们称之为“weather.sh”),并将其放置在您想要的位置。
然后你可以在“.conkyrc”中放置如下命令:
${execi 300 sh ~/path/weather.sh}
${image ~/path/weather.gif -p 10,40 -s 32x32}
在“image”命令中,“-p”= 位置,“-s”= 图像的像素大小。更改坐标和大小以满足您的目的。
这应该比我为 Conky 找到的许多天气脚本等简单得多。