首页 > 编程语言 >按键精灵脚本转python

按键精灵脚本转python

时间:2024-10-14 15:44:36浏览次数:1  
标签:脚本 script python cmd 按键精灵 command file type

import re
import pyautogui
import time

# 定义映射关系
command_map = {
    'MoveTo': 'pyautogui.moveTo',
    'LeftClick': 'pyautogui.click',
    'LeftDown': 'pyautogui.mouseDown',
    'LeftUp': 'pyautogui.mouseUp',
    'KeyDown': 'pyautogui.keyDown',
    'KeyUp': 'pyautogui.keyUp',
    'Delay': 'time.sleep',
    'MouseWheel': 'pyautogui.scroll',
    'Press': 'pyautogui.press'
}

# 定义正则表达式来匹配按键精灵的命令
command_pattern = re.compile(r"(\w+)\s+(.*)")


def parse_command(command):
    match = command_pattern.match(command)
    if match:
        cmd_type = match.group(1)
        args = match.group(2)
        if cmd_type in command_map:
            if cmd_type == 'MoveTo':
                x, y = map(int, args.split(','))
                return f"{command_map[cmd_type]}({x}, {y})"
            elif cmd_type == 'LeftClick':
                return f"{command_map[cmd_type]}()"
            elif cmd_type == 'LeftDown':
                return f"{command_map[cmd_type]}()"
            elif cmd_type == 'LeftUp':
                return f"{command_map[cmd_type]}()"
            elif cmd_type == 'KeyDown':
                key = args.strip().strip('"')
                return f"{command_map[cmd_type]}('{key}')"
            elif cmd_type == 'KeyUp':
                key = args.strip().strip('"')
                return f"{command_map[cmd_type]}('{key}')"
            elif cmd_type == 'Delay':
                delay = float(args) / 1000  # Convert milliseconds to seconds
                return f"{command_map[cmd_type]}({delay})"
            elif cmd_type == 'MouseWheel':
                direction = int(args)
                return f"{command_map[cmd_type]}({direction})"
            elif cmd_type == 'Press':
                key = args.strip().strip('"')
                return f"{command_map[cmd_type]}('{key}')"
    return None


def convert_script(script_lines):
    python_code = []
    for line in script_lines:
        line = line.strip()
        if line:
            python_line = parse_command(line)
            if python_line:
                python_code.append(python_line)
    return python_code


def read_script_file(file_path):
    with open(file_path, 'r', encoding='gbk') as file:
        script_lines = file.readlines()
    return script_lines


def write_python_file(python_code, output_file):
    with open(output_file, 'w', encoding='utf-8') as file:
        file.write("import pyautogui\n")
        file.write("import time\n\n")
        file.write("pyautogui.PAUSE = 0.01\n\n")
        file.write("def run_macro():\n")
        for line in python_code:
            file.write(f"    {line}\n")
        file.write("\nrun_macro()\n")


def main():
    script_file = r'D:\vx_video\我录制的脚本1_202410141542.Q'  # 按键精灵脚本文件路径
    output_file = 'generated_script.py'  # 生成的Python脚本文件路径

    script_lines = read_script_file(script_file)
    python_code = convert_script(script_lines)
    write_python_file(python_code, output_file)


if __name__ == "__main__":
    main()

标签:脚本,script,python,cmd,按键精灵,command,file,type
From: https://www.cnblogs.com/pythonywy/p/18464353

相关文章

  • 按键精灵转python脚本中文输入的问题以及解决办法
    在使用pyautogui进行自动化操作时,如果你想在指定位置输入中文,可能会遇到一些问题,因为pyautogui本身并不直接支持输入非英文字符。不过,你可以通过结合其他库(如pyperclip)来实现输入中文。以下是一个示例代码,展示了如何在指定位置输入中文:importpyautoguiimportpyperclip......
  • 使用 Lua 脚本批量获取制定目录下的所有 Redis 键的值
    /***使用Lua脚本批量获取Redis键的值**@paramprefixRedis中的键列表*@return键对应的值的列表*/public<E>List<E>getAllListValuesByPrefix(Stringprefix,Class<?>classType){//获取所有以给定前缀开头的键Set<String>keys=redisTempl......
  • Python - 正则表达式转义注意事项
    无论哪种语言,在使用正则表达式的时候都避免不了一个问题,就是在匹配元字符的时候,需要对元字符进行转义,让正则表达式引擎将其当做普通字符来匹配。本文主要以python为例,说明一下转义中需要注意的问题。python的正则表达式中需要转义的元字符有以下几个:.^$*+?\\[]|{}()......
  • 38个Python游戏开发库
    1PyGame官网:https://www.pygame.org/docs/概述:Pygame是一组专为编写视频游戏而设计的Python模块。它在优秀的SDL库之上添加了功能。这允许您使用python语言创建功能齐全的游戏和多媒体程序。Pygame具有高度的可移植性,可以在几乎所有平台和操作系统上运行。拓展:对Py......
  • 32个Python图形化界面库
    1wxPython官网:https://wxpython.org/pages/overview/ 概述:wxPython是一个用C++编写的适用于Python的跨平台GUI工具包,它让Python程序员们能够简单、轻松地创建功能强大的图形用户界面的程序。它目前支持的平台包括MicrosoftWindows、MacOSX和macOS,以及Linux或其他具有GT......
  • 【python爬虫案例】利用python爬取B站TOP100热门排行榜附源码
    目录一、爬取目标-B站排行榜二、B站排行榜网站分析三、B站排行榜爬虫代码详解四、B站排行榜结果五、python爬虫源代码获取一、爬取目标-B站排行榜大家好,我是老王!今天给大家分享一期python爬虫案例,这次爬取的对象是:B站热门排行榜数据爬取的目标网址是:https://www.bil......
  • Java与Python的角斗 动画动漫下载 猫和老鼠 爆笑虫子 微观小世界 及时保存以防失效
    在“代码王国”的金色大厅内,一场前所未有的角斗即将拉开序幕。大厅四周镶嵌着由各种算法构成的璀璨宝石,每一颗都闪烁着智慧的光芒,映照着即将上演的较量。爆笑虫子第一季104集合集 第一季1-104.mp4https://www.alipan.com/s/4nLKc6NWdG7提取码:12or点击链接保存,或者复制......
  • python中多线程和多进程的区别
    希望在1分钟内完成500架无人机的路径规划任务,而目前A*算法在50架无人机的情况下需要10秒,意味着在不做优化的情况下处理500架无人机将需要大约100秒,超出你的指标要求。提升计算速度是关键。多线程和多进程是常用的加速方案,但它们在Python中的效果存在差异1、多线程Python的标准......
  • python3 log工具
    python3log工具logutil.py#-*-coding:utf-8-*-importos,sys,tracebackimportloggingfromlogging.handlersimportRotatingFileHandlerimportgetpassdefsingleton(cls):instances={}defget_instance():ifclsnotininstances:......
  • 10.Python 对象(封装、继承、多态、类型注解)
    一、初始对象在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的在程序中设计表格,称之为设计类(class)classStudent:name:None在程序中打印生产表格,称之为创建对象stu1=Student()stu2=Student()在程序中填写表格,称之为对象属性赋值......