AutoHotKey调用Python代码-有时无法正常工作

时间:2019-03-14 23:28:14

标签: python youtube autohotkey

我正在尝试从AHK调用Python代码来处理剪贴板上的YouTube成绩单,删除这些时间戳,将其融合为一个字符串,然后用新的处理后的字符串替换原始文本,以便我可以粘贴出来。

AHK代码:

^x::

clipboard =   
Send, ^c

Run "directory\try.py"

Return

Python代码(try.py):

import pyperclip 

content = pyperclip.paste()
lines = content.split('\r\n')

new_lines = []
for line in lines: 
    for i,x in enumerate(line):
        if x.isalpha():
            position = i 
            break 
    new_line = line[position:]
    new_lines.append(new_line)

# print('Preview', '\n', ' '.join(new_lines))
pyperclip.copy(' '.join(new_lines))

有时该系统可以运行,但有时却不能。有时,当它不起作用时,如果我回到YouTube页面并再次按ctrl + x,它会起作用。我很确定问题出在AHK部分,因为我几个月来一直在手动使用Python代码,而没有任何错误。感谢任何人都可以提供帮助。

1 个答案:

答案 0 :(得分:3)

是的。 AHK太快了。剪贴板内容需要时间。一探究竟。这样做是这样的:

grep author

您甚至可能需要增加一些睡眠时间:

; Using ClipWait to improve script reliability:
clipboard =  ; Start off empty to allow ClipWait to detect change
Send, ^c
ClipWait ; Wait for the clipboard to contain text.
Run "directory\try.py"

或者更好,尝试这样(使用; Using ClipWait to improve script reliability: clipboard = ; Start off empty to allow ClipWait to detect change Sleep, 50 ; milliseconds Send, ^c ClipWait ; Wait for the clipboard to contain text. Sleep, 150 ; milliseconds Run "directory\try.py" 函数):

OnClipboardChange

您可以注释掉结尾OnClipboardChange("ClipChanged") return ^x:: Send, ^c return ClipChanged(Type) { MsgBox "%Clipboard%" ; comment out if working well run "directory\try.py" ExitApp } ,但ExitApp不仅会触发它,而且每次剪贴板更改时(因此,如果您自己击^x,您都将需要某种方式)退出命令,例如control+c等。

Hth !!