欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

实战 | 使用 Python 哄女朋友

程序员文章站 2022-10-03 19:44:30
0. 前言本文首发于公众号:可乐python说昨天,和一位朋友聊天,他说最近准备学习 Python 这门编程语言,问我学完 Python 能做哪些事情。正好,最近他女朋友有点闷闷不乐,他也寻思着给她找点乐子,开心一下。我随口说了句,可以用 Python 哄女朋友呀。没想到他竟当真了,说完就立马要我实现,今天给大家分享如何使用 Python 哄女朋友。1. 功能简介使用 Python 给女朋友发送随机笑话,博得美人一笑。主要分为两部分功能,一是获取随机笑话,二是将获取的随机笑话发送给女朋友。...

0. 前言

本文首发于公众号:可乐python说

昨天,和一位朋友聊天,他说最近准备学习 Python 这门编程语言,问我学完 Python 能做哪些事情。

正好,最近他女朋友有点闷闷不乐,他也寻思着给她找点乐子,开心一下。我随口说了句,可以用 Python 哄女朋友呀。

没想到他竟当真了,说完就立马要我实现,今天给大家分享如何使用 Python 哄女朋友。

1. 功能简介

使用 Python 给女朋友发送随机笑话,博得美人一笑。

主要分为两部分功能,一是获取随机笑话,二是将获取的随机笑话发送给女朋友。

使用第三方库 requests 发送 HTTP 请求获取随机笑话,使用第三方库 wxpy 完成微信登录、微信好友列表获取、以及发送微信消息等操作。

以上两个库的安装,可直接使用以下命令:

pip install requests
pip install wxpy

2. 功能实现

2.1 获取随机笑话函数封装

使用 requests 模块发送 HTTP GET 请求,对返回数据进行解析,获取随机笑话内容,并作为函数的返回值返回。

import requests


def get_joke() -> str:
    """获取随机笑话"""
    # 1. 随机笑话获取接口 URL
    url = "https://autumnfish.cn/api/joke"
    # 2. 获取返回数据
    joke_data = requests.get(url)
    # 3. 解析数据并返回
    return joke_data.text
    
    
if __name__ == '__main__':
    print(get_joke())

调用函数测试,输出结果如下:

老婆趁我午睡,偷偷的到我钱包里拿钱,于是我质问她:“我每月就只有这么点零花钱,你还拿我的,有没有考虑过我的感受?”

老婆:“考虑过啊,所以我到你那拿钱的时候才会轻手轻脚的,怕吵醒你了。”

一时间我竟然有些感动。。。

2.2 网页版微信登录功能实现

wxpy 库中的 bot.py 模块中,封装了一个 Bot 类,我们称之为 机器人对象,主要用于登陆与操作微信,涵盖了大部分网页版微信的功能。

使用以下代码即可完成机器人对象初始化与登录功能:

import wxpy


# 网页版微信登陆
bot = wxpy.Bot()

执行代码后,会弹出二维码信息,使用微信扫码即可登录。

2.3 发送微信消息函数封装

调用机器人对象 botfriends 方法获取微信好友列表, 使用 search 方法搜索指定微信昵称的好友,如你女朋友的微信昵称,并获取数据的第一个对象,调用获取对象的 send 方法发送微信消息。

import wxpy


# 网页版微信登陆
bot = wxpy.Bot()


def send_msg():
    """发送消息给女朋友"""
    try:
        # 通过微信昵称获取女朋友备注信息
        friend = bot.friends().search(u'女朋友的昵称')[0]
        # 调用 send 方法发送微信消息
        # 发送获取的随机笑话
        friend.send(get_joke())
    except:
        pass

2.4 功能测试

1、执行代码,扫码登录微信。

...
# 以上代码略
if __name__ == '__main__':
    send_msg()

2、微信消息发送成功,效果如下图:

实战 | 使用 Python 哄女朋友

3. 功能优化

不难发现,上面的功能存在一些不足,我们每次只能发送一条消息,而且每次发送都得重新运行一下代码,这显然不符合我这位朋友的需求。

现在,我们优化一下代码,保证代码只需要运行一次,还能定时发送消息,并且在随机笑话前面添加自己想要的内容 - “女神,开心一刻:”。

3.1 入口函数封装

我们将所有的业务逻辑全部封装至 main 函数中,便于后续优化、升级,选用 time 模块实现定时功能。

...
# 以上代码略
import time


def main():
    """定时发送消息"""
    while True:
        send_msg()
        # 这里设置间隔时间,单位为秒
        time.sleep(10)


if __name__ == '__main__':
    main()

这里的时间可根据自身情况设置,这位朋友的需求是一个小时发一次,为了便于测试,我们暂时设置为 10 秒一次。

3.2 发送消息函数调整

调整 send_msg 函数中的业务逻辑,在发送的消息前面加上所需的文本内容。

...
# 以上代码略


def send_msg():
    """发送消息给女朋友"""
    try:
        # 通过微信昵称获取女朋友备注信息
        friend = bot.friends().search(u'女朋友的昵称')[0]
        print(get_joke())
        # 调用 send 方法发送微信消息
        friend.send("女神,开心一刻:\n{}".format(get_joke()))
    except:
        pass

3.3 优化后的功能效果

执行代码,扫码登录即可成功定时发送消息了,接下来,我们看看效果吧。

实战 | 使用 Python 哄女朋友

4. 补充

打开 bot.py 模块的源码可以发现,里面还封装了很多微信操作相关的方法,有兴趣的朋友可以去了解一下。

下面介绍几个常用的方法:

friends:获取所有微信好友

groups:获取所有微信群聊对象

mps:获取所有公众号

user_details:获取单个或多个用户的详细信息

add_friend:添加指定用户为好友

其实,初始化机器人对象时,也可以传递参数,下面介绍几个常用的参数:

cache_path:当前会话的缓存路径,并开启缓存功能,默认不开启

console_qr:在终端中显示登陆二维码,需要安装 pillow 模块,也可为整数,表示二维码单元格的宽度

qr_path:保存二维码的路径

5.总结

1、Python 能带给我们很多惊喜,增添生活乐趣,提升学习、工作效率等等。

2、案例中发送的是随机笑话,大家可以根据自身需求,如发送天气预报、新闻、或者其他感兴趣的内容等等。

3、关注公众号,在后台回复 『哄女朋友』,即可获取完整源码。

4、原创文章已全部更新至 Github:https://github.com/kelepython/kelepython。

5、本文永久博客地址:https://kelepython.readthedocs.io/zh/latest/c01/c03_03.html。

6、欢迎在留言区讨论,有任何疑问也可与小编联系,也欢迎大家分享一些有趣使用的知识。

实战 | 使用 Python 哄女朋友

本文地址:https://blog.csdn.net/python_coder11/article/details/113990278