- 論壇徽章:
- 0
|
在實現(xiàn)
Tinker-Bot
的天氣預(yù)報功能時,google 偶然發(fā)現(xiàn)了這么一個有趣的工具:命令行下,從電腦發(fā)送短信到手機的飛信軟件。這個程序是
solrex
寫的。原文鏈接如下:
http://blog.solrex.cn/articles/diy-free-weather-forecast-sms.html
在
solrex
的這篇文章里,已經(jīng)把原理講得很明白了。我就不再贅述。
我用了他的 sendsms 程序(見附件,也可以去 solrex 的博客下載),不過自己寫了抓天氣的 Perl 腳本。代碼如下:
$ cat weather.pl
#!/usr/bin/perl
use strict;
my %weather;
my @date = ("24", "48", "72");
my %user_list = (
# 各個城市用戶的手機號或飛信號,多個用戶以逗號相隔(需事先加為飛信好友)
"南京" => "159*,139*,158*,138*",
"杭州" => "158*",
"上海" => "137*,139*",
"寧波" => "150*",
"北京" => "134*",
);
my %code_of_city = (
# http://wap.weather.com.cn 各城市代碼
"南京" => 58238,
"杭州" => 58457,
"上海" => 58367,
"寧波" => 58563,
"北京" => 54511,
);
foreach my $city (keys %user_list) {
foreach my $date (@date) {
my $result = "";
my @info = `w3m -dump -no-cookie http://wap.weather.com.cn/wap/$code_of_city{$city}/h$date/`;
if ($date eq "24") {
$result = "${city}天氣\n今天" . join('', @info[4,5,6]);
} elsif ($date eq "48") {
$result = "\n明天" . join('', @info[4,5,6,7,8]);
} elsif ($date eq "72") {
$result = "\n后天" . join('', @info[4,5,6]);
}
$result =~ s/度/°C/g;
$result =~ s/°C到/-/g;
$result =~ s/(今天|明天|后天)天氣/$1/g;
$weather{$city} .= $result;
}
}
open LOG, ">>", "/home/sapiens/log/sendsms.log" or die "Can't write to sendsms.log: $!";
print LOG `date`;
close LOG;
foreach my $city (keys %user_list) {
`sendsms -v -l -f 159* -p passwd -t $user_list{$city} "$weather{$city}"`;
# print "To $user_list{$city} in $city:\n$weather{$city}\n";
sleep 3;
}
此腳本獲取的天氣信息示例:
南京天氣
今天:陣雨轉(zhuǎn)多云
氣溫:20-12°C
風(fēng)向風(fēng)力:東南風(fēng)4-5級轉(zhuǎn)北風(fēng)4-5級
明天:晴
氣溫:20-10°C
風(fēng)向風(fēng)力:北風(fēng)4-5級轉(zhuǎn)3-4級
紫外線指數(shù):中等
穿衣指數(shù):溫涼
后天:晴轉(zhuǎn)多云
氣溫:21-11°C
風(fēng)向風(fēng)力:北風(fēng)3-4級轉(zhuǎn)東風(fēng)小于3級
先編譯安裝 sendsms ,然后把這個腳本扔到 crontab 里,就可以每天定時的給一群人發(fā)送天氣預(yù)報啦!
$ crontab -l
0 19 * * * /home/sapiens/bin/weather.pl >> /home/sapiens/log/sendsms.log 2>&1
附: sendsms 程序
![]()
文件:sendsms.tar.bz2
大小:739KB
下載:
下載
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/93312/showart_1908632.html |
|