如何使用脚本在 iTunes 10 中创建 Genius 播放列表?

如何使用脚本在 iTunes 10 中创建 Genius 播放列表?

我想创建一个脚本,根据当前播放的曲目启动一个新的 Genius 播放列表,以供 LaunchBar 使用。遗憾的是,iTunes 不向 AppleScript 公开任何与 Genius 相关的功能,这让事情变得很困难。

我搜索了网络并找到了几个解决方案,这些解决方案涉及手动在 iTunes UI 中查找按钮并调用点击事件(例子),但它们无法在 iTunes 10 中运行,并且我的 AppleScript-fu 还不够强大,无法调试它们。

有没有办法从 iTunes 应用程序之外启动 Genius 播放列表?其他方法(如 Automator 工作流程或 shell 脚本)也完全可以接受。

答案1

经过一些实验,我想我找到了解决方案。

tell application "System Events"
-- click the genius button on the currently playing track at top
    click button 14 of window "iTunes" of application process "iTunes"
end tell

通过更多的实验,我发现了以下几点:

  • 按钮 1-3 是左上角的“红绿灯”
  • 按钮 4-7 是左下角的按钮,添加播放列表、随机播放、重复、关闭艺术品。
  • 按钮 8 似乎是屏幕右下角的天才按钮(关闭!),将适用于当前选定的曲目。我猜你想为当前播放的曲目设置天才按钮……
  • 按钮 9 是右侧的天才窗格。
  • 按钮 10-12 是倒带、播放/暂停、前进。
  • 按钮 13 是均衡器。
  • 按钮 14 是天才按钮!(您想要的按钮)
  • 按钮 15 用于选择(并转到)曲目。
  • 按钮 16-19 是各种“查看”按钮
  • 按钮 20 为零音量。
  • 按钮 21 是最大音量。
  • 按钮22错误!

就是这样。感谢您提出这个问题,这种见解将有助于各种脚本编写想法。:)

编辑:

好的,对字典进行进一步的研究后,我得到了这个想法:

tell application "System Events"
    set button_count to count every button of window "iTunes" of application process "iTunes"
    repeat with i from 1 to button_count
        set button_description to accessibility description of button i of window "iTunes" of application process "iTunes"
        if button_description is "genius" then
            set x to i
        end if
    end repeat
    if enabled of button x of window "iTunes" of application process "iTunes" then
        click button x of window "iTunes" of application process "iTunes"
    end if
end tell

它的作用是循环浏览 iTunes 窗口的所有按钮并检查按钮的可访问性描述。不出所料,天才按钮的描述为“天才”。

在某些视图中,有两个天才按钮,一个用于当前播放的歌曲,一个用于所选歌曲。脚本将始终选择两个按钮中最新的一个,即当前播放的歌曲。因此,此 AppleScript 将检查天才按钮是否已启用,然后单击它。

如果当前没有正在播放的歌曲,但有选定的歌曲,则会出现一个天才按钮,该按钮将被启用并被点击。如果没有正在播放或选定的歌曲,则不会点击天才按钮。

我认为这是您想要的功能!如果它对您有用,请告诉我。

相关内容