Python 有 Swift 桥接吗?

Is there a Swift bridge for Python?

我使用名为 AppScript 的 Apple Script 桥开发了一个脚本来为我的 Mac 上的 iTunes 音乐库设置属性。 AppScript 让我可以用原生 Python 编写代码,而无需学习 Apple Script。 AppSript 会将我的原生 Python 翻译成 Apple Script。由于 Apple Script 已被 Swift 取代,我想知道 Swift 是否有类似的桥梁。我已经完成了我的研究,但没有运气。此外,如果有,您能否提供一个示例,说明如何使用上述库控制 iTunes(现在是音乐)?提前致谢

Swift 旨在使用 MacOS 的编程 API:AppKit、Quartz、CoreFoundation、NSObject 等,而不是更高级别的 OSAX 事件驱动元素(打开、打印、关闭、文档、window、 等)在 AppleScript 中使用。

系统捆绑的 python (2.7) 附带 pyObjC,它允许 python 使用与 Swift 相同的编程 API,例如"writing apps"。 PyObjC 还包含一个 AppleScript 事件和对象的脚本桥。 canonical example code 确实使用 iTunes:

from Foundation import *
from ScriptingBridge import *
iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")
print iTunes.currentTrack().name()

(Obvs,这是 python2,你需要在打印命令两边加上括号。另外,就我个人而言,我不会 import * 一切,因为它非常慢。)

以下是一些其他 methods/attributes 基于脚本字典的内容:

iTunes.nextTrack()
iTunes.previousTrack()
iTunes.playpause()
iTunes.fastForward()
iTunes.setShuffleEnabled_(False)
iTunes.currentPlaylist().playOnce_(False)

pyObjC 的系统捆绑版本很旧,但库本身仍在开发中。如果您正在使用 python3,那么您应该安装 pyObjC 的 latest version

FWIW,您实际上可以 运行 未编译 Swift 作为 shell.

中的 'script'