Posts Tagged ‘天气预报’

老版天气预报系统停止提供服务

第一版天气预报系统自2008年1月上线以来,已经稳定的为网友提供了两年的服务。随着系统的访问量越来越大,网友的需求越来越复杂,今年年初的时候,重新开发了第二版的系统,并也已稳定运行了近一年。

在新版系统上线后,老版系统就已经不再维护,是否能正常使用我也无法保证,但通过查看系统日志,每天还是有数万的访问量,一直都想关闭老版系统,但为了这部分用户,一直没有这么做。

为了兼容这部分老用户的需求,在新版系统中,增加了一个modifier,以便能输出和v1一样的数据格式,并同时将v1的页面自动跳转到v2的相关页面。

如果还有在使用老版系统的用户,可以的话,请尽快转到新版,但原老版系统的url仍然是可以访问,只是重定向到了新版系统中的v1兼容页面,如果目前因为种种原因使用兼容页面仍不正常的用户,请与我联系。

PS:新版系统解决了以往输出第二天数据不定时的问题,若选了过滤器count_1,每天下午6点后则输出第二天的天气预报信息,换句话说,如果Google日历抓取即时,每天下午6点就可以收到第二天的短信提醒。

关注天气:免费的短信天气预报

天气预报系统提供ical输出已经一年多了,当初是应网友要求做的数据源。因为Google日历中可以导入外部的ical数据,更重要的是,它还提供对导入日历中的数据给用户发送短信提醒,而这一切都是免费的。

已经有不少网站和博客介绍了如何利用本站的天气预报数据实现免费的短信提醒,但基本都是针对的老版系统,在更新了自定义数据格式的工具后,我觉得有必要详细解释一下如何使用这个工具,以及实现免费短信提醒的步骤。

首先,请确认你满足以下条件

  1. 一个属于你自己的GMail账号。
  2. 一部支持中文短信功能的手机,移动或联通均可,小灵通不支持。
  3. 将手机号码与Google日历帐号绑定。

在确定了满足以上条件后,就可以开始下一步:选择数据源

  1. 访问天气预报系统http://weather.raychou.com
  2. 在搜索框中输入关注的城市名称,拼音或汉字均可,例如,北京beijing。页面会自动跳转到天气详情页面,如果搜索到的结果不正确(有部分城市的拼音相同),还可通过搜索框下面的城市列表选择。
  3. 滚动到页面最下面的数据自定义工具,点击模板”Google日历的短信提醒”,最下面的URL就是我们想要的自定义数据源的网址。

至此,数据源我们已经得到,接下来就是将其添加到Google日历中,并设置短信提醒:

首先,登陆Google日历后,点击页面左下角的”添加”,在弹出菜单中选择”通过URL添加”

2009-05-11_195358.jpg

再添加页面中,将之前得到的数据源URL复制粘贴到文本框中,点击”添加”。若提示无法获取网址或其他错误,删除数据源再重复添加即可。

在得到页面提示添加成功后,点击右下角的”设置”,再点击刚才添加的日历后的”通知”链接,转入日历通知设置。

2009-05-11_195923.jpg

在通知设置中,选择通知的接受方式和通知方式,如图所示。注意,提前的时间是相对于预报日期的0点而言,例如提前4小时,就会在每天的20点收到次日的天气预报。

2009-05-11_200044.jpg

点击”保存”,就大功告成了。

最后show一下我的Treo680收到天气预报短信的界面

treo-680-weather-sms.jpg

天气预报系统更新:支持自定义数据格式

天气预报系统一直都有很多网友在使用和关注,我也一直没有放弃更新。但一直因为原来的代码部署方式过于麻烦而一直没有做大的改进。在部署了新的开发方式后,一方面正好可以测试这套方案的健壮性,另一方面也把以前网友们提出的建议实现。

这次更新最大的改进是支持自定义数据格式,用户可以根据自己的需要选择数据格式,输出的条数,以及是否只显示雨雪天气预报。

  1. 数据格式:目前提供了html,rss,ical三种格式输出,计划中还要提供json,以及方便手机用户浏览的wap格式。
  2. 显示条数:可自定义显示1-7条数据,例如用在Google日历中的短信提醒,就可以只输出一条,这样每天就能只收到第二天的天气预报。
  3. 雨雪预报:这应该是一个相当实用的更新,相信大部分用户并不太关心天晴情况,除非第二天可能有雨,当选中这个设置后,若第二天是非雨雪天气,则不会有数据输出,如果用在Google日历的提醒中,就不会每天都收到短信了。

