
どうもこんにちは夫です。
今回の記事は昔運営してたブログからの改変になります。
こちらの記事でも紹介した「Pythonista」というアプリでお天気アプリを作っていきます。
その前にrequestsとAPIの使い方
今回はpythonでもよく使われているrequestsで遊びます。
正確にはPythonistaを使ってライブドアの天気APIのWeather Hacksを使用。
では始めにAPIのjsonデータのオブジェクトを貰います。
コードは実用的ではないのですがこのようになります。
1 2 3 4 5 6 7 8 9 10 11 |
import requests url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=250020' # ここでAPIの取得 「city=6桁の数字」が場所の情報となってます date = requests.get(url).json() # requestsライブラリのget関数で取得した情報をjsonに変換しdate変数に格納 print(date) # dateを出力 |
これを実行すると…

よく分からない文字列が並んでいますね。
この情報は辞書型で収納されたデータがあり、この中からキーを取得しておよそのデータの内容を把握します。
キーの取得方法はこちらを実行します。
1 2 3 4 5 6 |
import requests url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=250020' date = requests.get(url).json() print(date.keys()) |
これが結果です。

この中にforecastsというのがありますね。
これは日本語にすると予測や予想という意味です。
恐らくこの中に天気の情報があるのでforecastの情報を抜き取ります。
コードはこちら。
1 2 3 4 5 6 7 |
import requests url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=250020' date = requests.get(url).json() print(date['forecasts']) |
結果です。

これを見てみると天気のデータを発見!
‘telop’というキーの中に天気の情報がありました!
というわけでtelopキーのデータを取得します。
コード
1 2 3 4 5 6 7 |
import requests url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=250020' date = requests.get(url).json() print(date['forecasts'][0]['telop']) print(date['forecasts'][1]['telop']) |
結果

これでお天気情報の取得任務完了です。
pyuiファイルのuiの配置
ここからはPythonista特有の遊びをしていきます。
それは何かというとuiモジュールを使ったアプリです!
すごく簡単なのでおススメかと。
あとuiモジュールの理解も進むかと。
ではやっていきます!
まずはPythonistaでタイトルは適当につけてファイル作成のところでScript with UIを選択します。
次にpyuiファイルのボタン等を設置します。
今回使うのは2種類だけ!

Labelというのが文字を表示する為の物。
Buttonというのがタップすると動作してくれる物という雰囲気で覚えてください笑
これらを使ってこういう風に配置します。

上2つのラベルにはただ文字を打っているだけです。
その真ん中の2つは空白で!
ここにAPIから送られてきた情報を入れますので。
そして下の太陽のマークがbuttonとなります!
これで配置は以上になります。
次に設定をしていきます。
uiの設定
ここからpyuiファイルの簡単な設定をしていきます。
まずラベルの設定ですが

ここのNameをlabel1とします。
恐らくデフォでなっているかと。
ここで注意してもらいたいのがtitleの方と間違えないように!
なぜこれが重要かと言うとここのNameを対象にコードで識別するからです。
また下のページでも出てくるのでそちらを見た方が分かりやすいと思います。
次にボタンの設定ですがここ!

今回はNameは関係ありませんがactionというのが重要になってきます。
コード側で定義された関数とここのactionでリンクさせる為です。
そしていよいよpyファイルのコードです。
ソースコードの記述
ファイルを作成した時に.pyのファイルも作成されるので
下のコードを記述していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import ui import requests url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=250020' def tenki_button(sender): date = requests.get(url).json() tenki = date['forecasts'][0]['telop'] tenki1 = date['forecasts'][1]['telop'] # 上記で取得した天気の情報を変数に代入 hyoji = sender.superview['label1'] hyoji.text = tenki hyoji1 = sender.superview['label2'] hyoji1.text = tenki1 # 上記が取得した変数をlabalに送っています。['label1']の所が先ほどのNameとリンクしています! v = ui.load_view() v.present('sheet') |
def tenki_button(sender):
というところがさっきのボタンのactionという所とリンクしてます。
さっきのボタンをタップするとこの関数が実行されるようになっています。
これを実行すると

こうなってるので天気マークのボタンをタップしてtenki_buttonを実行させます。
すると

こうなります。
今日の天気は微妙です。
これでお天気風アプリの出来上がりです。
まとめと分からない事があれば
今日はとてもシンプルなアプリ作りをしました。
python難しいけどとりあえず何か作って達成感を味わいたい!っていう方は今回のお天気風アプリがオススメです。
また、今回の記事を見て分からないことがあれば下のコメント欄でも
僕のTwitter(@decodecofufu)でも良いので聞いてください。
コメント