成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

定時給Ta講笑話

chanjarster / 1428人閱讀

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

定時給Ta講笑話

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

笑話準(zhǔn)備

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

根據(jù)它給的API可以獲取它所有的笑話,關(guān)鍵代碼如下:

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) #發(fā)起請求
content = resp.read()#獲得返回內(nèi)容,json格式字符串
if(content):
    json_result = json.loads(content) #轉(zhuǎn)換為字典對象
    #  下面從這個字典中獲得笑話的標(biāo)題和正文
    content_list = json_result["showapi_res_body"]["contentlist"]
    # 只取第一條笑話的標(biāo)題和正文
    first_title = content_list[0]["title"].encode("utf8")
    first_text = content_list[0]["text"].encode("utf8")
    print "標(biāo)題:"+first_title
    print "內(nèi)容:"+first_text
else:
    print "error"
    

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

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

它的詳細(xì)操作可以查看官方文檔

發(fā)短信

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

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

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

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

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

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

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

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


有兩種辦法解決,一是付費5塊錢(還是不愿意?。前岩粋€笑話分成三部分,分別放在發(fā)件人,主題和正文中,如下圖:


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

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

如下圖:


基本可行了,不過發(fā)多了過后騰訊會認(rèn)為是垃圾郵件(汗),主要是發(fā)件人名字太奇怪了,大家有什么好主意可以告訴我一下啊,多多交流。
完整代碼(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"     #設(shè)置服務(wù)器
mail_user="************"    #用戶名
mail_pass="*********"       #口令 
mailto_list=["*******"]     #郵件接受者

def send_mail(to_list,part1,sub,content):                
    #to_list:收件人;sub:主題;content:郵件內(nèi)容;
    me=part1+"<"+mail_user+">"  #hello
    msg = MIMEText(content,_subtype="plain",_charset="utf-8")#創(chuàng)建一個實例,這里設(shè)置為純文字格式郵件編碼utf8
    msg["Subject"] = sub    #設(shè)置主題
    msg["From"] = me        #設(shè)置發(fā)件人
    msg["To"] = ";".join(to_list)  
    try:  
        s = smtplib.SMTP()             #實例化       
        s.connect(mail_host)           #連接smtp服務(wù)器
        s.login(mail_user,mail_pass)   #登陸服務(wù)器
        s.sendmail(me, to_list, msg.as_string()) #發(fā)送郵件
        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"])
定時任務(wù)

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

Vi /etc/crontab

在文件最后一行添加

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

這樣就能達(dá)到每天早上7:30 發(fā)送給Ta發(fā)短信的目的啦!

總結(jié)

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

更新-2016/3/4

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/37776.html

相關(guān)文章

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

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

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

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

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

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

    NicolasHe 評論0 收藏0

發(fā)表評論

0條評論

chanjarster

|高級講師

TA的文章

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