用Python寫了一個(gè)不起床讓你后悔的鬧鐘
導(dǎo)讀
哎 ?? ,別提了自從回到家整個(gè)人都懶散了,總被人嫌棄不說還覺得生活沒有了盼頭,還好在社區(qū)認(rèn)識(shí)了一些大佬讓我想重新來過做回自己,不在做小丑,于是乎我就想用個(gè)東西來提醒我別睡懶覺,然后這篇文章就誕生了。
來吧看看今天的故事。
鬧鐘
有人說程序員的日常就是反復(fù)造輪子,我覺得能在原來的基礎(chǔ)上玩出新花樣來幫到一些人,做這些事還是挺有趣的。
沒有什么高深的學(xué)問就是給大家在枯燥的夏日帶來一點(diǎn)歡愉。
使用的模塊
import time
from datetime import datetime
from playsound import playsound#
```用來播放鈴聲的
import pyttsx3
如果你對(duì)import pyttsx3不太熟悉的話可以學(xué)習(xí)一下,就是一個(gè)文字朗讀模塊,一會(huì)我們將要用到。
首先我們先來設(shè)置鬧鐘的的預(yù)定時(shí)間
alarm_time = input("輸入要設(shè)置的鬧鐘時(shí)間:HH:MM:SS\n")
alarm_period=input("請(qǐng)輸入要設(shè)置的時(shí)期(AM或PM):\n")
alarm_hour=alarm_time[0:2]#獲取小時(shí)
alarm_minute=alarm_time[3:5]#獲取分鐘
alarm_seconds=alarm_time[6:8]#多少秒
alarm_period = alarm_period.upper()
print("設(shè)置成功正在運(yùn)行,祝您休息愉快....zzZZ..")
設(shè)置成功后鬧鐘就在運(yùn)行了下面給大家展示一下效果片段
音頻:
一個(gè)能幫你分手或辭職的鬧鐘
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') ## 鈴聲名字最好不要帶中文,會(huì)節(jié)碼失敗
if(int(now.strftime("%M"))-int(alarm_minute)==10):#延遲十分鐘在叫一次
playsound('1.mp3')
time.sleep(60)
pp.say('還不醒?那你可別怪我了都是為你好呀。這就去幫你辭職!哈哈哈哈')
pp.runAndWait()
原理很簡(jiǎn)單,就是一堆判斷大概是這樣的
??
??
??
辭職或分手(肯定用的著,建議記錄一下)
這里我們用到Python SMTP發(fā)送郵件 簡(jiǎn)單介紹一下
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
參數(shù)說明:
host: SMTP 服務(wù)器主機(jī)。你可以指定主機(jī)的ip地址或者域名如: runoob.com,這個(gè)是可選參數(shù)。
port: 如果你提供了 host 參數(shù), 你需要指定 SMTP 服務(wù)使用的端口號(hào),一般情況下 SMTP 端口號(hào)為25。
local_hostname: 如果 SMTP 在你的本機(jī)上,你只需要指定服務(wù)器地址為 localhost 即可。
Python SMTP 對(duì)象使用 sendmail 方法發(fā)送郵件,語法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
參數(shù)說明:
from_addr: 郵件發(fā)送者地址。
to_addrs: 字符串列表,郵件發(fā)送地址。
msg: 發(fā)送消息
這里要注意一下第三個(gè)參數(shù),msg 是字符串,表示郵件。我們知道郵件一般由標(biāo)題,發(fā)信人,收件人,郵件內(nèi)容,附件等構(gòu)成,發(fā)送郵件的時(shí)候,要注意 msg 的格式。這個(gè)格式就是 smtp 協(xié)議中定義的格式
因?yàn)槲覀円玫絈Q郵箱smtp服務(wù)發(fā)送郵件下面我們也簡(jiǎn)單介紹一下獲取授權(quán)碼的方法
1·這里找到QQ郵箱
2·
3·
4·
下面進(jìn)行代碼展示
my_sender = '[email protected]' # 發(fā)件人郵箱賬號(hào)
my_pass = '***' # 授權(quán)碼
my_user = '[email protected]' # 收件人郵箱賬號(hào),我這邊發(fā)送給自己
def mail():
ret = True
try:
msg = MIMEText('想睡覺,不干了', 'plain', 'utf-8') # 填寫內(nèi)容
msg['From'] = formataddr(["我是肥學(xué),老子干了", my_sender]) # 括號(hào)里的對(duì)應(yīng)發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號(hào)
msg['To'] = formataddr(["肥學(xué)", my_user]) # 括號(hào)里的對(duì)應(yīng)收件人郵箱昵稱、收件人郵箱賬號(hào)
msg['Subject'] = "辭職報(bào)告" # 郵件的主題,也可以說是標(biāo)題你也可以寫成分手報(bào)告
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 發(fā)件人郵箱中的SMTP服務(wù)器
server.login(my_sender, my_pass) # 括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、郵箱密碼
server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、收件人郵箱賬號(hào)、發(fā)送郵件
server.quit() # 關(guān)閉連接
except Exception: # 如果 try 中的語句沒有執(zhí)行,則會(huì)執(zhí)行下面的 ret=False
ret = False
return ret
ret = mail()
if ret:
print("郵件發(fā)送成功")
else:
print("郵件發(fā)送失敗")
結(jié)果:我這個(gè)是自己給自己發(fā)了一個(gè)的測(cè)試
暫時(shí)還沒有工作的同學(xué)可以同樣的方法把郵箱改成你對(duì)象的郵箱,嘻嘻嘻。這不就可以治治你的懶床了嗎。
好了下面貼出全部代碼:
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("輸入要設(shè)置的鬧鐘時(shí)間:HH:MM:SS\n")
alarm_period=input("請(qǐng)輸入要設(shè)置的時(shí)期(AM或PM):\n")
alarm_hour=alarm_time[0:2]#獲取小時(shí)
alarm_minute=alarm_time[3:5]#獲取分鐘
alarm_seconds=alarm_time[6:8]#多少秒
alarm_period = alarm_period.upper()
print("設(shè)置成功正在運(yùn)行,祝您休息愉快....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') ## 鈴聲名字最好不要帶中文,會(huì)節(jié)碼失敗
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 = '[email protected]' # 發(fā)件人郵箱賬號(hào)
my_pass = '***' # 授權(quán)碼
my_user = '[email protected]' # 收件人郵箱賬號(hào),我這邊發(fā)送給自己
def mail():
ret = True
try:
msg = MIMEText('想睡覺,不干了', 'plain', 'utf-8') # 填寫內(nèi)容
msg['From'] = formataddr(["我是肥學(xué),老子干了", my_sender]) # 括號(hào)里的對(duì)應(yīng)發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號(hào)
msg['To'] = formataddr(["肥學(xué)", my_user]) # 括號(hào)里的對(duì)應(yīng)收件人郵箱昵稱、收件人郵箱賬號(hào)
msg['Subject'] = "辭職報(bào)告" # 郵件的主題,也可以說是標(biāo)題你也可以寫成分手報(bào)告
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 發(fā)件人郵箱中的SMTP服務(wù)器
server.login(my_sender, my_pass) # 括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、郵箱密碼
server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、收件人郵箱賬號(hào)、發(fā)送郵件
server.quit() # 關(guān)閉連接
except Exception: # 如果 try 中的語句沒有執(zhí)行,則會(huì)執(zhí)行下面的 ret=False
ret = False
return ret
ret = mail()
if ret:
print("郵件發(fā)送成功")
else:
print("郵件發(fā)送失敗")
if __name__ == '__main__':
a=alarm()
if a==1:#如果鬧鐘沒關(guān)閉就發(fā)郵件
轉(zhuǎn)自:Python專欄
-END-
推薦閱讀:
入門: 最全的零基礎(chǔ)學(xué)Python的問題 | 零基礎(chǔ)學(xué)了8個(gè)月的Python | 實(shí)戰(zhàn)項(xiàng)目 |學(xué)Python就是這條捷徑
干貨:爬取豆瓣短評(píng),電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個(gè)海量小姐姐素描圖 |碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會(huì)做詩的機(jī)器人 | 給圖片上色 | 預(yù)測(cè)收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水??! | 一鍵把html網(wǎng)頁保存為pdf!| 再見PDF提取收費(fèi)! | 用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r(jià)機(jī)票提示器! |60行代碼做了一個(gè)語音壁紙切換器天天看小姐姐!|
年度爆款文案
點(diǎn)閱讀原文,看B站我的視頻!

