Pythonで日付取得して『今日はなんのゴミの日』をLINE通知する構築のハンズオン

はじめに

今回は『なぜかゴミ出しの日を忘れてしまう』というポンコツ感のある私向けに、あらためてPythonの構築を交えながらdatetimeなどを利用した学習をしたいと思いたち、下記参考資料を読みながら手を動かして構築してみました。

参考資料

参考リンクには今回作成した大元になる方のハンズオンです。こちらにプラスして、奇数週は『〜ゴミ』、偶数週は「〜ゴミ」と、より細かに設定出来るハンズオンをさせていただきました。しかし、なによりお手本があると大変助かり理解も捗りました。

今日は何のゴミ出しの日かをLineに通知してくれるプログラムを作ってみた

構成図

スクリーンショット 2021-12-09 14.14.33.png

ハンズオン

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時の決まった時間に通知を送ることも可能です。
スクリーンショット 2021-12-09 14.02.24.png

※日にちの挙動確認で何度も出力されていますが、実際は1回起動するごとに赤枠の1度の表示となります

さいごに

これで日付も少しは苦手意識がなくなったかもしれません。しかし意外とif文も確認しながら全体的に学習を進めていきました。コメントアウトで挙動に解釈を書くのは自分的には、結構お気に入りの書き方です(学ぶうえでの話、現場じゃ見にくくてたまらないと思う)。
最後はLINE Notifyの通知がお決まりになってきましたが、まだまだ通知していきます。

Last modified: 2021-12-09

Author