栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

通过微信文件助手远程控制电脑及实现微信聊天机器人

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过微信文件助手远程控制电脑及实现微信聊天机器人

实现的主要功能
1.通过微信文件助手控制电脑关机、重启及查询微信控制程序是否启动
2.通过微信文件助手实现微信聊天机器人功能
3.控制电脑播放音乐,包括播放指定音乐、下一首、停止播放的基本功能
主要涉及的知识
1.python基础语法
2.python实现微信接口的itchat模块
3.正则表达式
4.图灵机器人的使用 
import itchat
import os
import re
import time
import shortuuid
import requests
import random
通过微信文件助手控制电脑关机、重启及查询微信控制程序是否启动
直接在微信文件助手中发送:状态、关机、重启即可实现具体功能。
toUser = msg['ToUserName']     #获取信息发送者的名称
     content = msg['Content']   #获取所发送的信息

     if toUser == 'filehelper' and content == '状态':
  itchat.send('#在线#',toUserName = 'filehelper')
     if toUser == 'filehelper' and content == '关机':
  os.system("shutdown -s -t 0")
     if toUser == 'filehelper' and content == '重启':
  os.system("shutdown -r -t 0")
通过微信文件助手实现微信聊天机器人功能
发送给机器人的信息必须以#开头以辨别信息是发送给机器人的,这涉及了python正则表达式的运用。
此外还涉及了图灵机器人的使用,使用前必须注册    链接:http://www.tuling123.com/
message = msg['Content']  # 获取微信文件助手发送过来的信息
     tousername = msg['FromUserName']
     path1 = '#.*'
     flag0 = re.search(path1,content)
     if toUser == 'filehelper' and flag0 != None:
  fmessage_path = '#(.*)'
  fmessage = re.compile(fmessage_path).findall(content)
  url = 'http://www.tuling123.com/openapi/api'
  data = {
      'key': '9d05b70c91dc4c8da53588347e9e4224',
      'info': fmessage[0],
      'userid': shortuuid.uuid()
  }
  response = requests.post(url, data=data)  # 获取请求
  r_message = response.json()['text']  # 返回的信息
  itchat.send('########################' + r_message + 'n########################', toUserName = 'filehelper')
  time.sleep(0.5)
控制电脑播放音乐,包括播放指定音乐、下一首、停止播放的基本功能
music_dir是我音乐存放的路径,该路径有具体情况而定
通过结束Windows.Media.BackgroundPlayback.exe进程达到停止播放的目的
向微信文件助手发送播放音乐、播放下一首、停止播放即可实现具体功能,播放指定音乐中播放与音乐名称之间有一个空格:播放 [指定音乐名称]
播放指定音乐时可不需要写完全名,程序会根据发送的信息从所有音乐中进行具体字段匹配
 music_dir = 'D:Music'
     music_list = os.listdir(music_dir)  #获取目标目录下的文件及目录名并存放于music_list的列表中
     if toUser == 'filehelper' and content == '播放音乐':
  music_path = music_dir + '\' + music_list[0]     #默认播放第一首
  os.system(music_path)  #打开相应的MP3文件
     #匹配以m开头的字符串
     s_path = '播放 .*'
     flag = re.search(s_path,str(content))  #字符串匹配,匹配不成功返回None
     if toUser == 'filehelper' and flag != None:
  name_path = '播放 (.*)'    #用于匹配歌曲名称
  name = re.compile(name_path).findall(content)    #得到的name是一个列表
  name_path = '.*' + name[0] + '.*'
  music_yn,k = None,None     #第一个用来判断是否查找到歌曲名称,第二个为True时说明列表中找不到歌曲
  i = 0
  while(music_yn == None and k == None):
