Python趣味程式設計:定時給Ta講笑話

2016-01-29    分類:WEB開發、程式設計開發、首頁精華16人評論發表於2016-01-29

大四的生活就是這麼無聊,我琢磨著也學了這麼多東西了,為啥不能用自己的知識來給生活找點樂子呢?我想反正每天都要給Ta問候一聲早安,為何不同時講個笑話呢?如果能寫個程式每天早上定時給Ta發一條問候早安同時講一個笑話的簡訊該多好。說幹就幹,走起~

笑話準備

笑話從哪裡來?自己寫肯定是不現實的。在這個“雲”的時代,各種雲都有,自然是不缺開放API的(大部分都是免費的)。隨意一搜,果然被我找到一個介面:易源_笑話大全http://apistore.baidu.com/apiworks/servicedetail/864.html

根據它給的API可以獲取它所有的笑話,關鍵程式碼如下:

這裡簡單做一下介紹:urllib2是Python的一個獲取URL的元件。他以urlopen函式的形式提供了一個非常簡單的介面,具有利用不同協議獲取URL的能力,同樣提供了一個比較複雜的介面來處理一般情況。urllib2可用來完成以下功能:

1.獲取Web頁面

2.在遠端http伺服器上驗證

3.額外資料請求,如表單提交(GET和POST)

4.異常處理

5.非http協議通訊(如FTP)

它的詳細操作可以檢視官方文件https://docs.python.org/2/library/urllib.html

發簡訊

笑話準備好了,那麼怎麼發簡訊到手機呢?類似上面小節,我想著肯定也有開放的API,但是這次就沒那麼幸運了,簡訊API都是要付費的~, 對於一個學生黨來說有點不現實。怎麼辦??苦思冥想不得其解,這個時候突然收到移動服務號的簡訊如圖:

這提醒了我,移動的139郵箱要給使用者收到的郵件傳送簡訊提醒!!這就妙了,因為發郵件是不需要錢的,我只需要發郵件到Ta的139郵箱就可以了,哈哈。關鍵程式碼如下:

我是用的是qq郵箱,一般的郵件伺服器都會開放smtp,pop3,imap服務的埠給使用者,讓使用者可以查詢郵件或者傳送郵件。我們這裡傳送郵件,所以使用smtp服務。Python 的smtplib庫可以實現這一功能。

整合程式碼嘗試,效果如下圖:

可見不能完全顯示,這是因為139郵箱免費版具有140字限制如圖:

有兩種辦法解決,一是付費5塊錢(還是不願意!),二是把一個笑話分成三部分,分別放在發件人,主題和正文中,如下圖:

還是不行,字數限制是個硬傷。那就從原來的從笑話列表裡選擇第一個笑話改為選擇字數最少的一個。程式碼如下:

如下圖:

msg05

基本可行了,不過發多了過後騰訊會認為是垃圾郵件(汗),主要是發件人名字太奇怪了,大家有什麼好主意可以告訴我一下啊,多多交流。

完整程式碼(joke.py)如下:

定時任務

現在準備工作齊全了,就差最後一步定時傳送了。Linux 提供了一個定時任務工具crontab,windows提供了一個定時任務工具叫做任務計劃,不過我的筆記本又不是隨時連上網的,所以把這個指令碼放在實驗室的虛擬機器上了(debian)。一般linux都預裝有python環境所以只需以下命令:

在檔案最後一行新增

這樣就能達到每天早上7:30 傳送給Ta發簡訊的目的啦!

總結

總覺得程式設計師是一個很好的職業,雖然會比較累,不過只要有一雙發現的眼睛和對生活的熱情就能夠用自己的知識給生活帶來一些閃光點,比如你可以為不會上網的長輩爬取天氣預報資訊傳送到手機簡訊順便問候一聲,我相信長輩們都會很開心的。

相關文章