【问题标题】:Searching for a track on iTunes在 iTunes 上搜索曲目
【发布时间】:2011-02-14 16:25:55
【问题描述】:

我想在 Mac OS/X 上使用 Python 脚本搜索 iTunes 上的曲目。我找到了一种通过以下方式访问 iTunes 应用程序的方法:

iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")

但我还没有弄清楚(还)执行搜索的方法。一点帮助表示赞赏。

免责声明:这里是 OS/X 新手。

注意:我不是在寻找直接访问 XML/plist 数据库的方法。

【问题讨论】:

标签: python macos scripting itunes


【解决方案1】:

这可能是无用的答案,但我建议您使用 AppleScript 而不是 Python。 看看这段代码:

tell application "iTunes"
 repeat with bTrack in (every track of playlist 7 whose artist contains "Golden")
...

完美的教程可以在这里找到:http://macscripter.net/viewtopic.php?id=25631

【讨论】:

  • 谢谢,但我宁愿坚持使用 Python。
  • 和使用 SBApplication 的 python 使用 Applescript 的相同调用,所以它只是一种不同的语法
【解决方案2】:

您可能想查看appscript(注意,您需要 ASDictionary 来获得在线帮助):

>>> import appscript
>>> iTunes = appscript.app("iTunes")
>>> lib = iTunes.playlists['Library']
>>> for trk in lib.tracks():
...     if re.search("test", trk.name()):
...         print trk.name()

这可能通过迭代每个项目为您提供最大的控制权,但也有一种更快的方法,即使用 applescript 挂钩进行搜索:

>>> trks = lib.tracks[appscript.its.name.contains('test')]
>>> print trks.name()

也可以查看这些 appscript usage examples。

【讨论】:

  • 没问题。我没有注意到前面提到的 objc 答案,但我怀疑这可能会提供更方便的 API 来访问可编写脚本的应用程序。文档有点稀疏,但是一旦您了解了 appscript 的结构,查看一个 applescript 示例并翻译如何使用 appscript 进行操作并不难。
【解决方案3】:

你怎么看:


script = '''tell application "iTunes"
  repeat with bTrack in (every track of playlist 7 whose artist contains "Golden")
    print bTrack
  end repeat
end tell'''
tracks,_ = subprocess.Popen("osascript -e %s" % script, stdout=subprocess.PIPE).communicate()
trackList = tracks.split('\n')

不过,我从未测试过这个......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多