[脚本] 通过键盘自动输入,解决学xi通禁止粘贴的问题

效果演示:

源码地址:

https://github.com/Z-MiCTrue/Auto_Stuendticon-default.png?t=N3I4https://github.com/Z-MiCTrue/Auto_Stuendt

问题描述:

很多时候在学xi通里提交作业时会提示禁止粘贴,甚是麻烦:

 于是写了这个脚本,直接将指定文本通过虚拟键盘输入答题框。以帮助大家高效学习。

程序流程:

从txt读取文本为字符串 -> 通过分词库jieba将中文字符串切分成词组列表 -> 通过拼音库xpinyin将词组转化为拼音 -> 通过pyautogui以及中文输入法依次将答案输入答题框

库依赖:

  • pyautogui
  • jieba
  • xpinyin

源代码:

import sys
import time
import unicodedata

import pyautogui
import jieba
from xpinyin import Pinyin


# 倒数计时并打印
def countdown(total_time: int):
    for t in range(total_time):
        r = '\rcountdown: %ds [%s%s]' % ((total_time - t), '=' * (total_time - t), ' ' * t)
        sys.stdout.write(r)
        time.sleep(1)
        sys.stdout.flush()
    print('\nstart to work')


# 读取txt数据
def txt2str(filename):
    with open(filename, 'r', encoding='utf-8') as cache_data_txt:
        cache_data = cache_data_txt.read()
    return cache_data


# 自动输入函数
def auto_key(words: str):
    pinyin = Pinyin()
    countdown(5)  # 倒计时缓冲
    words_list = ('#'.join(jieba.cut(words)).split('#'))  # 将中文字符串切分成词组 list
    for char in words_list:
        if char not in list('(,。、:——;)'):
            char = pinyin.get_pinyin(char, '')  # 将词组转化为拼音
        else:
            char = unicodedata.normalize('NFKC', char)  # 将标点转化为u英文
        char = list(char)
        for key_input in char:
            pyautogui.keyDown(key_input)  # 依次将拼音键入
        time.sleep(0.1)
        pyautogui.keyDown(' ')  # 键入空格选定词组
    print('finish')


if __name__ == '__main__':
    all_words = txt2str('source.txt')
    auto_key(all_words)

其它说明

1. 程序开始前有 5s 的缓冲时间,以确保运行时光标已处于要输入的文本框内;

2. 输入文本与源文本最终存在一定差异,而该差异取决于本地输入法的智能程度,同时分词库 jieba 的引入正是为了通过词组的输入尽可能提高转化成拼音后的唯一性。输入完成请对个别错误进行修改;

3. 请将需要输入的源文本粘贴进 source.txt 中,程序将从该文件读取文本并自动输入;

如果没有路,就用 Python 走出一条路!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值