# はじめに
今回は『なぜかゴミ出しの日を忘れてしまう』というポンコツ感のある私向けに、あらためてPythonの構築を交えながらdatetimeなどを利用した学習をしたいと思いたち、下記参考資料を読みながら手を動かして構築してみました。
# 参考資料
参考リンクには今回作成した大元になる方のハンズオンです。__こちらにプラスして、奇数週は『〜ゴミ』、偶数週は「〜ゴミ」と、より細かに設定出来る__ハンズオンをさせていただきました。しかし、なによりお手本があると大変助かり理解も捗りました。
今日は何のゴミ出しの日かをLineに通知してくれるプログラムを作ってみた
# ハンズオン
1:LINE Notifyでアクセストークンを発行する
下記リンクからご確認ください
天気予報情報をスクレイピング(Python)で、LINE NotifyによりLINE通知の構築
2:コードの記述
サンプルコード(コメントアウトで各動作の内容記述あり)
import datetime #曜日取得
import requests #LINEへリクエスト
import os #環境変数のため
from dotenv import load_dotenv #環境変数のため
load_dotenv()
#LINE Notifyと連携するためのtoken
line_notify_token = os.getenv('TRASH') #.envの環境変数利用
line_notify_api = 'https://notify-api.line.me/api/notify' #LINE Notifyへの通知URL
#LINENotifyにメッセージを送付
def send(message):
payload = {'message': message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
requests.post(line_notify_api, data=payload, headers=headers)
#今年の最初から数えて第何週目かを取得、何曜日かを取得する
def what_week():
today = datetime.date.today() #今日の年、月、日を取得する
year,today_w,day_w = datetime.date(today.year,today.month,today.day).isocalendar()#何年、第何週目か取得、曜日(月=1)
garbage_day(day_w,today_w)#第何週目か取得、曜日(月=1)を引数とする
#日にちからゴミ出しの内容を選択
def garbage_day(today,today_w):#第何週目か取得、曜日(月=1)を利用する
if today == 1 and today_w % 2 != 0: #月曜日(=1)であり、奇数週の場合
send('\n' + 'びん・飲料缶のゴミの日')
if today == 1 and today_w % 2 == 0: #月曜日(=1)であり、偶数週であれば
send('\n' + 'ペットボトル・繊維類のゴミの日')
elif today == 2 or today == 5:#火曜(=2)、金曜(=5)
send('\n' + '一般ゴミ・有害ゴミの日')
elif today == 3:#水曜(=3)
send('\n' + 'プラスチック製容器包装ゴミの日')
else:#残りの曜日(木曜日)
send('\n' + '今日は何もないよ')
if __name__ == "__main__":
what_week()
3:挙動の確認
tetutetu214@mbp 0_Qiita_hanson % python trash.py
上記打刻後LINEに下記通知がされました。
cronを利用すれば毎朝6時の決まった時間に通知を送ることも可能です。
※日にちの挙動確認で何度も出力されていますが、実際は1回起動するごとに赤枠の1度の表示となります
# さいごに
これで日付も少しは苦手意識がなくなったかもしれません。しかし意外とif文も確認しながら全体的に学習を進めていきました。コメントアウトで挙動に解釈を書くのは自分的には、結構お気に入りの書き方です(学ぶうえでの話、現場じゃ見にくくてたまらないと思う)。
最後はLINE Notifyの通知がお決まりになってきましたが、まだまだ通知していきます。