<第10回Web会議日程>
2024年08月21日(水)19:00から
以下のように、LINEに位置情報を送信した場合、
HotpepperAPIを利用し、画像やその他の情報と合わせて
おすすめのお店を1軒紹介するよう処理を追加してください
※一部抜粋
文字列が入力された場合、これまで通りの処理をする必要があるため、
LINEの入力内容が文字列かどうか判定するIF文を追加し、
「from_text」を取得し「to_text」を定義する処理のインデントを下げる
LINEの入力内容が文字列でない場合(位置情報の場合)、
「from_text」ではなく、緯度経度を取得する
「latitude」「longitude」を引数とする
shop_search_map関数を呼び出し、結果を「to_text」に代入
※一部抜粋
「latitude」「longitude」を 引数とするshop_search_map関数を追加
HotpepperAPIへのリクエストパラメータ「hp_param」に
「latitude」「longitude」を定義
HotpepperAPIにリクエストを送信し、レスポンスを辞書型に変換。
必要な情報を「to_text」に代入する。
lambda_functionに返す部分は、shop_search関数と同じで問題ない
天気予報Appを実行する「WeatherForecast.py」に
以下の情報を追加してください。
■風の強さ
■波の高さ
■最高気温、最低気温
■6時間毎の降水確率
<修正前>
<修正後>
今回は、天気予報APIに対してリクエストを送信し、レスポンスの天気予報情報を、
Tkinterというライブラリで作成したGUI画面で返します。
予報日、予報を取得してGUI画面で返すところまでは作成済のため、
取得する情報を追加していただきます。
天気予報APIからのレスポンスを辞書型に変換した値が変数「response_dict」に格納されています。
ここから風の強さ、波の高さ、最高気温、最低気温、6時間毎の降水確率を
抜き出して、それぞれ変数に代入してください。
GUIに表示するメッセージは、変数「msg」で定義しています。
1.で取得した情報を追加する形で、変数「msg」を修正してください。
<天気予報API(livedoor 天気互換)とは>
無料で天気予報を取得できるWebAPIを用意してくれているサイト
https://weather.tsukumijima.net/
以下のURLに地域別に定義されたCITYパラメータを追加してGETリスエストを送ると、JSON形式で天気予報の情報がレスポンスとして返される
https://weather.tsukumijima.net/api/forecast/city/○○
▼CITYパラメータの定義
https://weather.tsukumijima.net/primary_area.xml
<tkinterとは>
GUIPython からGUIを構築・操作するためのライブラリ、標準ライブラリの1つ
メインウィンドウにラベルやボタンなどのパーツ(ウィジェット)を配置して構築する
<メインウィンドウ>
GUIのベースとなるウィンドウそのもの
「Tk」クラスをインスタンス化することで生成できる
スクリプトの最後でループさせることで、スクリプトを終了させず、GUI操作の待機をさせることができる
<ラベル(Label)>
Tkinterに備わる文字を表示させるためのウィジェット
「Labal」クラスをインスタンス化して生成できる
オプションを設定することで、フォント・サイズ・太さなどを変更可能
<ボタン(Button)>
Tkinterに備わるボタンを生成するためためのウィジェット
「Button」クラスをインスタンス化して生成できる
オプションでボタンクリック時の動作を指定可能
▼天気予報Appのウィジェット配置イメージ
<requestsとは>
HTTP通信用のPythonのライブラリ
GET、POST、PUTなどのメソッドが用意されている
今回は、天気予報APIにGETリクエストを送るために使用
外部モジュールのため、利用するにはインストールの必要がある
<GETメソッド>
requests.get(リクエスト送信先URL,リクエストパラメータ)
URLに対してGETリクエストを送ることができる
リスエストの結果が、Responseオブジェクトとして返される