Re: 5行的天气脚本
发表于 : 2010-12-20 21:57
首先感谢LZ无私奉献
修正了当温度为负值时表达式里不读取的问题,格式稍稍修改后用在conky上了
conky调用

修正了当温度为负值时表达式里不读取的问题,格式稍稍修改后用在conky上了

代码: 全选
use 5.010;
$city = $ARGV[0] ? $ARGV[0] : "常熟";
$para = $ARGV[1] ? $ARGV[1] : "-LOCAL";
$_ = `w3m -cookie -dump "http://www.google.com.hk/search?q=tq+$city" 2> /dev/null`;
# 去掉无用信息
s@.*?天气@@s;
die "城市名称有误。\n" if ! s@北京市专业气象台.*@@s; # 判断是否有天气信息
if($para eq "-LOCAL")
{
# 当前
say "当前[$city]天气\n$2\t$1\n$3\n湿度:$4\n" if /([\-0-9]+ \/ [\-0-9]+°C)\n当前:([^\n]+)\n([^\n]+)\n湿度:(\d+%)/s;
}
else{
if($para == "-FUTURE"){
#say "今天:$2\t$1" if /\s+今日\n\s+([^\n]+)\n\s+(\d+ \/ \d+°C)/s;
say "周一:$2\n\t$1" if /\s+周一\n\s+([^\n]+)\n\s+([\-0-9]+ \/ [\-0-9]+°C)/s;
say "周二:$2\n\t$1" if /\s+周二\n\s+([^\n]+)\n\s+([\-0-9]+ \/ [\-0-9]+°C)/s;
say "周三:$2\n\t$1" if /\s+周三\n\s+([^\n]+)\n\s+([\-0-9]+ \/ [\-0-9]+°C)/s;
say "周四:$2\n\t$1" if /\s+周四\n\s+([^\n]+)\n\s+([\-0-9]+ \/ [\-0-9]+°C)/s;
say "周五:$2\n\t$1" if /\s+周五\n\s+([^\n]+)\n\s+([\-0-9]+ \/ [\-0-9]+°C)/s;
say "周六:$2\n\t$1" if /\s+周六\n\s+([^\n]+)\n\s+([\-0-9]+ \/ [\-0-9]+°C)/s;
say "周日:$2\n\t$1" if /\s+周日\n\s+([^\n]+)\n\s+([\-0-9]+ \/ [\-0-9]+°C)/s;
}
}
代码: 全选
${font SimSun-ExtB:size=14}${color 3399ff}${goto 95}${execi 1800 perl ~/.conky/weather.pl 常熟 -LOCAL}
${font SimSun-ExtB:size=8}${color 00ff5f}${goto 90}${execi 1800 perl ~/.conky/weather.pl 常熟 -FUTURE}