没有Applecript脚本编写itunes?

时间:2011-01-23 14:46:35

标签: macos scripting itunes

我正在寻找一种使用AppleScript的其他东西编写iTunes脚本的方法。我想大规模操纵曲目的名称和艺术家。使用一些id3工具无济于事,因为据我所知iTunes数据库不会更新,如果我不使用iTunes来操作这些信息。由于我不知道如何使用AppleScript进行编码并且没有时间深入研究这个问题,我想知道:有没有办法使用javascript,lua,bash或php来完成这项任务?

感谢,

2 个答案:

答案 0 :(得分:1)

我建议你学习AppleScript,至少一天。关键是,OS X中的GUI-app间通信是通过Apple Events完成的,其构造遵循其主要语言AppleScript。有许多桥梁允许您从各种语言调用Apple Events,但您需要首先了解Apple Events的概念。所以,至少你需要熟悉AppleScript。

这与Cocoa的情况一样:您可以使用多种语言编写Cocoa应用程序,但大多数文档和概念都基于Objective-C。因此,在使用其他语言编写Cocoa之前,您至少需要熟悉Objective-C。

所以,让我简单介绍一下Apple Events / AppleScript系统。

每个应用程序都实现一个面向对象的系统,并将其作为字典公开给外界,您可以使用AppleScript编辑器阅读它。打开AppleScript编辑器,选择“文件”→“打开字典”,然后选择“iTunes”。在那里,您可以看到这些类中的命令,类,方法列表等。然后,从AppleScript或Ruby或Lua中,您可以访问这些对象和方法。

假设您要将所选的iTunes条目从“A-B”重命名为“B-A”。那么代码就是

set text item delimiters to "-"  
tell application "iTunes"         -- following statements are targeted to iTunes
repeat with entry in selection -- "selection" is a concept implemented in iTunes 
    set s to name of entry      -- copy the name of entry to a local string s
    set x to text items of s    -- split the string s to a list according to text item delimiters
    set y to {item 2 of x, item 1 of x}  -- construct another list
    set name of entry to y as string -- set the name. Note that "as string" adds the delimiters
end repeat
end tell

是的,AppleScript的语法有点奇怪,但它基本上与常规命令式语言一一对应。如果您感到困惑,请参阅the official language guide。没有良好的OSAX(AppleScript的扩展系统)的AppleScript中的文本操作是一件苦差事。因此,我同意首先熟悉AppleScript的概念,然后使用Ruby或任何您喜欢的语言来使用它并不是一个坏主意。

但请记住,在AppleScript编辑器中打开字典,因为这是您找到每个应用程序实现和暴露给系统的地方!

答案 1 :(得分:0)

您可以使用JavaScriptOSA从JavaScript发送Apple Events。但是我建议您调查appscript(Python,Ruby),因为它更新并且支持。