【撩妹合集】微信聊天機器人,推送天氣早報、睡前故事、精美圖片分享

2021-03-02 Python開發與大數據人工智慧

如果你還在為不知道怎麼撩妹而煩惱,不知道怎麼勾搭小仙女而困惑,又或者不知道怎麼討女朋友歡心而長籲短嘆。

那麼不要猶豫徘徊,往下看。接下來我會分享怎麼使用 Python 實現微信自動聊天,微信每日天氣早報、睡前故事及精美圖片推送。

學會之後,迎娶白富美,走上人生巔峰就指日可待啦。(✪ω✪)

不信咱先看看效果展示:
(皮皮是我家貓的名字,所有我把命令設成這樣子的)

如此貼心的舔狗,哪個小姐姐會選擇拒絕呢。

目錄:

一、Python 登錄微信

二、獲取天氣早報信息

三、獲取睡前故事

四、獲取精美壁紙

五、整合數據,配置定時任務

六、自動聊天機器人(圖靈機器人)

七、Git 地址

一、Python 登錄微信

Python 中有個 itchat 包,這是個開源的微信個人號接口,非常簡單就可以實現在 python 對微信的操作。
下面貼一下基本的登錄、對話代碼

import itchat

itchat.auto_login(hotReload=True)  # 登錄,會下載二維碼給手機掃描登錄,hotReload設置為True表示以後自動登錄
itchat.send('hello my love', toUserName='filehelper') #發送信息給微信文件助手

friends = itchat.search_friends(name='好友暱稱')  # 獲取微信好友列表
userName = friends[0]['UserName']
itchat.send('hello my love', toUserName=userName)  # 發送信息給指定好友

itchat.run()  # 讓itchat一直運行

(之後展示的代碼是對 itchat 的進行簡單封裝後的應用,可能會導致閱讀有些麻煩,見諒,文章最後面我會貼上全部的代碼 git)

詳細了解 itchat 的應用可以看:
https://itchat.readthedocs.io/zh/latest/

二、獲取天氣早報信息

