首頁 > 軟體

一文教你利用Python製作一個生日提醒

2022-12-27 14:01:06

在國內,大部分人都是過農曆生日,然後藉助日曆工具獲取農曆日期對應的陽曆日期,以這一天來過生!

這裡還有一個痛點,即:每一年的農曆生日對應的陽曆日期都不一樣

本篇文章將教你利用 Python 製作一個簡單的生日提醒

1. 實戰

具體操作步驟如下

1-1  安裝依賴

# 安裝依賴
pip3 install zhdate

pip3 install pymysql

其中,zhdate 模組用於中國農曆、陽曆之間的轉換,並且支援日期差額計算

專案地址:

https://github.com/CutePandaSh/zhdate

1-2  建立資料表

建立一條資料表

create table birthday
(
    id        int auto_increment
        primary key,
    name      varchar(100)  not null comment '名稱',
    yl_birth  varchar(100)  not null comment '陰曆生日',
    remark    varchar(100)  null comment '備註',
    is_delete int default 0 null comment '0:正常  1:刪除'
)
    comment '生日';

然後,將需要提醒使用者的姓名、農曆生日等資料寫入

PS:這裡陰曆生日格式是 mm-dd,比如:10-25

1-3  查詢資料

import pymysql

class Birth(object):
    def __init__(self):
        self.db = pymysql.connect(host='**',
                                  user='root',
                                  password='**',
                                  database='xag')
        self.cursor = self.db.cursor()

    def __get_births(self):
        # 獲取所有資料
        self.cursor.execute("""
                             select name,yl_birth,remark from birthday where is_delete=0;""")

        datas = list(self.cursor.fetchall())

1-4  遍歷,獲取距離今天的天數

遍歷上面的資料,將陰曆轉為陽曆,然後計算出距離今天的天數

from zhdate import ZhDate

...
  def __get_diff(self, birth):
        """
        根據農曆生日,獲取當前日期距離的時間(天)
        :param birth: 農曆生日,格式:10-25
        :return:
        """
        # 1、獲取今日的農曆日曆
        now = str(datetime.now().strftime('%Y-%m-%d')).split("-")
        # 年、月、日
        year, month, day = int(now[0]), int(now[1]), int(now[2])

        # 1、獲取陰曆生日,轉為陽曆
        birth_month = int(birth.split("-")[0].strip())
        birth_day = int(birth.split("-")[-1].strip())
        birth_ying = ZhDate(year, birth_month, birth_day)

        # 轉為陽曆
        birth_yang = birth_ying.to_datetime()

        # 2、計算距離當前日期的時間間隔(天)
        today = datetime.now().strftime('%Y-%m-%d')
        d1 = datetime.strptime(today, '%Y-%m-%d')

        diff_day = (birth_yang-d1).days
        return diff_day

...
 # 遍歷資料
        for item in datas:
            name = item[0]
            birth = item[1]
            nickname = item[2]
            diff = self.__get_diff(birth)
...

1-5  組裝資料及訊息推播

通過時間間隔,在提前一週、生日當天做一個提醒

最後,將組裝好的訊息通過企業微信機器人傳送出去

import requests
import json

...
   def send_wechat(self, msg: str):
        """傳送資訊到企業微信"""
        # 這裡填寫你的機器人的webhook連結
        url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key**'
        headers = {"Content-Type": "text/plain"}
        data = {
            "msgtype": "text",
            "text": {
                "content": msg
            }
        }
        # 傳送訊息
        requests.post(url, headers=headers, data=json.dumps(data))
...

以上就是一文教你利用Python製作一個生日提醒的詳細內容,更多關於Python生日提醒的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com