Conky获取天气的脚本

/ #电脑相关 / 2 comments

上文才说到了无关紧要的conky,这里还是折腾了一回它。看来已经是严重的"折腾综合症"了。

话说网上很多的conky的天气脚本都不能用了,这回是使用的Yahoo! Weather的rss服务。获取数据之后使用perl进行处理,获取想要的信息。这里实用的是全文字的输出。

先看一张图(右上角可以看见最终的效果):

~/weather.pl文件:

#!/usr/bin/perl

use Switch;
use Encode;
use Text::Wrap;
$code=$ARGV[0];
$what=$ARGV[1];
$file="/tmp/weather.txt";#缓存位置
$update=3600;#更新时间
switch($what){
	case "c" {#获取当前天气信息。
		&file_op;
		while(){
			if (/){
			if (/= 1000){
			my $date=`date -u +%s`;
			my $created=`stat -c %Y $file`;
			$age=$date - $created;
		}
		else{
			$age=$update+1;
		}
	}
	else{
		`touch $file`;
		$age=$update+1;
	}
	if ($age>=$update){
		`wget -O - http://weather.yahooapis.com/forecastrss?p="$code""\&u=c" > $file`;
	}
	open(FILE, $file) or die "Could not open file $file: $!\n";
}

从rss天气服务中可以获取的信息是很多的。这里只是取出了天气状况,温度和湿度。详细的可以参见/tmp/weather.txt里面的信息,适当修改就可以实现大量信息的提取。

使脚本可以被执行:

sudo chmod a+x ~/weather.pl

在conky中使用~/.conkyrc:

${color2}${execi 3600 perl ~/weather.pl CHXX0354 c}
${color2}${execi 3600 perl ~/weather.pl CHXX0354 f}

注意:
调用时的第一个参数(如:CHXX0354)是zip code。你可以在这里查找到。

第二个参数(c或者f)。c表示输出当前天气状况,f表示输出天气预报的内容。

方法参考至这里(注:他这里使用的是直接获取的网页而不是rss,并且里面对html的截断现在已经失效了。),他里面还提到了按照字体方式的输出。

回应
  1. ubuntu自带的那个天气只能显示到成都

    Reply
    1. wbyxu
      @zrqx008

      好像是的,不过那个会比较方便些,不折腾。

      Reply