python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?
在繁忙的工作生活中,我們經(jīng)常忘記給所愛的人發(fā)WhatsApp。本教程將使用Python包Twilio編寫一個簡單的Python腳本來發(fā)送WhatsApp消息。我們會把代碼放在亞馬遜網(wǎng)絡(luò)服務(wù)云(AWS)上,以便在每天的特定時間運行它。
開始吧!
一個解決方案是使用Python的Selenium包,并使用WhatsApp網(wǎng)絡(luò),而不是免費層結(jié)束后才提供訂閱的Twilio。但WhatsApp需要不時掃描手機上的QR碼,因此無法實現(xiàn)自動化。
我們將分三步進行:
? Twilio初始設(shè)置
? 理解并修改代碼
? 將包放在帶有觸發(fā)器的AWS lambda上
步驟1:Twilio 初始設(shè)置
創(chuàng)建一個免費的Twilio帳戶,并確認(rèn)電子郵件和手機號碼。
此外,一個免費層Twilio賬戶需要使用Twilio沙箱的WhatsApp,這意味著你不能使用你的號碼,且必須通過一次性許可才能收到WhatsApp的消息。
WhatsApp批準(zhǔn)Twilio使用你的號碼后,你便可以獲得自己的號碼,解決上面兩個問題。你只需填寫一個表格,并等待一段時間。
這些消息都令人氣餒,但我們的免費層解決方案做得很好。而且就目前而言,這是唯一可行的方法。
現(xiàn)在你必須將接收者的手機連接到WhatsApp沙箱上才能開始接收信息。
現(xiàn)在轉(zhuǎn)到WhatsApp測試版控制臺的學(xué)習(xí)部分。
將分配給你的WhatsApp號碼保存在聯(lián)系人中。你可以給它取任何名字。為了簡單起見,我們將它保存為Twilio Sandbox,然后從我父親的手機發(fā)送一條消息給它,如上所示。這必須進行一次,而且只能進行一次。
現(xiàn)在轉(zhuǎn)到Twilio控制臺,獲取帳戶SSID和身份驗證令牌。這將幫助Twilio知道是你在執(zhí)行代碼。
步驟2:理解并修改代碼
下載GitHub存儲庫并提取它:https://github.com/kartik-nighania/whatsapp_with_aws_lambda
壓縮文件中的內(nèi)容
你將在里面找到我們的代碼文件和部署包。
? whatsapp_messaging.py
? aws_lambda_deploy.zip
whatsapp_messaging代碼文件
? 第1行:導(dǎo)入Twilio包,并使用它的REST客戶端來訪問Twilio API。
? 第3行:創(chuàng)建了一個函數(shù)msg_mom_and_dad,它將用于AWS,并在每天的特定時間運行。
? 第6-7行:如步驟1所述,替換帳戶的sid和auth_token。
? 第9行:使用我們的憑證創(chuàng)建Twilio客戶端對象。
? 第13行:創(chuàng)建一個Python字典,其中名字作為key,電話號碼作為value。還可以繼續(xù)向這個Python字典添加內(nèi)容,以便向更多的人發(fā)送消息。
? 第15行:寫一個for循壞遍歷所有的key和value對(目前只有一個)。在body中寫你的消息。我寫了非常簡單的一句“早上好”,后面加上key值。上面的代碼顯示“早上好,爸爸”,之后我們加上for和數(shù)字,該數(shù)字是之前獲得的Twilio WhatsApp號碼。后面再加上to和數(shù)字,該數(shù)字是之前用于WhatsApp沙箱確認(rèn)的號碼。
? 第23行:通過打印SID檢查消息狀態(tài)的行。反正我們不會用這個。
我們要修改五樣?xùn)|西:
? twilio_sid
? auth_token
? contact_directory
? from_
? body (非必須)
更改這些之后保存,然后提取aws_lambda_deploy.zip并使用新創(chuàng)建的函數(shù)替換里面的whatsapp_messaging.py,再進行壓縮。我們只是想用你的憑證和聯(lián)系方式更改代碼。現(xiàn)在部署包已經(jīng)準(zhǔn)備好了。
步驟3:將包放在帶有觸發(fā)器的AWS Lambda上
我們的代碼可以運行并發(fā)送WhatsApp消息。你也許想知道部署包中的其他文件是什么,它們其實是Twilio包及其所有其他依賴項。因為我們將在沒有Twilio包的Python環(huán)境中使用AWS Lambda函數(shù)。但是為什么不運行pip install twilio來安裝它呢?因為我們這里沒有服務(wù)器。
AWS Lambda是一種無服務(wù)器的計算服務(wù),可以根據(jù)用戶的需要基于不同的AWS事件和觸發(fā)器運行一段代碼。因此,全天候運行服務(wù)器(AWS中的EC2實例)來執(zhí)行我們的小任務(wù)是對計算資源和金錢的浪費。這里L(fēng)ambda函數(shù)每天只在我們提到的時間觸發(fā)器上運行很短的時間。
Lambda服務(wù)非常便宜,每個月可以免費滿足100萬個請求。
登錄到https://aws.amazon.com,然后單擊Services -> Compute -> Lambda -> create a function
命名你的函數(shù)。
我們選擇Python 3.6作為環(huán)境。
由于我們不需要連接到AWS中的其他服務(wù),選擇基本權(quán)限就可以。
單擊create function,你將看到主儀表板。
在函數(shù)代碼塊中,向Lambda函數(shù)處理程序指定:我們希望在每次調(diào)用Lambda函數(shù)時運行whatsapp_messaging Python文件和其中的msg_mom_and_dad函數(shù)。如上所述更改處理程序值。
在代碼入口點,選擇upload a.zip file,上載在步驟2中創(chuàng)建的部署包并保存。
現(xiàn)在我們的代碼可以運行了。可以單擊test并檢查該功能是否成功將消息發(fā)送到指定的WhatsApp號碼。
最后一步是每天在特定的時間觸發(fā)它。在設(shè)計器框中單擊add trigger -> CloudWatch Events即可。
我們必須創(chuàng)建一個新規(guī)則。你可以任意命名和描述它。
將規(guī)則類型設(shè)置為schedule expression。
我們使用cron()指定時間。30 1指協(xié)調(diào)世界時(UTC)凌晨1:30(相當(dāng)于印度標(biāo)準(zhǔn)時間早上7點)。
接下來的兩個*分別代表一月中的某一天和月份。
再后面的?和*分別代表一周中的某一天和一年中的某一天。我們用*和?指定每天、每月和每年。可以參考下面的示例來創(chuàng)建自己的cron參數(shù)。若想深入了解,可參考aws_cron_docs上的cron向?qū)А?/p>
完成后,請確保選中了Enable trigger復(fù)選框。最后,單擊add按鈕。
現(xiàn)在可以在Lambda函數(shù)儀表板上看到CloudWatch事件附加到Lambda函數(shù)上。向下滾動時,可以看到啟用了CloudWatch事件來觸發(fā)函數(shù)。
就是這樣!你可以將Twilio沙箱名稱更改為你的名稱,甚至可以響應(yīng)來自Twilio儀表板的回復(fù)。
留言 點贊 關(guān)注
我們一起分享AI學(xué)習(xí)與發(fā)展的干貨
編譯組:鮑怡然、劉賀
相關(guān)鏈接:
https://medium.com/better-programming/i-wrote-a-script-to-whatsapp-my-parents-every-morning-in-just-20-lines-of-python-code-5d203c3b36c1
如需轉(zhuǎn)載,請后臺留言,遵守轉(zhuǎn)載規(guī)范
總結(jié)
以上是生活随笔為你收集整理的python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ fork 进程时 共享内存_因为
- 下一篇: python实战经典例子_Python基