|
本來(lái)是想自己直接從中國(guó)天氣網(wǎng)獲取信息并處理,后來(lái)發(fā)現(xiàn)處理起來(lái)太麻煩,而且要獲取所有城市的城市編碼,再有就是!不支持國(guó)外天氣!?。ㄎ覀儗W(xué)校有很多畢業(yè)生在國(guó)外上學(xué),所以我考慮還是做出支持國(guó)外天氣的版本)
因此考慮直接調(diào)用別人的API,一開(kāi)始選用了方倍工作室已經(jīng)做好的接口(無(wú)奈也沒(méi)有國(guó)外)。直到有一天返回北京天氣溫度是零下的時(shí)候(當(dāng)時(shí)天熱到不敢出門(mén))。。。換!換!換!
后來(lái)終于發(fā)現(xiàn)最靠譜的接口----百度的天氣API。
廢話(huà)少說(shuō),首先大家要上 百度地圖API申請(qǐng)一個(gè)專(zhuān)用key(大概一分鐘就搞定了,很方便)
代碼如下:
//圖文信息2 for 天氣【這是微信的圖文信息模板】 $tqTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><ArticleCount>5</ArticleCount><Articles><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item></Articles></xml> ";//最后發(fā)現(xiàn)最多只能看到五個(gè)item= =無(wú)語(yǔ)。。。
php代碼
if(substr_count($keyword,'天氣')!=0 && $keyword!='天氣') { $geshu = substr_count($keyword,'天氣'); $t = explode("天氣",$keyword); for($i=0;$i<=$geshu;$i++) { if($t[$i]!='') { $city = $t[$i]; break; } } $mykey = "【這里換成你的API key】"; $url = "http://api.map.baidu.com/telematics/v3/weather?location=".$city."&output=json&ak=".$mykey; $output = file_get_contents($url); $contentStr = json_decode($output, true); if($contentStr['status']=='success') { $T[0]['Title']=$contentStr['date']." ".$contentStr['results'][0]['currentCity']."天氣";//$T[0]['PicUrl']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg";//$T[0]['Url']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"; //上面兩行可以設(shè)成你想要的頂部圖片 if(is_array($contentStr['results'][0]['index'])) { $T[2]['Title']="【pm2.5】".$contentStr['results'][0]['pm25']."/n"."【".$contentStr['results'][0]['index'][0]['title']."】"."(".$contentStr['results'][0]['index'][0]['zs'].") ".$contentStr['results'][0]['index'][0]['des']; //下一行是洗車(chē)指數(shù),感覺(jué)不對(duì)主題還是不要的好。。 //$T[2]['Title']=$T[2]['Title']."/n"."【".$contentStr['results'][0]['index'][1]['title']."】(".$contentStr['results'][0]['index'][1]['zs'].") ".$contentStr['results'][0]['index'][1]['des']; $T[2]['Title']=$T[2]['Title']."/n"."【".$contentStr['results'][0]['index'][2]['title']."】(".$contentStr['results'][0]['index'][2]['zs'].") ".$contentStr['results'][0]['index'][2]['des']; } else $guowai=1; for($i=1,$aaa=0;$i<=5;$i++) { if($i==2 && $guowai!=1) continue; if($guowai==1 && $i==5) continue; $T[$i]['Title']=$contentStr['results'][0]['weather_data'][$aaa]['date']." ".$contentStr['results'][0]['weather_data'][$aaa]['temperature']." ".$contentStr['results'][0]['weather_data'][$aaa]['weather']." ".$contentStr['results'][0]['weather_data'][$aaa]['wind']; $T[$i]['PicUrl']=$contentStr['results'][0]['weather_data'][$aaa]['dayPictureUrl']; $T[$i]['Url']=$contentStr['results'][0]['weather_data'][$aaa]['dayPictureUrl']; $aaa++; } $tianqi = sprintf($tqTpl,$fromUsername,$toUsername,time(),"news",$T[0]['Title'],$T[0]['Description'],$T[0]['PicUrl'],$T[0]['Url'], $T[1]['Title'],$T[1]['Description'],$T[1]['PicUrl'],$T[1]['Url'], $T[2]['Title'],$T[2]['Description'],$T[2]['PicUrl'],$T[2]['Url'], $T[3]['Title'],$T[3]['Description'],$T[3]['PicUrl'],$T[3]['Url'], $T[4]['Title'],$T[4]['Description'],$T[4]['PicUrl'],$T[4]['Url'],$T[5]['Title'],$T[5]['Description'],$T[5]['PicUrl'],$T[5]['Url']); echo $tianqi; } }
效果圖如下:
將其中的$mykey變量改成自己的APIkey就行了。另外有一點(diǎn)讓我不解的是,我微信用的圖文模板明明是6個(gè)item,為什么回復(fù)實(shí)際效果只有5個(gè)呢= = 求廣大網(wǎng)友幫忙解釋
最后附代碼說(shuō)明。用戶(hù)發(fā)送“北京天氣”和“天氣北京”都是可以的,所以首先做了字符串處理,得到正確的城市名。利用百度地圖API給的網(wǎng)址,發(fā)出GET請(qǐng)求(其實(shí)就是直接訪(fǎng)問(wèn)),獲取一個(gè)json類(lèi)型的數(shù)據(jù)包。將數(shù)據(jù)包信息轉(zhuǎn)成數(shù)組格式,對(duì)應(yīng)的回復(fù)微信用戶(hù)即可。國(guó)外的天氣沒(méi)有當(dāng)天天氣的具體說(shuō)明,所以最后做了一點(diǎn)小修改。
php技術(shù):微信公眾平臺(tái)天氣預(yù)報(bào)功能開(kāi)發(fā),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。