国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

定時給Ta講笑話

chanjarster / 1384人閱讀

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

定時給Ta講笑話

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

笑話準備

笑話從哪里來?自己寫肯定是不現實的。在這個“云”的時代,各種云都有,自然是不缺開放API的(大部分都是免費的)。隨意一搜,果然被我找到一個接口:易源_笑話大全

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

appkey = "你自己申請的appkey"
url = "http://apis.baidu.com/showapi_open_bus/showapi_joke/joke_text?page=1"#API地址
req = urllib2.Request(url) #初始化請求
req.add_header("apikey", appkey) #添加 http請求的header
resp = urllib2.urlopen(req) #發起請求
content = resp.read()#獲得返回內容,json格式字符串
if(content):
    json_result = json.loads(content) #轉換為字典對象
    #  下面從這個字典中獲得笑話的標題和正文
    content_list = json_result["showapi_res_body"]["contentlist"]
    # 只取第一條笑話的標題和正文
    first_title = content_list[0]["title"].encode("utf8")
    first_text = content_list[0]["text"].encode("utf8")
    print "標題:"+first_title
    print "內容:"+first_text
else:
    print "error"
    

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

    1.獲取Web頁面
    
    2.在遠程http服務器上驗證
    
    3.額外數據請求,如表單提交(GET和POST)
    
    4.異常處理
    
    5.非http協議通信(如FTP)

它的詳細操作可以查看官方文檔

發短信

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

這提醒了我,移動的139郵箱要給用戶收到的郵件發送短信提醒!!這就妙了,因為發郵件是不需要錢的,我只需要發郵件到Ta的139郵箱就可以了,哈哈。關鍵代碼如下:

import smtplib,sys
from email.mime.text import MIMEText

mail_host="smtp.qq.com"      #設置服務器
mail_user="你的qq郵箱 "    #用戶名
mail_pass="你的qq郵箱密碼"           #密碼

def send_mail(to_list,sub,content):                 
#to_list:收件人;sub:主題;content:郵件內容;
me="笑話來了"+"<"+mail_user+">"                   
#這里的hello可以任意設置,收到信后,將按照設置顯示
    msg = MIMEText(content,_subtype="html",_charset="utf-8")    #創建一個郵件消息實例,這里設置為html格式郵件
    msg["Subject"] = sub    #設置主題
    msg["From"] = me  
    msg["To"] = ";".join(to_list)  
    try:  
        s = smtplib.SMTP              #實例化python郵件的smtp類
        s.connect(mail_host)  #連接smtp服務器
        s.login(mail_user,mail_pass)       #登陸服務器
        s.sendmail(me, to_list, msg.as_string())  #發送郵件
        s.close()  
        return True  
    except Exception, e:  
        print str(e)  
        return False
        

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

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

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


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


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

json_result = json.loads(content)
content_list = json_result["showapi_res_body"]["contentlist"]
minlen = 10000
for item in content_list:
    if len(item["text"])

如下圖:


基本可行了,不過發多了過后騰訊會認為是垃圾郵件(汗),主要是發件人名字太奇怪了,大家有什么好主意可以告訴我一下啊,多多交流。
完整代碼(joke.py)如下:

# -*- coding: utf-8 -*-
"""
Created on 2016年1月22日
@author: mageekchiu
"""
import urllib2, json,sys,smtplib
from email.mime.text import MIMEText

reload(sys)
sys.setdefaultencoding("utf-8")#避免中文編碼問題

mail_host="smtp.qq.com"     #設置服務器
mail_user="************"    #用戶名
mail_pass="*********"       #口令 
mailto_list=["*******"]     #郵件接受者

def send_mail(to_list,part1,sub,content):                
    #to_list:收件人;sub:主題;content:郵件內容;
    me=part1+"<"+mail_user+">"  #hello
    msg = MIMEText(content,_subtype="plain",_charset="utf-8")#創建一個實例,這里設置為純文字格式郵件編碼utf8
    msg["Subject"] = sub    #設置主題
    msg["From"] = me        #設置發件人
    msg["To"] = ";".join(to_list)  
    try:  
        s = smtplib.SMTP()             #實例化       
        s.connect(mail_host)           #連接smtp服務器
        s.login(mail_user,mail_pass)   #登陸服務器
        s.sendmail(me, to_list, msg.as_string()) #發送郵件
        s.close()  
        return True  
    except Exception, e:  
        print str(e)  
        return False
if __name__ == "__main__": 
    appkey = "你自己的appkey"
    url = "http://apis.baidu.com/showapi_open_bus/showapi_joke/joke_text?page=1"
    req = urllib2.Request(url)
    req.add_header("apikey", appkey)
    resp = urllib2.urlopen(req)
    content = resp.read()
    if(content):
        json_result = json.loads(content)
        content_list = json_result["showapi_res_body"]["contentlist"]
        minlen = 10000
        for item in content_list:
            if len(item["text"])
定時任務

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

Vi /etc/crontab

在文件最后一行添加

30 7    * * *   root    python /root/joke.py

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

總結

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

更新-2016/3/4

最近發現 有好多發短信的服務 比如網易云信,leancloud等等,一條短信花不了1毛錢,就幾分,所以一個月不到3塊,還是可以買一下,畢竟這樣就不需要考慮字數限制了,三塊錢能讓Ta開心一下還是非常不錯的。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/37776.html

相關文章

  • 520為心愛的TA定制一個生活小助理吧

    摘要:只需要短短的幾行代碼結合微信就可以為你心愛的打造一個貼心智能小助理。每天早上的時候準時推送今天天氣情況生活指數等。只需要兩行代碼即可注冊一個定時執行事件,寫好提前想好的提醒語。淡忘你的小可愛提醒你該喝水了快喝一杯水showImg(https://user-gold-cdn.xitu.io/2019/5/20/16ad55bc4cf835a7); 只需要短短的幾行代碼結合微信就可以為你心愛的T...

    王陸寬 評論0 收藏0
  • ES6的Promise:要優雅,也要浪漫

    摘要:就算改變已經發生了,即使再對對象添加回調函數,也會立即得到這個結果。方法接收個參數,第一個參數是狀態的回調函數,第二個參數可選是狀態的回調函數。簡單來講,就是能把原來的回調寫法分離出來,在異步操作執行完后,用鏈式調用的方式執行回調函數。 在ECMAScript 6標準中,Promise被正式列為規范,Promise,字面意思就是許諾,承諾,嘿,聽著是不是很浪漫的說?我們來探究一下這個浪...

    weizx 評論0 收藏0
  • 超簡單!只需簡單幾步即可為TA定制天氣小助理!!

    摘要:前提雖然我們每天都會查看天氣,但是如果你能夠用限制微信每天早上七點定時為推送天氣預報,生活指數。重要其中模塊是本項目以及后續項目中很重要的模塊,就是因為這個開源項目,我們才能使其與微信產生交互。 showImg(https://segmentfault.com/img/remote/1460000019558841?w=1920&h=1279); 前提 雖然我們每天都會查看天氣,但是如...

    NicolasHe 評論0 收藏0

發表評論

0條評論

chanjarster

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<