至尊版Python叫醒服務!?。?/div>
首先看一下
Python叫醒服務使用的模塊
模塊中用到的import pyttsx3
是一個文字朗讀模塊
一會我們將要用到
import time
from datetime import datetime
from playsound import playsound#用來播放鈴聲的
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..")
為了配合Python叫醒服務的場景
此處應該有個音樂
試著讓程序跑一下
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') ## 鈴聲名字最好不要帶中文,會節(jié)碼失敗
if(int(now.strftime("%M"))-int(alarm_minute)==10):#延遲十分鐘在叫一次
playsound('1.mp3')
time.sleep(60)
pp.say('還不醒?那你可別怪我了都是為你好呀。這就去幫你辭職!哈哈哈哈')
pp.runAndWait()
要想鬧鐘定的好
此處應該有大招
原理很簡單
就是假定不起床
就發(fā)封郵件分手或辭職
這里我們用到Python SMTP發(fā)送郵件
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
參數(shù)說明:
host: SMTP 服務器主機。你可以指定主機的ip地址或者域名如: runoob.com,這個是可選參數(shù)。
port: 如果你提供了 host 參數(shù), 你需要指定 SMTP 服務使用的端口號,一般情況下 SMTP 端口號為25。
local_hostname: 如果 SMTP 在你的本機上,你只需要指定服務器地址為 localhost 即可。
Python SMTP 對象使用 sendmail 方法發(fā)送郵件,語法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
參數(shù)說明:
from_addr: 郵件發(fā)送者地址。
to_addrs: 字符串列表,郵件發(fā)送地址。
msg: 發(fā)送消息
這里要注意一下第三個參數(shù),msg 是字符串,表示郵件。我們知道郵件一般由標題,發(fā)信人,收件人,郵件內(nèi)容,附件等構(gòu)成,發(fā)送郵件的時候,要注意 msg 的格式。這個格式就是 smtp 協(xié)議中定義的格式
因為要用QQ郵箱smtp服務發(fā)送郵件
所以要獲取授權碼
找到QQ郵箱
第一步
第二步
第三步
第四步
讓代碼跑一下
my_sender = '2073969408@qq.com' # 發(fā)件人郵箱賬號
my_pass = '***' # 授權碼
my_user = '2073969408@qq.com' # 收件人郵箱賬號,我這邊發(fā)送給自己
def mail():
ret = True
try:
msg = MIMEText('想睡覺,不干了', 'plain', 'utf-8') # 填寫內(nèi)容
msg['From'] = formataddr(["我是奇小酷", my_sender]) # 括號里的對應發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號
msg['To'] = formataddr(["奇小酷", my_user]) # 括號里的對應收件人郵箱昵稱、收件人郵箱賬號
msg['Subject'] = "辭職報告" # 郵件的主題,也可以說是標題你也可以寫成分手報告
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 發(fā)件人郵箱中的SMTP服務器
server.login(my_sender, my_pass) # 括號中對應的是發(fā)件人郵箱賬號、郵箱密碼
server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括號中對應的是發(fā)件人郵箱賬號、收件人郵箱賬號、發(fā)送郵件
server.quit() # 關閉連接
except Exception: # 如果 try 中的語句沒有執(zhí)行,則會執(zhí)行下面的 ret=False
ret = False
return ret
ret = mail()
if ret:
print("郵件發(fā)送成功")
else:
print("郵件發(fā)送失敗")
一切準備就緒
坐等鬧鐘
(ps.貼出全部代碼)
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') ## 鈴聲名字最好不要帶中文,會節(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 = 'xxxxx@qq.com' # 發(fā)件人郵箱賬號
my_pass = '***' # 授權碼
my_user = 'xxxxxxx@qq.com' # 收件人郵箱賬號,我這邊發(fā)送給自己
def mail():
ret = True
try:
msg = MIMEText('想睡覺,不干了', 'plain', 'utf-8') # 填寫內(nèi)容
msg['From'] = formataddr(["奇小酷", my_sender]) # 括號里的對應發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號
msg['To'] = formataddr(["奇小酷", my_user]) # 括號里的對應收件人郵箱昵稱、收件人郵箱賬號
msg['Subject'] = "辭職報告" # 郵件的主題,也可以說是標題你也可以寫成分手報告
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 發(fā)件人郵箱中的SMTP服務器
server.login(my_sender, my_pass) # 括號中對應的是發(fā)件人郵箱賬號、郵箱密碼
server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括號中對應的是發(fā)件人郵箱賬號、收件人郵箱賬號、發(fā)送郵件
server.quit() # 關閉連接
except Exception: # 如果 try 中的語句沒有執(zhí)行,則會執(zhí)行下面的 ret=False
ret = False
return ret
ret = mail()
if ret:
print("郵件發(fā)送成功")
else:
print("郵件發(fā)送失敗")
if __name__ == '__main__':
a=alarm()
if a==1:#如果鬧鐘沒關閉就發(fā)郵件
mail_qq()
。
。
。
本文溫馨提示
非重度起床困難戶
謹慎使用
(本文完)