天気情報を取得する(Python weather API)
今研究で作ってるシステムで天気情報を取得する必要があったので忘備録的なあれで記事を書こうと思う.
天気取得の為のAPIは色々と調べてみたらいくつか使えそうなのがあった
僕はこの中で導入が簡単そうなpython weather apiを使用しているのでpython weather apiを使った天気情報取得について説明しようとおもう.
このAPIは本来なら
- Google weather
- Yahoo weather
- NOAA
の3種類の天候取得APIから天気を取得する事ができる.
(現在はgoogle weatherが使えないのと,日本ではNOAAが利用できないのでYahoo weatherのみの利用が可能)
【利用環境】
OS:Ubuntu 12.04LTS
使用言語:python(v2.7)
使い方
まずはここに書いてあるサンプルを動かしてみる.
import pywapi import string yahoo_result = pywapi.get_weather_from_yahoo('10001') print "Yahoo says: It is " + string.lower(yahoo_result['condition']['text']) + " and " + yahoo_result['condition']['temp'] + "C now in New York.\n\n"
結果
Yahoo says: It is fog and 14C now in New York.
どうやら地域ID的なのがわかればその土地の天気情報を取得する事ができるようです.
そこで,先ほどのHPのサンプルを借りて使ってみました.
import pywapi import string result = pywapi.get_weather_from_yahoo('JAXX0105') print '---' print result['title'] print 'city: ' + result['location']['city'] print 'date_time: ' + result['condition']['date'] print 'condition: ' + result['condition']['text'] print 'temp: ' + result['condition']['temp'] + '('+ result['units']['temperature'] + ')' print 'geo(lat,long): ' + result['geo']['lat'] + ',' + result['geo']['long'] print '---'
出力結果
--- Yahoo! Weather - Nagano, JA city: Nagano date_time: Sun, 20 Jul 2014 2:59 pm JST condition: Mostly Cloudy temp: 28(C) geo(lat,long): 36.67,138.2 ---
いい感じで取れてる.
地域IDについて
さてここまで来て問題になるのが,地域IDをどうやって取得するかである.
上記のHPではYahoo! weatherのwebページに行ってページソースから日本の地域のIDであるJAXX----なる文字列を探していたようです.
僕は取得可能な地域の全国のIDを使える必要があるので,この方法だと割りと辛い.
そこで,とりあえず適当なスクリプトを書いてJAXX----に該当する地域IDをJAXX0000~JAXX9999まで自動取得してみました.
#coding: UTF-8 import pywapi import string fp = open("location_result.dat", "w") fp.write("location ID Name Geodata(lat,long)\n") for num in xrange(10000): tag_num = '{0:04}'.format(num+1) tag_name = "JAXX" + str(tag_num) try: result = pywapi.get_weather_from_yahoo(tag_name) fp.write(tag_name + " " + result['location']['city'] + " " + result['geo']['lat'] + "," + result['geo']['long']) fp.write("\n") except: fp.write(tag_name + " N/A" + " N/A,N/A") fp.write("\n") fp.close()
(割りと雑なコードはご愛嬌)
これで取得した地域IDを見たところJAXX0148までしかIDが存在せず,それ以降のJAXX0149~JAXX9999には地域が設定されていませんでした*2.
Wikipediによると2014年4月5日の時点で市が790,特別区が23,町が745,村が183の合計1,741の地域が存在するとのことなので,IDの数と比較すると取得可能地域の粒度としては少し大きすぎるので,ちょっと粗い範囲での地域天気情報の取得になるのかなーとおもいます.
Ubuntu12.04アンインストール(windows7とデュアルブート)
なにを今更という内容ですが、さらっとググった結果、まとめて書かれてるエントリがなかった気がするので、防備録的に書いておくことにします。
【状況】
windows7とUbuntu12.04デュアルブート済みPCからUbuntuのみをアンインストールする
【手順】
1.WindowsのMbr*1を修復
2.Ubuntuアンインストール
1.WindowsのMbrを修復する
既にWindows7がインストールされてるPCにUbuntu12.04をインストールして、特に何も設定していなければ、起動時にGNU GRUBというOS選択画面が出ると思います。(下図参照*2)
なお、GRUBについてはあまり詳しく知らないので、勉強中
ここでwindows7をリカバリーモードで起動*3*4し、「システム回復オプション」からコマンドプロンプトを立ち上げましょう。
コマンドプロンプトで下のコマンドを入力すると、次回起動時にgnu grubではなくwindowsが起動するはずです。
bootrec.exe /fixmbr
これでMBRが修復されたはずです。
2.Ubuntuアンインストール
無事にMBRが修復されたところで、続いてUbuntuをアンインストールしましょう。*5
これはストレージのUbuntu記録領域を消去してあげればいいので、EaseUS Partition Master*6でもつかってアンインストールしましょう。
無事に終われば多分元のwindows7シングルブートPCに戻ってるはずです。
今回この記事を書くにあたってwindows7すっ飛ばしかけたりしたので、多少なりとも役に立てばいいかなーと思っております。
とは言っても、しくじった所で
grub rescue>
とか出るぐらいなので特に焦る必要も有りませんし、仮にGRUBぶっ壊れてもこのへんはググれば何とかなるので、あきらめないことが肝心な気がしました。
参考サイト(順不同)
Win7とUbuntu12のデュアルブート環境でgrubがどっか行った| アイディア・ボード
MBR(マスターブートレコード)の修復 | パソコントラブル 原因&解決
えんぞーどっとねっと 【メモ】「grub rescue」?Windowsなんだけど、なんで?・・・原因これかよ!!