一文教你利用Python制作一个生日提醒

目录
  • 1. 实战
    • 1-1  安装依赖
    • 1-2  创建数据表
    • 1-3  查询数据
    • 1-4  遍历,获取距离今天的天数
    • 1-5  组装数据及消息推送

在国内,大部分人都是过农历生日,然后借助日历工具获取农历日期对应的阳历日期,以这一天来过生!

这里还有一个痛点,即:每一年的农历生日对应的阳历日期都不一样

本篇文章将教你利用 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生日提醒的资料请关注我们其它相关文章!

(0)

相关推荐

  • 用Python做一个久坐提醒小助手的示例代码

    不论是日常的工作还是学习,现代年轻人在电脑屏幕时长数据能让人惊掉下巴,继而引发一系列身体不适的现象.小李也是久坐族中的一员,为了时刻提醒自己起来活动活动,我开发了一款基于PythonGUI编程的久坐提醒小助手. 整体设计 整体的构思类似于一个番茄时钟,提供一个倒计时功能并且在完成计时时发出警告.主要分为如下几个模块,一是时间选择模块,二是按钮模块,控制计时开始.暂停以及恢复,三是倒计时显示模块,并在倒计时完成之后发出警告. 模块一 这一块主要是组合框的设计,并传递所选择时间的具体数值,非常简单.

  • 妙用itchat! python实现久坐提醒功能

    本文实例为大家分享了python久坐提醒的具体实现代码,供大家参考,具体内容如下 #!/usr/bin/envy python3 #-*- coding:utf-8 -*- import itchat import datetime, os, platform,time def timerfun(sched_time) : flag = 0 while True: now = datetime.datetime.now() if now > sched_time and now < sched

  • Python利用Telegram机器人搭建消息提醒

    目录 申请机器人 验证token 发消息 最近用Telgram的时间比较多 对开发者来说,Telgram最吸引人的地方估计是 Telgram bot,你可以在建个机器人来做些事情.不过目前对我来说,最有用的一个功能是通过机器人来做消息提醒.作为开发者,我想实时知道网站的运行情况,系统报错时能即时提醒是一个痛点问题. 当然,在国内有些一些现成的解决方案,比如接入企业微信或者钉钉之类的聊天工具中,就是接入麻烦,你还的先弄个企业.也有一些第三方平台通过公众号来做提醒的. 我之前的做法是通过发短信的方式

  • 一文教你利用Python制作一个生日提醒

    目录 1. 实战 1-1  安装依赖 1-2  创建数据表 1-3  查询数据 1-4  遍历,获取距离今天的天数 1-5  组装数据及消息推送 在国内,大部分人都是过农历生日,然后借助日历工具获取农历日期对应的阳历日期,以这一天来过生! 这里还有一个痛点,即:每一年的农历生日对应的阳历日期都不一样 本篇文章将教你利用 Python 制作一个简单的生日提醒 1. 实战 具体操作步骤如下 1-1  安装依赖 # 安装依赖 pip3 install zhdate pip3 install pymys

  • 利用Python制作一个MOOC公开课下载器

    目录 导语 开发工具 环境搭建 先睹为快 原理简介 导语 记得很久以前写过一些中国大学MOOC上的视频下载器,不过好像都已经年久失修了.正好最近有需要,所以重新写了一个,顺便上来分享一波,寒假大家也可以用它来下载点课程内卷一下: 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本:3.7.8 相关模块: DecryptLogin模块: tqdm模块: click模块: argparse模块: 以及一些python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的

  • 利用Python制作一个简单的天气播报系统

    目录 前言 工具 天气数据来源 代码实现 总结 前言 大家好,我是辣条 相信大家都能感觉到最近天气的多变,好几次出门半路天气转变.辣条也深受其扰,直接给我整感冒,就差被隔离起来了,既然天气我没法做主,那不如用python整个天气爬虫来获取天气情况.这样也好可以进行一个提前预防 工具 python3.7 pycharm pyttsx3:语音播报库 天气数据来源 找寻一个天气网站 比如说我们要查询某地的天气,在输入地名后就能看到结果. 我们可以看到网站的url会有变化: 每个城市的天气信息url就是

  • 手把手教你利用Python创建一个游戏窗口

    目录 前言 安装Pyagme 检查是否安装Pygame:  一 (检查python是否配置环境变量) 检查是否安装Pygame:  二 (检查pygame是否安装) 未安装Pygame : 一 (检查是否安装pip) 未安装Pygame : 二 (利用pip安装Pygame) 步入正题: 利用Pygame制作一个简单的游戏窗口 总结: 前言 想要利用Python创建一个游戏窗口就需要用到一个强大的第三方功能库: Pygame 那么既然需要用到Pygame这个第三方库 所以在写程序之前需要做一个准

  • Python利用PyQt5制作一个获取网络实时NBA数据并播报的GUI程序

    制作NBA数据爬虫 捋顺思路 我们在这里选择的是百度体育带来的数据,我们在百度当中直接搜索NBA跳转到网页,我们可以看到,百度已经为我们提供了相关的数据 我们点击进去后,可以发现这是一个非常简洁的网址 我们看一下这个地址栏,发现毫无规律https://tiyu.baidu.com/live/detail/576O5Zu955S35a2Q6IGM5Lia56%2Bu55CD6IGU6LWbI2Jhc2tldGJhbGwjMjAyMS0wNi0xMyPniLXlo6t2c%2BWspritq%2Bi

  • Python利用PyQt5制作一个获取网络实时数据NBA数据播报GUI功能

    制作NBA数据爬虫 捋顺思路 我们在这里选择的是百度体育带来的数据,我们在百度当中直接搜索NBA跳转到网页,我们可以看到,百度已经为我们提供了相关的数据 我们点击进去后,可以发现这是一个非常简洁的网址 我们看一下这个地址栏,发现毫无规律https://tiyu.baidu.com/live/detail/576O5Zu955S35a2Q6IGM5Lia56%2Bu55CD6IGU6LWbI2Jhc2tldGJhbGwjMjAyMS0wNi0xMyPniLXlo6t2c%2BWspritq%2Bi

  • 利用Python制作动态排名图的实现代码

    大家好,今天我们要讲的是如何使用 Pyecharts 制作动态排名变化图:point_down: 制作这样的一个动态图使用到的是 Pyecharts中的TimeLine(时间线轮播图) ,代码实现起来其实稍有难度,但我希望能 通过讲解这样一张动态图的制作过程,来让各位读者可以使用Pyecharts将任何一种图动起来 ,我们开始吧! 首先我们需要思考一下这样一种 动态图的生成逻辑 ,不就是把每天的数据制作成一张条形图然后轮动吗,OK那我们的 数据要整理成啥样 呢? 一个dataframe,每列是一

  • 利用python制作拼图小游戏的全过程

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理介绍 游戏简介: 将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状.游戏目标为通过移动非空白块将随机摆放获得的图像恢复成原图像的模样,且规定移动操作仅存在于非空白块移动到空白块. 例如下图所示:

  • 利用 Python 开发一个 Python 解释器

    目录 1.标记(Token) 2.词法分析器(Lexer) 3.巴科斯-诺尔范式(Backus-Naur Form,BNF) 4.解析器(Parser) 前言: 计算机只能理解机器码.归根结底,编程语言只是一串文字,目的是为了让人类更容易编写他们想让计算机做的事情.真正的魔法是由编译器和解释器完成,它们弥合了两者之间的差距.解释器逐行读取代码并将其转换为机器码. 在本文中,我们将设计一个可以执行算术运算的解释器. 我们不会重新造轮子.文章将使用由 David M. Beazley 开发的词法解析

  • 利用Python制作百度图片下载器

    前段时间写了一个百度图片下载器,结果发现有很多人需要使用.说实话之前写的那一款百度图片下载器比较LOW,今天刚好有时间就做了一下升级. 更新了两个BUG,一个是图片下载达到几千张的时候就没有图片可以下载了.另一个是下载进度不能实时的展示出来不知道下载到什么程度了. 同样的,我们先把需要的第三方库导入进来. '''UI界面相关的库''' from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import

随机推荐