日記3

危うく二日坊主になるところだった。今日も思いつくまま文を書いていく。

雑談パート

今日は研究会のため、2時ごろにキャンパスへ行った。本当はもう少し早く着きたかったが、最近生活リズムが崩れているのでお昼近くまで寝てしまった。土曜日のバイトが朝からなのでそれまでに治さないと。研究会ではいつもの進捗報告とFB、そして論文読みだった。早めに研究会が終わり、研究会の先生と院についての相談をし、研究室で授業の課題の制作物の続きを進めた。具体的には天気APIから天気情報を取得して、それに合わせて傘の動きが変わるものだがこの辺の実装はアウトプットパートに任せたい。実装をある程度終えて、家に帰りいつも通りだらこん、Twitterやめたい。

あとトラ技をお風呂で読んでてびっくりしたのだが、「キャタピラ」はキャタピラーの登録商標で、ちゃんと呼ぶならクローラーが正しいらしい。

アウトプットパート

今日もろくに勉強してないが、学んだことはあるのちゃんと書く(ヨビノリは力と時間が、、)。今日学んだことは天気APIで気象庁の天気情報をPythonで取得する方法と、Pythonで関数を定期的に実行する方法だ。あまり学びは多くはない。

天気API
参考にしたサイトは以下のサイトだ

使用したライブラリが、JSONファイルを保存するのに urllib.request、JSONを扱うのにjsonライブラリを利用した。

取得するコードは以下のようになる(参考サイトまんま)

# ライブラリ
import urllib.request as req

# URLや保存ファイル名を指定
url = 'https://www.jma.go.jp/bosai/forecast/data/forecast/010000.json'
filename = 'tenki.json'

# ダウンロード
req.urlretrieve(url, filename)

保存したJSONファイルを扱うコードは以下のようになった。参考のサイトのコードを改良して、東京の天気のみを抽出できるようにした(スマートなやり方ではない)。

import enum
import json

# ファイルを開く
with open('tenki.json', 'r', encoding="UTF-8") as f:
   data = json.load(f)


for area in data:
   name = area['name']
   # もしもareaが東京だったら、天気の情報と風の情報を取得
   if name == "東京":
       for ts in area['srf']['timeSeries']:
           times = [n for n in ts['timeDefines']]
           if 'weathers' in ts['areas']:
               for i, v in enumerate(ts['areas']['weathers']):
               # vが天気の情報で、天気の情報の文字列の中に「晴れ」があればプリント
                   if "晴れ" in v:
                       print(v)
                       break
               # vが風の情報で、今日の風のみを出力
               for i, v in enumerate(ts["areas"]["winds"]):
                   print(i, v)
                   break
       break

もっと上手いやり方はあったと思うが勉強と実装力不足なのでこれが限界。

定期的に関数を実行

これもPythonでの実装になるが定期的に関数を実行させたいときはscheduleライブラリを使う。

# ライブラリ
import schedule
from time import sleep

# 定期実行する関数
def func1():
   print("5秒おき")

# スケジュールの登録
schedule.every(5).seconds.do(func1)
# schedule.every(実行間隔の秒).seconds.do(実行したい関数)

# 実行
while True:
    # ループしないと1回だけ実行して終わる
   schedule.run_pending()
   sleep(1)

終わり

今日はこんな感じだ。内容が薄いけど薄いことを認識するためにかいてるからまあいっか。明日は課題を2つ終わらせつつ、自分の研究の実装を進めたいと思う。

この記事が気に入ったらサポートをしてみませんか?