目录

  • 一、写在前面:
  • 二、系统实现:
  • 三。总结反思:

Author:qyan.li

Date:2022.6.3

Topic:借助于python自动化技术实现指定音乐的播放和QQ,微信消息发送

一、写在前面:

​ ~~~~~~~~        这是python构建智能机器人系列的第三篇博文:主要内容是借助于python实现QQ音乐的自动播放以及QQ,微信消息的自动发送,来作为智能机器人的主要功能之一。后续还会继续推出第四篇,也是最后一篇,借助于python实现邮件的自动化发送。
~~~~~~~~        参考链接:https://blog.csdn.net/DALEONE/article/details/125197203?spm=1001.2014.3001.5501

二、系统实现:

​ ~~~~~~~~        借助于python实现音乐自动播放,微信,qq消息的自动发送,内部原理核心都是一条:借助于自动化模块模拟人的操作实现指定功能。

​ ~~~~~~~~        自动化操作本身是python的强项之一,python也有非常丰富的第三方模块来辅助实现自动化操作,本项目中主要借助于pyautogui模块来模拟键盘和鼠标的操作以实现音乐播放和消息发送的功能。

  • QQ,微信消息自动化发送:

    ~~~~~~~~        首先看较为简单的消息自动化发送,老样子,还是先上代码,方便大家参考借鉴:

    import pyautogui
    import pyperclip
    import timeclass AutoMsg():def __init__(self,msg,friendName,key):self.msg = msgself.name = friendNameself.key = keydef sendMsg(self):# Ctrl + alt + w 打开微信# Ctrl + alt + z 打开QQif self.key == 'w':pyautogui.hotkey('ctrl', 'alt', 'w')if self.key == 'z':pyautogui.hotkey('ctrl', 'alt', 'z')# 搜索好友pyautogui.hotkey('ctrl', 'f')# 复制好友昵称到粘贴板pyperclip.copy(self.name)# 模拟键盘 ctrl + v 粘贴pyautogui.hotkey('ctrl', 'v')time.sleep(1)# 回车进入好友消息界面pyautogui.press('enter')def send(self):pyperclip.copy(self.msg)# 模拟键盘 ctrl + v 粘贴内容pyautogui.hotkey('ctrl', 'v')# 发送消息pyautogui.press('enter')def start(self):self.sendMsg()self.send()if __name__ == '__main__':MsgClass = AutoMsg('你今天晚上吃饭吗?','我的iPhone','z')MsgClass.start()
    

    ​ ~~~~~~~~        之所以讲消息自动化发送简单,是因为在QQ,微信软件运行的状态下,我们可以仅仅只借助于键盘实现消息的自动化发送,而不需要借助于鼠标。而在自动化操作的过程中,最繁琐或者最困难的就是鼠标点击位置的确定,这在后续的QQ音乐自动播放中会有体现。

    ​ ~~~~~~~~        我们可以先人为实现一下如何仅仅只借助于键盘实现消息的发送:

    1. 复制一段待发送的消息内容
    2. 按下ctrl+alt+z,调出QQ的控制面板
    3. ctrl+f打开QQ的联系人搜索框
    4. 键盘输入消息发送的对象
    5. 按下enter键进入消息发送的界面
    6. ctrl+v将发送消息粘贴至聊天的输入框
    7. 按下enter键消息发送成功

    ​ ~~~~~~~~        手动实现之后,在回去看代码就可以理解代码为什么这么写以及为什么这么写可以实现消息的自动化发送。

    ​ ~~~~~~~~        OK,针对于代码中的部分重要内容进行说明:

    Tips:

    • QQ和微信消息发送的区别在于打开控制面板的快捷键不同,微信为wQQz,其他部分的操作均相同
    • hotkeypress的区别在于按下单键和组合键,hotkey热键会按下ctrl+alt+z,待三者均按下后放开,模拟人组合键的按键方式
    • pyperclip模块用于将指定的内容复制至剪切板,借助于copy函数实现
  • QQ音乐的自动播放:

    ​ ~~~~~~~~        QQ音乐自动播放的原理与与自动化的消息发送类似,区别在于鼠标的定位和使用QQ音乐的播放相比于消息的自动化发送更加复杂,复杂的部分主要体现在音乐的播放需要借助于鼠标点击完成,而消息的发送仅仅依靠键盘即可。

    ​ ~~~~~~~~        既然需要鼠标进行点击,那就必须确定待点击的对象组件在屏幕上的具体位置(坐标位置),通过坐标位置移动光标至特定位置,完成点击click的操作,从而完成具体的操作。

    ​ ~~~~~~~~        OK,具有上述的前备知识,就可以来看代码啦!!!放在下面,方便大家参考和借鉴:

    ## 模块导入
    from pywinauto.application import Application
    import pyautogui## 自动播放歌曲
    def AutoPlayMusic(MusicName,pause = 0):''':param MusicName:待播放的音乐名称 :param pause:是否暂停音乐:return: None'''if pause == 0:# 开启音乐软件app = Application(backend="uia").start(r'C:\Program Files (x86)\Tencent\QQMusic\QQMusic.exe')# 移动鼠标至搜索框位置pyautogui.moveTo(516, 39)pyautogui.click(button='left')# 剪切清空搜索框pyautogui.hotkey('ctrl', 'a')pyautogui.hotkey('ctrl', 'x')# 复制粘贴搜索指定歌曲pyperclip.copy(MusicName)pyautogui.hotkey('ctrl', 'v')time.sleep(2)pyautogui.press('enter')time.sleep(2)# 点击播放按钮pyautogui.moveTo(750, 450)pyautogui.click(button='left')if pause == 1:pyautogui.click(button='left')
    

    ​ 这对于代码中的重要部分进行说明:

    Tips:

    • copy()hotkey()press()调用方法和代码中作用与消息自动化发送中相同

    • 代码app = Application(backend="uia").start(r'C:\Program Files (x86)\Tencent\QQMusic\QQMusic.exe')用于打开QQ音乐的软件,消息自动发送中未添加此代码,因此必须实现保持微信或者qq开启,当然,也可以添加到消息发送中,注意此处应用

    • 值得注意,此处借助于模块pywinquto与其他操作的pyautogui不同,pywinauto仅用于window平台,而pyautogui是跨平台的。

    • moveTo()click()方法是pyautogui模拟鼠标操作的方法,moveTo将光标移至指定位置,click方法用于点击

    • 此处需要注意的是,坐标位置由于电脑屏幕大小的不同会存在区别,具体的位置可以借助于inspect软件查看。本代码中,(516,39)代表搜索框,(750,450)代表歌曲的播放键。

    • inspect软件大家可网络资源自行下载,同样也可以使用其他的工具