獲取每日天氣信息:
我的天氣信息是在 阿凡達數據(https://www.avatardata.cn/) 中申請的免費數據接口,裡面也有很多好玩有趣的數據,最好自己去註冊個帳號。 

common = Common() #這是個我自己封裝的工具類
key = 'cc186c9881b94b42b886a6d634c632' #這個我修改了 嘻嘻

# 數據提供類
class DataUtil():
    # 獲取天氣信息
    def getWeatherData(self, cityname):
        # 阿凡達數據
        url = ' http://api.avatardata.cn/Weather/Query?key=' + key + '&cityname=' + cityname
        results = common.get(url)
        text = self.parseInfo_afd(results)
        print(text)
        return text

    # 簡單的數據修飾封裝
    def parseInfo_afd(self, jsons):
        # 將string 轉換為字典對象
        jsonData = json.loads(jsons)
        textInfo = '早上好,今天又是元氣滿滿的一天喲.\n'
        data = jsonData['result']['weather'][0]['date']
        week = jsonData['result']['weather'][0]['week']
        nongli = jsonData['result']['weather'][0]['nongli']
        city_name = jsonData['result']['realtime']['city_name']
        lowTemperature = jsonData['result']['weather'][0]['info']['dawn'][2]
        highTemperature = jsonData['result']['weather'][0]['info']['day'][2]
        weather = jsonData['result']['weather'][0]['info']['day'][1]
        wind = jsonData['result']['weather'][0]['info']['day'][4]

        textInfo = textInfo + '今天是' + data + '號\n'
        textInfo = textInfo + '農曆:' + nongli + ',星期' + week + '\n'
        textInfo = textInfo + city_name + '氣溫:' + lowTemperature + '-' + highTemperature + '度,' + weather + ' ' + wind + '\n\n'
        textInfo = textInfo + '穿衣指數:' + jsonData['result']['life']['info']['chuanyi'][0] + ' - ' + jsonData['result']['life']['info']['chuanyi'][1] + '\n\n'
        textInfo = textInfo + '運動指數:' + jsonData['result']['life']['info']['yundong'][0] + ' - ' + jsonData['result']['life']['info']['yundong'][1] + '\n\n'
        textInfo = textInfo + '感冒指數:' + jsonData['result']['life']['info']['ganmao'][0] + ' - ' + jsonData['result']['life']['info']['ganmao'][1]  + '\n\n'
        textInfo = textInfo + '紫外線指數:' + jsonData['result']['life']['info']['ziwaixian'][0] + ' - ' + jsonData['result']['life']['info']['ziwaixian'][1]  + '\n\n'
        textInfo = textInfo + 'by:小可愛的貼心秘書' + '\n\n'
        return textInfo

三、獲取睡前故事

睡前故事的來源是出自《從你的全世界路過--張嘉佳》,這本書中都是些愛情相關的小故事。
我們用 night.n 來區分每晚發送的故事。

# 提取故事的第一天
readBookStartDay = datetime.datetime(2019, 2, 17)

class DataUtil():

    def getBookInfo(self, filePath): #文件路徑,
        radioList = [] #微信每次最多只能發送的字符是有限制的,我每25行發送一次信息
        row = 0
        tempInfo = textInfo = '睡前故事:張嘉佳 - 《從你的全世界路過》.\n\n'
        readFlag = False #是否讀取
        today = datetime.datetime.now()
        dayCount = (today - readBookStartDay).days + 1
        for line in open(filePath):
            if (line.find('night.' + str(dayCount)) > -1): # 開始讀數據
                readFlag = True
                continue
            if (line.find('night.' + str(dayCount+1)) > -1): # 讀完一天數據結束
                break
            if readFlag:
                row += 1
                tempInfo += line
                # 微信每次最多只能發送的字符是有限制的,我每25行發送一次信息
                if row == 25:
                    radioList.append(tempInfo)
                    tempInfo = ''
                    row = 0
        tempInfo += '\n晚安\n' + 'by:小可愛的貼心秘書' + '\n'
        radioList.append(tempInfo)
        # common.txtToMp3(radioList) #文字生成語音 發送語音
        print(radioList)
        return radioList

四、獲取精美壁紙

壁紙我們從 必應(https://cn.bing.com/?scope=web&FORM=QBLHCN) 的官網抓取,必應的官網壁紙還是比較精美的。
至於具體的壁紙抓取 分析,相信聰明的你們肯定是知道的,我就直接貼代碼咯。

class DataUtil():
    def getBingPhoto(self, index):
        # index 對應的是 必應 index天的壁紙
        url = ' http://www.bing.com/HPImageArchive.aspx?format=js&idx=' + index + '&n=1&nc=1469612460690&pid=hp&video=1'
        html = urllib.request.urlopen(url).read().decode('utf-8')

        photoData = json.loads(html)
        # 這是壁紙的 url
        photoUrl = 'https://cn.bing.com' + photoData['images'][0]['url']
        photoReason = photoData['images'][0]['copyright']
        photoReason = photoReason.split(' ')[0]
        photo = urllib.request.urlopen(photoUrl).read()

        # 下載壁紙刀本地
        with open('./bing.jpg', 'wb') as f:
            # img = open_url(photoUrl)
            if photo:
                f.write(photo)
        print("圖片已保存")

        # 把壁紙的介紹寫到壁紙上
        # 設置所使用的字體
        font = ImageFont.truetype("simhei.ttf",35)
        imageFile = "./bing.jpg"
        im1 = Image.open(imageFile)
        # 畫圖,把壁紙的介紹寫到壁紙上
        draw = ImageDraw.Draw(im1)
        draw.text((im1.size[0]/2.5, im1.size[1]-50), photoReason, (255, 255, 255), font=font)  # 設置文字位置/內容/顏色/字體
        draw = ImageDraw.Draw(im1)  # Just draw it!
        # 另存圖片
        im1.save("./bing.jpg")

五、整合數據,配置定時任務

數據都獲取到了,也登錄了微信,現在我們就需要把這些信息發送給需要的人了。
這裡需要注意的是:

wechat = WeChat() #這裡是封裝的 itchat
# 開啟微信登錄線程,需要單獨佔個線程
_thread.start_new_thread(wechat.login, ( ))

# 配置定時任務
# 開啟早間天氣預報 定時任務
schedule.every().day.at("7:20").do(wechat.dailyInfo)
# 開啟睡前故事 定時任務
schedule.every().day.at("21:30").do(wechat.readStory)
while True:
    schedule.run_pending()
    time.sleep(1)

微信登錄方法

class WeChat():

    def login(self):
        itchat.auto_login(hotReload=True)  # 登錄,會下載二維碼給手機掃描登錄,hotReload設置為True表示以後自動登錄
        itchat.send('hello my love', toUserName='filehelper') #發送信息給微信文件助手

        friends = itchat.search_friends(name='好友暱稱')  # 獲取微信好友列表
        userName = friends[0]['UserName']
        itchat.send('hello my love', toUserName=userName)  # 發送信息給指定好友

        itchat.run()  # 讓itchat一直運行

微信每日天氣預報方法

class WeChat():
# 推送每日早報
    def dailyInfo(self):
        print('dailyInfo do')
        jiujiang = dataUtil.getWeatherData('九江')
        # wechat.sendMessage(jiujiang, 'filehelper')
        yfei = wechat.getFriend('好友暱稱')
        wechat.sendMessage(jiujiang, yfei)

微信發送睡前故事 和 精美壁紙方法

# 推送睡前故事
    def readStory(self):
        print('readStory do')
        stroy = dataUtil.getBookInfo('./從你的全世界路過.txt')
        dataUtil.getBingPhoto('0')
        # wechat.sendMessage(stroy, 'filehelper')
        # itchat.send_image('./bing.jpg',  'filehelper')
        yfei = wechat.getFriend('好友暱稱')

        for txt in stroy:
            wechat.sendMessage(txt, yfei)

        # 發送壁紙
        itchat.send_image('./bing.jpg', toUserName=yfei)

六、自動聊天機器人(圖靈機器人)

聊天機器人我們要考慮倆個問題:

# 聊天助手開關
OPEN_FLAG = 0
# 回覆信息
@itchat.msg_register(['Text'])
def text_reply(msg):
    global OPEN_FLAG
    msgText = msg['Text']
    # print(msgText)
    if msgText == "皮皮過來":
        OPEN_FLAG = 1
        print('開啟皮皮語音助手*')
        return '開啟皮皮語音助手*'
    if msgText == "皮皮退下":
        OPEN_FLAG = 0
        print('關閉皮皮語音助手*')
        return '關閉皮皮語音助手*'
    if OPEN_FLAG == 1:
        # 為了保證在圖靈Key出現問題的時候仍舊可以回復,這裡設置一個默認回復
        defaultReply = '不想說話了!' + "*"
        # 如果圖靈Key出現問題,那麼reply將會是None
        reply = get_response(msg['Text']) + "*"
        # 有內容一般就是指非空或者非None,你可以用`if a: print('True')`來測試
        return reply or defaultReply

第二個問題,圖靈機器人 去 這裡(http://www.turingapi.com/) 申請註冊就行了,聰明的你肯定會的。
申請到了之後,只需要調用接口就好了。

KEY = '71f9d9d2dd364ad8b28bd565270176'
# 圖靈機器人
def get_response(msg):
    # 構造了要發送給伺服器的數據
    apiUrl = 'http://www.tuling123.com/openapi/api'
    data = {
        'key': KEY,
        'info': msg,
        'userid': 'wechat-robot',
    }
    try:
        r = requests.post(apiUrl, data=data).json()
        return r.get('text')
    # 為了防止伺服器沒有正常響應導致程序異常退出,這裡用try-except捕獲了異常
    # 如果伺服器沒能正常交互(返回非json或無法連接),那麼就會進入下面的return
    except Exception as e:
        print('插入時發生異常' + e)
        # 將會返回一個None
        return

大致思路就是這麼簡單咯

七、Git 地址

https://github.com/zwwjava/python_capture/tree/master/venv/Include/wechat
入口文件:autoSendMessage.py

來源:躲貓貓的貓
https://www.cnblogs.com/zhaww/p/10484396.html

相關焦點

  • 對不起,分手吧,我愛上了你做的聊天機器人
    接下來我會分享怎麼使用 Python 實現微信自動聊天,微信每日天氣早報、睡前故事及精美圖片推送。  不信咱先看看效果展示:  (皮皮是我家貓的名字,所有我把命令設成這樣子的)       目錄:一、Python 登錄微信二、獲取天氣早報信息三、獲取睡前故事四、獲取精美壁紙五、整合數據,配置定時任務
  • 微信附近人撩妹第一句-大神微信撩妹聊天記錄
    微信附近人撩妹第一句是什麼比較好?微信撩到附近的小姐姐,開口第一句可是非常重要的,今天小編就要為小夥伴們推薦大神微信撩妹聊天記錄最佳開場白,一起來看看吧!
  • 聊天撩妹套路大全,微信幽默聊天對話送給男生
    女人不是追來的,而是需要各種聊天套路,讓她主動找你。聊天撩妹套路大全,微信幽默聊天對話一:營造出美好的感官享受場景,撩妹聊天的時候多用形象詞,形聲詞等,充分調動人的視覺、聽覺、味覺、嗅覺、觸覺等,以此來拉近關係。
  • 撩妹加人通過率高的20句話,撩妹聊天套路技巧分享
    很多男生想在網上撩妹子,談起一段美妙的戀愛,第一步就是要加到她的聯繫方式,才能展開你的撩妹聊天套路。那麼,想要網上加人通過率高,我們該怎麼做呢?看到屏幕裡的妹子很好看,卻加不到這位妹子,讓一些男人心急火燎。接下來分享撩妹加人通過率高的20句話,希望能夠幫助到你。
  • 渣哥表情合集l高情商撩妹話術2/17
    渣哥表情合集表情包分享渣哥表情合集表情包|潮圖壁紙|頭像|背景圖|套路聊天始終是我們撩妹不可忽略的重要一步,高情商聊天套路能夠幫助我們吸引小姐姐的興趣,加快對方產生好感。針對小姐姐們的心理,用高情商撩妹聊天術步步引導,高效地拉近男女關係。為什麼很多男生聊天滔滔不絕,卻始終不能讓妹子主動?其實,這是沒有讀懂女人心的原因,導致不能正確地聊天套路到她。因此,為了幫助大家撩到小姐姐,本文重點分享高情商聊天套路大全,打開你的思維,用撩妹聊天術輕鬆撩到喜歡的女生。
  • 怎麼撩妹子找話題?撩妹聊天的技巧
    其實並不是話題的問題,撩妹子重要的是氛圍和情趣,如果你能抓住這一點,撩到妹子很容易。當然,如果你自身本是一個悶的人,生活比較枯燥乏味,還想撩到妹子,確實需要改變很多,這需要時間過程。那麼,我們如何跟剛認識的女生撩妹子聊天?該怎麼找話題去升溫關係呢?接下來大家給詳細解說。怎麼撩妹子聊天跟剛認識的女生?
  • 微信撩妹技能,撩妹套路,撩妹大全
    微信撩妹表情用什麼好和女生聊天發表情好嗎?現在在網上聊天,如何不會鬥圖,那就是趕不上潮流。所以,想要成為聊天高手,在微信上存幾套表情圖,是必備的。當然,在網上泡妞的時候,表情圖也能起到很大的重要。代表的意思當在跟女生聊天的時候,沒有好的開場白,發「害羞」「捂嘴偷笑」兩個表情,分別代表著什麼意思?「害羞」:有一點壞壞的感覺的,又有一點曖昧的感覺。讓女生容易產生情愫。「捂嘴偷笑」:傳遞著歡樂的氣氛。預示著,一個好笑的話題,即將開始。現在不是流行表情包,還有圖片嗎,和女生聊天該不該使用這些工具呢?可以,但又不可以。
  • 撩妹怎麼聊天-跟女生聊天的套路
    好的聊天套路,能夠幫你撩到你心儀的那個女生,那麼撩妹怎麼聊天呢?今天,小編就跟大家分享一些跟女生聊天的套路,幫助男生們更好的搭訕撩妹。撩妹怎麼聊天  1、聊天中學會鋪墊和引導  為什麼你說的話在女生心裡毫無分量?為什麼你約她出來從不答應?甚至女生還時不時對你態度冷淡?
  • 網上聊天撩妹技巧 自然流聊天速約絕技分享
    怎麼在網上撩妹?很多兄弟苦於和女生聊天聊著就突然沒話題了,想約女生出來也不知道怎麼辦了,其實這是不懂得撩妹技巧的表現,下面天才小編就要帶來自然流聊天速約絕技分享,希望能幫助大家。
  • 50個撩妹金句,高情商撩妹聊天記錄
    人們對於自己的感情都是很有追求的,遇到自己喜歡的女生都是需要及時的去表達,不然就會被別人搶走,對於聊妹子這個話題,大家肯定會很關心,要知道合適的語言可是會讓你成功的機率增大,那麼50個撩妹金句,對於有想法的男生,可是需要學習起來,不然會錯失真愛,對於不見面聊天時候聊妹子,可是一門學問
  • 和女生聊天撩妹套路大全,無形撩妹最為有效
    關於如何在聊天中撩妹,網絡上一搜一大把,什麼撩妹套路、撩妹情話應有盡有,雖然說也挺有用的,不過是屬於比較低級的一種。只能博妹子一笑,如果把握不好聊天的分寸,在錯誤的時間和場合去使用,甚至還會讓人覺得厭煩和庸俗。
  • 你苦苦尋找的撩妹套路乾貨,男生撩妹聊天套路對話
    學撩妹,不能太老實,有什麼就直接說什麼。懂點男生撩妹聊天套路對話,撩得妹子開開心心,以後才有機會把妹子約出來。昨天小編寫《聊天套路話題》,很多兄弟問還有沒有更多的套路,兄弟們這麼快就學習完了?有效率!當然了,套路肯定是有的,既然兄弟都那麼認真學習,小編也要每天分享更多乾貨才行,好了,廢話也不多說,小編繼續分享15段聊天套路:泡帝歐陽說:最牛B的泡妞技術,是讓妹子泡你。小編以前也不懂撩妹套路,也不懂泡妞,後來偶然機會在網上認識個叫泡帝歐陽的傢伙,寫追妹子的文章特別厲害,小編從一個挫男變成了現在的把妹達人,追女生對小編來說變得超級容易,都是學習了他的知識。
  • 早報:中國移動將推出超級SIM卡 微信聊天可以發超連結了
    科技行業新鮮趣事早知道,今日份《科技早報》為君奉上。未來手機SIM卡不再是單一的通信卡,可集成NFC、金融認證等技術。微信聊天以後可以發超連結了。騰訊官宣:微信聊天 #一下,可以發 「超連結」了騰訊微信官方號「微信派」表示,今天起,微信可以發「超連結」了。在聊天界面輸入#內容 ,三言兩語就能帶上新聞、天氣、公交、醫院、股價、明星、影視綜藝、星座、油價、快遞等各類話題信息,點擊直達內容聚合頁。
  • 撩妹什麼意思為什麼是撩 撩妹就是那麼簡單
    那麼撩妹什麼意思為什麼是撩呢?今天小編就給大家分享撩妹的意思以及撩妹的套路,想脫單快來學一學吧!  撩妹的意思:  撩妹為網絡語言,有引誘女孩的意味。另外,北方方言「撩騷」、「撩哧」也有「挑逗」的意思。粵語也有這一說法。但是兩者不同。
  • 聊天怎麼樣撩妹子-撩妹的聊天套路
    聊天怎麼樣撩妹子?會撩的男生總是不用擔心女生聊天不回復自己,那麼有哪些好用的撩妹的聊天套路?今天小編就給大家帶來怎麼撩妹子聊天套路,希望對大家有所幫助。撩妹的聊天套路  分析女生話題:  1. 她主動去觀看了我們的朋友圈。
  • 50個撩妹金句,撩妹聊天幽默話題
    50個撩妹金句, 撩妹聊天幽默話題:1.「你想什麼時候結婚啊?」
  • 高情商撩妹套路開場白,撩妹子聊天話術範例
    高情商撩妹套路開場白說什麼比較好?撩妹子聊天確實難倒了很多男生。你是否拿到女生的聯繫方式,聊天剛開始總會有些迷茫,不知道該怎麼聊,生怕對方不回應?和女生聊天是相識的過程,怎樣能讓女生在初次聊天的時候就能對自己有好感?
  • 《歡樂頌》「撩妹技能」大合集,套路進行到這,就該放大招了
    第一點:得體的著裝 既然要撩妹,著裝自然很重要,服飾價格可以不用很貴,但切記,一定要得體。 《歡樂頌》「撩妹技能」大合集,套路進行到這,就該放大招了第二點:大方的語言 見到心儀的妹子,首先,你要做的就是充滿誠意地介紹自己,切不可浮誇,也不要看見人家漂亮就走不動道了。
  • 如何高情商撩妹?用撩妹語句和小姐姐聊天幽默對話
    正確使用高情商撩妹語句和小姐姐聊天幽默對話,僅靠一張嘴就能撩到她心花怒放,主動靠近你。因為女人喜歡壞壞的男人,抓住她的心理,恰當說出高情商的撩妹語句,感覺很快就會產生,比噓寒問暖要強100倍。讓我們一起來看看高情商撩妹語句都有哪些,教你如何高情商撩妹,助你快速抓住擦肩而過的機會。
  • 高情商的幽默對話示例,撩妹聊天對話套路解讀
    相比普通的聊天找話題,效果要強1000倍,高手們都深知這其中的奧秘。和妹子聊天的時候進行有目的引導,這屬於撩妹對話套路,如果能夠幽默一些,你們的關係將會馬上提速。接下來分享5個高情商的幽默對話示例,讓你和女生聊天幽默有趣。高情商的幽默對話一:男:我總有一天會過上....