2009-05-11_001716.jpg

在经历了数次更新后,这个系统也日趋完善,预计不久后就会将其加入实验室,开放源码供大家下载。

注:如何利用Google日历和本系统的数据源实现免费的天气预报提醒,请移步《天气预报V2隆重上线测试》一文中的网友介绍或自行搜索。

天气预报V2隆重上线测试

相关链接:老版系统 新版系统

当初做RSS天气预报纯属兴趣,完全没有想到提供服务后如此受欢迎,在2008一年时间内,访问量超过千万,平均每日4万多次。这套系统完全没有做过任何宣传,仅仅靠网友们的口碑相传就能达到这么多的访问量,远远超过我的意料之外。另外据我简单的来源统计,至少有3-4款手机客户端软件使用了raychou的RSS作为数据源。

raychou.com里和天气预报程序有关的文章:

网络/网友相关介绍

程序发布2年多,期间重写过一次,再应网友要求增加了ICAL输出,但当时由于GG日历对于外部ICAL中文支持的问题,一直无法在GG日历中完美显示中文,很长一段时间内都是以拼音代替中文输出,以满足网友们利用Google日历的免费短信提醒功能接受天气预报。这一问题在新版系统中也终于得到解决。

随着访问量的上升,以及众多网友在Blog上留言对现有系统的各种不满,利用周末的时间重写了全部代码,并于今天正式对外测试(新版系统网址:http://weather.raychou.com)。新的架构实现了多数据源采集,多格式输出,能够非常方便的进行输出源的扩展,目前已完成RSS和ICAL格式的输出,计划中还有HTML,WAP,Mobile,iPhone等输出格式以满足各类网友的需求。

希望使用老版数据源的用户尽快转到新版,针对v1,v2做了如下改进:

  • 进入系统会自动根据用户ip来源显示当地天气情况
  • 可使用汉字或拼音快速搜索指定地区
  • RSS输出兼容Google阅读器抓虾等主流RSS阅读器
  • ICAL输出完美兼容Google日历

计划中要推出的功能

  • widget,用户可在论坛签名档,blog侧边栏,网站首页等等区域调用代码,实现为访客显示当地天气预报
  • 丰富的输出格式

更多功能期待您的建议,有任何想法欢迎联系我,联系方式请看这里

PS:一如既往,这套系统任然会提供免费下载,我将会第一时间在Blog公布。

制作自己的天气预报站点

一直以来都只提供了天气预报的RSS输出,有很多网友都问我如何将这些数据应用到自己的网站上面,下面我来提供一个简单的例子

效果如下图所示。演示网址 http://www.anziji.com/

不过不同的是这个演示用的AJAX实现,所以在程序中文字通过mb_convert_encoding转换成的UTF-8

weather.jpg

// 自定义函数用于读取rss文件内容
function getFile($url){
if($f=@fopen("$url","r"))
{
while(!@feof($f))
{
$s.=@fgets($f);
}
@fclose($f);
}
return $s;
}
 
// 读取rss文件内容到变量,通过URL传递id参数
$xml = getFile("http://www.raychou.com/weather/rss.php?id={$_GET['id']}");
 
// 使用正则获取相关天气信息到数组
preg_match_all('/([sS]*?)/',$xml,$weather);
preg_match_all('/([sS]*?)/',$xml,$temperature);
preg_match_all('/([sS]*?)/',$xml,$wind);
preg_match_all('/([sS]*?)/',$xml,$trend);
$day = array('今天','明天','后天');
 
// 输出
for($i = 0;$i < 3;$i++) {
$string .="
&lt;ul&gt;<br/>&lt;li&gt;" . mb_convert_encoding($day[$i],"UTF-8","GB2312") . "&lt;/li&gt;
&lt;li&gt;{$weather[1][$i]}&lt;/li&gt;
&lt;li&gt;{$temperature[1][$i]}&lt;/li&gt;
&lt;li&gt;{$wind[1][$i]}&lt;/li&gt;
&lt;li&gt;{$trend[1][$i]}&lt;/li&gt;
&lt;/ul&gt;
";
}
echo $string;