三。总结反思:

​ ~~~~~~~~        上述的代码可以正常完成项目指定的两个功能,但是缺陷也非常明显,代码编写和执行较为死板,尤其是QQ音乐的自动播放。

​ ~~~~~~~~        在音乐自动播放的功能中,借助于第三方软件定位坐标实现点击的方法比较死板,搜索框的定位影响不大,但播放按钮的定位影响就会比较大,不同的音乐播放按钮的位置上下往往会出现错位,导致播放不准确,这也是后续改进的方向。

python构建智能机器人系列博文---借助于python实现QQ,微信消息的自动发送,音乐的自动播放相关推荐

  1. 派森python教程_Python系列教程一Python入门(一)

    前言 各位看博客的园友们,大家好,我就是那个风流倜傥的KK,还记得我那篇2019年的年中总结博客吗?我想有许多看博客的园友是没有读过我那篇文章的,KK很生气,后果很严重(开个玩笑了,怎么可能).给大家 ...

  2. 1000道python题库系列_1000道Python题库系列分享三

    上一期题目链接:1000道python题库系列分享二(48道) 上一题题目参考答案: 2.1 31 2.2 'F' 2.3 python采用的是基于值得内存管理方式,在Python中可以为不同变量赋值 ...

  3. 基于python的搜索引擎论文_技术分享 - 基于python构建搜索引擎系列——(四)检索模型...

    构建好倒排索引之后,就可以开始检索了. 检索模型有很多,比如向量空间模型.概率模型.语言模型等.其中最有名的.检索效果最好的是基于概率的BM25模型. 给定一个查询Q和一篇文档d,d对Q的BM25得分 ...

  4. 【Python百日基础系列】Day03 - Python 数据类型

    文章目录 一.Python中的数据类型 1.1 数据类型系统是编程语言的核心 1.2 Python中的数据类型种类 1.3 数据类型的可变性 1.4 数据类型查看函数 - type() 二.Numbe ...

  5. python构建网站flask_30分钟搭建Python的Flask框架并在上面编写第一个应用

    Flask 是一种很赞的Python web框架.它极小,简单,最棒的是它很容易学. 今天我来带你搭建你的第一个Flask web应用!和官方教程 一样,你将搭建你自己的微博客系统:Flaskr.和官 ...

  6. python构建矩阵 x y_生成Python函数一半没问题,当前最正统的代码生成是什么样的?...

    机器之心原创 参与:思源 大家都说深度神经网络能力很强,那么从函数注释生成函数代码,以及从函数代码总结函数注释这种最基础的代码任务到底能不能行?像 Python.Java 这样的通用高级语言,到底在代 ...

  7. Python应用实战系列-如何通过Python来操作Oracle数据库:cx_Oracle

    最近需要将一批数据从csv文件中迁移到Oracle数据库中,打算用Python来实现,趁着这个机会,写一篇博客学习总结一些如何使用Python来操作Oracle数据库. 1 安装与导入 Python操 ...

  8. python findall函数_Ramp;Python Data Science系列:数据处理(11)Python正则表达式re模块(三)...

    前言 使用正则表达式进行匹配,可以直接调用模块级函数,如match().search().findall()等,函数第一个参数是匹配的正则表达式,第二个参数则为要匹配的字符串.也可以使用re.comp ...

  9. Python解放双手系列,用python自动追踪你的快递

    前言 最近国内疫情状况好转,快递业也逐渐恢复,大家的快递是不是跑起来了?本文就来讲解如何让python自动为你查询快递信息,并在物流发生更新或者到达指定地点时第一时间将物流推送至你的邮箱 其实并不复杂 ...

