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

 

实现的主要功能

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

本文是作者去年在慕课网所发表的


作者:山木_HK
链接:https://www.imooc.com/article/26906
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作

你可能感兴趣的:(python:))