用Python写了一个不起床让你后悔的闹钟
导读
哎 😡 ,别提了自从回到家整个人都懒散了,总被人嫌弃不说还觉得生活没有了盼头,还好在社区认识了一些大佬让我想重新来过做回自己,不在做小丑,于是乎我就想用个东西来提醒我别睡懒觉,然后这篇文章就诞生了。
来吧看看今天的故事。
闹钟
有人说程序员的日常就是反复造轮子,我觉得能在原来的基础上玩出新花样来帮到一些人,做这些事还是挺有趣的。
没有什么高深的学问就是给大家在枯燥的夏日带来一点欢愉。
使用的模块
import time
from datetime import datetime
from playsound import playsound#
```用来播放铃声的
import pyttsx3
如果你对import pyttsx3
不太熟悉的话可以学习一下,就是一个文字朗读模块,一会我们将要用到。
首先我们先来设置闹钟的的预定时间
alarm_time = input("输入要设置的闹钟时间:HH:MM:SS\n")
alarm_period=input("请输入要设置的时期(AM或PM):\n")
alarm_hour=alarm_time[0:2]#获取小时
alarm_minute=alarm_time[3:5]#获取分钟
alarm_seconds=alarm_time[6:8]#多少秒
alarm_period = alarm_period.upper()
print("设置成功正在运行,祝您休息愉快....zzZZ..")
设置成功后闹钟就在运行了下面给大家展示一下效果片段
音频:
一个能帮你分手或辞职的闹钟
while flag:
now = datetime.now()
current_hour = now.strftime("%I")
current_minute = now.strftime("%M")
current_seconds = now.strftime("%S")
current_period = now.strftime("%p")
if(alarm_period==current_period):
if(alarm_hour==current_hour):
if(alarm_minute==current_minute):
if(alarm_seconds==current_seconds):
print("Wake Up!!!")
playsound('1.mp3') ## 铃声名字最好不要带中文,会节码失败
if(int(now.strftime("%M"))-int(alarm_minute)==10):#延迟十分钟在叫一次
playsound('1.mp3')
time.sleep(60)
pp.say('还不醒?那你可别怪我了都是为你好呀。这就去帮你辞职!哈哈哈哈')
pp.runAndWait()
原理很简单,就是一堆判断大概是这样的
🌀
🐢
🌀
辞职或分手(肯定用的着,建议记录一下)
这里我们用到Python SMTP
发送邮件 简单介绍一下
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
host: SMTP 服务器主机。你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。
port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。
local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。
Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
参数说明:
from_addr: 邮件发送者地址。
to_addrs: 字符串列表,邮件发送地址。
msg: 发送消息
这里要注意一下第三个参数,msg 是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意 msg 的格式。这个格式就是 smtp 协议中定义的格式
因为我们要用到QQ邮箱smtp服务发送邮件下面我们也简单介绍一下获取授权码的方法
1·这里找到QQ邮箱
2· 3· 4·
下面进行代码展示
my_sender = '2073969408@qq.com' # 发件人邮箱账号
my_pass = '***' # 授权码
my_user = '2073969408@qq.com' # 收件人邮箱账号,我这边发送给自己
def mail():
ret = True
try:
msg = MIMEText('想睡觉,不干了', 'plain', 'utf-8') # 填写内容
msg['From'] = formataddr(["我是肥学,老子干了", my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To'] = formataddr(["肥学", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject'] = "辞职报告" # 邮件的主题,也可以说是标题你也可以写成分手报告
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
ret = False
return ret
ret = mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
结果:我这个是自己给自己发了一个的测试暂时还没有工作的同学可以同样的方法把邮箱改成你对象的邮箱,嘻嘻嘻。这不就可以治治你的懒床了吗。
好了下面贴出全部代码:
import time
from datetime import datetime
from playsound import playsound
import pyttsx3
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def alarm():
pp = pyttsx3.init()
alarm_time = input("输入要设置的闹钟时间:HH:MM:SS\n")
alarm_period=input("请输入要设置的时期(AM或PM):\n")
alarm_hour=alarm_time[0:2]#获取小时
alarm_minute=alarm_time[3:5]#获取分钟
alarm_seconds=alarm_time[6:8]#多少秒
alarm_period = alarm_period.upper()
print("设置成功正在运行,祝您休息愉快....zzZZ..")
flag=True
while flag:
now = datetime.now()
current_hour = now.strftime("%I")
current_minute = now.strftime("%M")
current_seconds = now.strftime("%S")
current_period = now.strftime("%p")
if(alarm_period==current_period):
if(alarm_hour==current_hour):
if(alarm_minute==current_minute):
if(alarm_seconds==current_seconds):
print("Wake Up!!!")
playsound('1.mp3') ## 铃声名字最好不要带中文,会节码失败
if(int(now.strftime("%M"))-int(alarm_minute)==10):#延迟十分钟在叫一次
playsound('1.mp3')
time.sleep(60)
pp.say('还不醒?那你可别怪我了都是为你好呀。这就去帮你辞职!哈哈哈哈')
pp.runAndWait()
return 1
def mail_qq():
my_sender = 'xxxxx@qq.com' # 发件人邮箱账号
my_pass = '***' # 授权码
my_user = 'xxxxxxx@qq.com' # 收件人邮箱账号,我这边发送给自己
def mail():
ret = True
try:
msg = MIMEText('想睡觉,不干了', 'plain', 'utf-8') # 填写内容
msg['From'] = formataddr(["我是肥学,老子干了", my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To'] = formataddr(["肥学", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject'] = "辞职报告" # 邮件的主题,也可以说是标题你也可以写成分手报告
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
ret = False
return ret
ret = mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
if __name__ == '__main__':
a=alarm()
if a==1:#如果闹钟没关闭就发邮件
转自:Python专栏
-END-
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
年度爆款文案
点阅读原文,看B站我的视频!