最新文章

  1. [JSOI2007]建筑抢修
  2. 1.7nginx用户认证
  3. 使用Go语言访问JSON数据(gojsonq)
  4. easyui 1.4.2 Tab刷新图标重复问题
  5. 单元测试之更强大的powermock
  6. Linux下Nginx访问web目录提示403Forbidden
  7. xxl-job源码分析
  8. 列出一个目录中所有文件及大小
  9. Android 中opengl es灯光效果实例
  10. android toolbar控件,Android Toolbar控件
  11. 模拟admin组件自己开发stark组件之创建篇
  12. 软件工程第1次作业—词频统计
  13. 选择排序之python
  14. 转:linux中select()函数分析
  15. GNS3环境搭建与测验实战图文详解
  16. java计算机毕业设计BS景区票务管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
  17. 夜天之书 #19 The ZeroMQ Community
  18. java CGLIB动态代理
  19. Hadoop三大框架之MapReduce工作流程
  20. springboot2------自定义消息转换器

热门文章

  1. 基于 VPX 总线的工件台运动控制系统研究与开发-DSP+FPGA硬件架构(一)
  2. 【SQLServer】验证身份证号第18位校验码是否合法
  3. iOS导航栏颜色,任务栏颜色
  4. Linux入门的基础知识点大全,有这篇就够了。
  5. 学以致用——Java源码——使用随机几何图形制作屏保程序(Screen Saver with Shapes Using the Java 2D API)
  6. 带你快速看完9.8分神作《Effective Java》—— 类和接口篇
  7. 【解决】开始→运行框中的命令无法记录历史的问题
  8. PCB工艺规范及PCB设计安规原则
  9. 超详细的张飞硬件第七部开关电源读书笔记01
  10. linux命令gw,Linux命令行配置IP、GW、DNS