Есть ли мост Swift для Python? - PullRequest
       20

Есть ли мост Swift для Python?

0 голосов
/ 11 февраля 2020

Я разработал скрипт для установки атрибутов для моей библиотеки iTunes musi c на моей Ma c, используя мост Apple Script под названием AppScript . AppScript Позволил мне написать свой код на родном Python без необходимости изучать Apple Script. AppSript переведет мой родной Python в Apple Script. Поскольку Apple Script был заменен на Swift, мне интересно, существует ли аналогичный мост для Swift. Я сделал свое исследование, но не повезло. Кроме того, если есть, можете ли вы привести пример того, как управлять iTunes (теперь Musi c) с помощью указанной библиотеки? Заранее спасибо

1 Ответ

1 голос
/ 14 февраля 2020

Swift разработан для использования API-интерфейсов программирования MacOS: AppKit, Quartz, CoreFoundation, NSObject и т. Д. c, а не управляемых событиями элементов более высокого уровня OSAX ( open, print, close , document, window, et c), используемый в AppleScript.

Система python (2.7) в комплекте поставляется с pyObj C, что позволяет python использовать то же самое программирование API, которые делает Swift, например, «написание приложений». PyObj C также содержит скриптовый мост для событий и объектов AppleScript. канонический пример кода действительно использует iTunes:

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

(Обс, это python2, и вам нужно заключить в скобки команду печати. ​​Также лично я не будет import * всего, так как он очень медленный.)

Вот некоторые другие методы / атрибуты, основанные на словаре сценариев:

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

Системная версия pyObj C очень старый, но сама библиотека все еще находится в стадии разработки. Если вы используете python3, то вам следует установить последнюю версию pyObj C.

FWIW, вы можете запустить некомпилированный Swift как «скрипт» в оболочке .

...