1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-12-09

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

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

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

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

# ハンズオン

1:LINE Notifyでアクセストークンを発行する

下記リンクからご確認ください
天気予報情報をスクレイピング(Python)で、LINE NotifyによりLINE通知の構築

2:コードの記述

サンプルコード(コメントアウトで各動作の内容記述あり)

trash.py
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の通知がお決まりになってきましたが、まだまだ通知していきます。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?