继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【Python撩妹合集】微信聊天机器人,推送天气早报、睡前故事、精美图片分享

胡子哥哥
关注TA
已关注
手记 359
粉丝 79
获赞 377

福利时间,福利时间,福利时间

  如果你还在为不知道怎么撩妹而烦恼,不知道怎么勾搭小仙女而困惑,又或者不知道怎么讨女朋友欢心而长吁短叹。

  那么不要犹豫徘徊,往下看。接下来我会分享怎么使用 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 的应用可以看 这里

 

二、获取天气早报信息

  获取每日天气信息:

  我的天气信息是在 阿凡达数据 中申请的免费数据接口,里面也有很多好玩有趣的数据,最好自己去注册个账号。 

复制代码

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

复制代码

 

四、获取精美壁纸

  壁纸我们从 必应 的官网抓取,必应的官网壁纸还是比较精美的。

  至于具体的壁纸抓取 分析,相信聪明的你们肯定是知道的,我就直接贴代码咯。

复制代码

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")

复制代码

 

五、整合数据,配置定时任务

  数据都获取到了,也登录了微信,现在我们就需要把这些信息发送给需要的人了。

  这里需要注意的是:

  1. 微信每条信息是有长度限制的

  2. 微信在线需要单独占用一个线程,所以发送信息需要在另一个线程执行。

  3. 定时任务的配置......想详细了解看 这里

  

复制代码

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)

复制代码

 

六、自动聊天机器人(图灵机器人)

   这个......明天再写吧,我真TM的机智。

 

七、Git 地址

  https://github.com/zwwjava/python_capture/tree/master/venv/Include/wechat

  入口文件: autoSendMessage.py

作者:躲猫猫的猫

原文出处:https://www.cnblogs.com/zhaww/p/10484396.html  

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP

热门评论

你好,我也好想实现你说的那样的功能,没有pyhon基础,能给点学习建议,比如 哪个python课程

查看全部评论