music_yn = re.search(name_path,music_list[i])   #找到后便退出此时i+1的位置即为歌曲所在位置(下标)
i += 1
if i == (len(music_list) - 1):   #找不打歌曲名称,停止循环遍历查找
    k = True
  music_path = music_dir + '\' + music_yn.group()  #将字符串组合成相应的路径以打开MP3文件
  try:
      os.system(music_path)  #打开相应的MP3文件
  except OSError:
      print("OSError !!")

     #播放下一首音乐,随机播放下一首
     if toUser == 'filehelper' and content == '播放下一首':
  name1 = random.choice(music_list)  #从music_list列表中随机选取一个值,在这里name1被赋予的是一个字符串
  music_path1 =  music_dir + '\' + name1
  os.system(music_path1)

     #停止播放音乐
     if toUser == 'filehelper' and content == '停止播放':
  os.system('taskkill /f /im "Windows.Media.BackgroundPlayback.exe"')
完整代码
import itchat
import os
import re
import time
import shortuuid
import requests
import random

@itchat.msg_register(itchat.content.TEXT)
def remote_control(msg):
     toUser = msg['ToUserName']     #获取信息发送者的名称
     content = msg['Content']   #获取所发送的信息

     if toUser == 'filehelper' and content == '状态':
  itchat.send('#在线#',toUserName = 'filehelper')
     if toUser == 'filehelper' and content == '关机':
  os.system("shutdown -s -t 0")
     if toUser == 'filehelper' and content == '重启':
  os.system("shutdown -r -t 0")
     #文件助手机器人
     message = msg['Content']  # 获取微信文件助手发送过来的信息
     tousername = msg['FromUserName']
     path1 = '#.*'
     flag0 = re.search(path1,content)
     if toUser == 'filehelper' and flag0 != None:
  fmessage_path = '#(.*)'
  fmessage = re.compile(fmessage_path).findall(content)
  url = 'http://www.tuling123.com/openapi/api'
  data = {
      'key': '9d05b70c91dc4c8da53588347e9e4224',
      'info': fmessage[0],
      'userid': shortuuid.uuid()
  }
  response = requests.post(url, data=data)  # 获取请求
  r_message = response.json()['text']  # 返回的信息
  itchat.send('########################' + r_message + 'n########################', toUserName = 'filehelper')
  time.sleep(0.5)

     # 远程控制计算机播放音乐
     music_dir = 'D:Music'
     music_list = os.listdir(music_dir)  #获取目标目录下的文件及目录名并存放于music_list的列表中
     if toUser == 'filehelper' and content == '播放音乐':
  music_path = 'D:Music' + '\' + music_list[0]     #默认播放第一首
  os.system(music_path)  #打开相应的MP3文件
     #匹配以m开头的字符串
     s_path = '播放 .*'
     flag = re.search(s_path,str(content))  #字符串匹配,匹配不成功返回None
     if toUser == 'filehelper' and flag != None:
  name_path = '播放 (.*)'    #用于匹配歌曲名称
  name = re.compile(name_path).findall(content)    #得到的name是一个列表
  name_path = '.*' + name[0] + '.*'
  music_yn,k = None,None     #第一个用来判断是否查找到歌曲名称,第二个为True时说明列表中找不到歌曲
  i = 0
  while(music_yn == None and k == None):
music_yn = re.search(name_path,music_list[i])   #找到后便退出此时i+1的位置即为歌曲所在位置(下标)
i += 1
if i == (len(music_list) - 1):   #找不打歌曲名称,停止循环遍历查找
    k = True
  music_path = music_dir + '\' + music_yn.group()  #将字符串组合成相应的路径以打开MP3文件
  try:
      os.system(music_path)  #打开相应的MP3文件
  except OSError:
      print("OSError !!")

     #播放下一首音乐,随机播放下一首
     if toUser == 'filehelper' and content == '播放下一首':
  name1 = random.choice(music_list)  #从music_list列表中随机选取一个值,在这里name1被赋予的是一个字符串
  music_path1 =  music_dir + '\' + name1
  os.system(music_path1)

     #停止播放音乐
     if toUser == 'filehelper' and content == '停止播放':
  os.system('taskkill /f /im "Windows.Media.BackgroundPlayback.exe"')

def main():
    itchat.auto_login(hotReload = True)    #登陆微信
    itchat.run()

if __name__ == '__main__':
    main()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/223683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号