分页: 2 / 2

Re: 5行的天气脚本

发表于 : 2010-12-20 21:57
trailbreaker
首先感谢LZ无私奉献 :em04

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

代码: 全选

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;
        }
}
conky调用

代码: 全选

${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}

Re: 5行的天气脚本

发表于 : 2010-12-21 10:17
dqb1990aion
:em06 :em06 :em06 楼主阿

表示看不懂。

Re: 5行的天气脚本

发表于 : 2010-12-22 18:01
tusooa
这。。。挖坟太严重了吧。
吾都改用weather.perl了。

Re: 5行的天气脚本

发表于 : 2010-12-22 18:07
tusooa
lsss,

No-

代码: 全选

else { if (xxx) { xxx } }
Use-

代码: 全选

elsif (xxx) { xxx }

Re: 5行的天气脚本

发表于 : 2010-12-22 23:47
trailbreaker
我也是新近才接触perl, 主要就是为了解决conky上的查询天气问题,所以越简单越好。 :em03

所以只要是符合条件的,再老的坟也挖 :em05

楼主把weather.perl亮出来分享一下呢 :em09

Re: 5行的天气脚本

发表于 : 2010-12-23 17:23
tusooa
都在github上的。
自己看吧。
tusooa/tusooa

Re: 5行的天气脚本

发表于 : 2010-12-23 19:22
trailbreaker
学习了,多谢 :em01