Sve*_*don 5 python shell platypus
我使用 Platypus 创建了一个简单的应用程序,它运行以下 shell 脚本:
cd
if [ -e /Applications/Music.app/Contents/Resources/Music.py ]; then
export PATH=$PATH:/Applications/Music.app/Contents/Resources
cd "/Applications/Music.app/Contents/Resources"
EXTENSION=`osascript -e 'tell application (path to frontmost application as text) to display dialog "Do you want to enable extensions during this session?" buttons {"Yes", "No"} with icon file "Applications:Music.app:Contents:Resources:alert.icns"'`
if [ "$EXTENSION" == "button returned:Yes" ]; then
python Music.py arg1 >> music.txt &
else
python Music.py arg2 >> music.txt &
fi
else
osascript -e 'tell application (path to frontmost application as text) to display dialog "Please move this application into your native applications folder (/Applications)." buttons {"OK"} with icon stop'
osascript -e 'quit app "Music.app"'
fi
Run Code Online (Sandbox Code Playgroud)
“Music.py”脚本在无限循环中运行,不断选择大约 80 个 URL 之一以使用 chromedriver 在 Selenium 上加载。每个 URL 都会加载一首特定的歌曲,当歌曲播放完毕时,Python 脚本会在可能的歌曲 URL 数组中随机选择另一个位置并加载相应的歌曲(因此它基本上会随机播放给定的播放列表)。
可以使用 暂停播放kill -STOP [pid]并使用 继续播放kill -CONT [pid]命令恢复播放。但是,我希望能够通过单击 Mac 扩展坞上的“Music.app”图标(将此应用程序带到前台并确保它接收所有击键)并使用键盘快捷键来暂停它。
经过一些实验,我发现通过运行命令:
bind '"^P":"ID_PARENT=`pgrep chromedriver` && ID_CHILD=`pgrep -P $ID_PARENT` && echo $ID_CHILD && kill -STOP $ID_CHILD\n"'
bind '"^R":"ID_PARENT=`pgrep chromedriver` && ID_CHILD=`pgrep -P $ID_PARENT` && echo $ID_CHILD && kill -CONT $ID_CHILD\n"'
Run Code Online (Sandbox Code Playgroud)
在我的普通命令行中,我可以分别使用 Ctrl + P 和 Ctrl + R 暂停和恢复该过程。然而,当我在 shell 脚本的开头添加这些行时,键盘快捷键仍然没有在应用程序中执行任何操作(击键实际上并未在 shell 脚本中注册)。虽然我可以使用默认命令行暂停/播放音乐,但我的目标是创建一个用户友好且完全可移植的应用程序,并且我希望用户可以完全操纵程序,而无需与除应用程序本身之外的任何内容进行交互。
所以,我的问题是,如何将这些键盘快捷键添加到应用程序本身(由 Platypus.app 创建,本质上只是运行 shell 脚本)?我正在使用 MacOS High Sierra 10.3.5,如果这很重要的话。一般来说,我对编程绝对是新手,对 shell 没有太多经验,以前从未使用过 Platypus.app,所以我对此不熟悉,不知道我想要的是否真的可能。任何帮助表示赞赏。
谢谢!