Macos 我可以使用Applescript查找当前iTunes媒体位置和其他iTunes选项吗

Macos 我可以使用Applescript查找当前iTunes媒体位置和其他iTunes选项吗,macos,applescript,itunes,Macos,Applescript,Itunes,我可以使用Applescript查找当前iTunes媒体位置和其他iTunes选项吗?当我在脚本编辑器中阅读iTunes Applescript字典时,似乎没有这样的选项,但肯定有办法做到这一点 我以前读到,com.itunes.plist中存储了一些内容,但它不是纯文本,而且我的plist文件在我创建新库时没有更改,因此我不相信它仍然在使用,或者它是否保持最新。媒体位置没有保存在全局itunes首选项文件中。因为您可以有多个库,并且每个库定义自己的媒体位置,所以这实际上保存在库首选项中。默认库

我可以使用Applescript查找当前iTunes媒体位置和其他iTunes选项吗?当我在脚本编辑器中阅读iTunes Applescript字典时,似乎没有这样的选项,但肯定有办法做到这一点


我以前读到,com.itunes.plist中存储了一些内容,但它不是纯文本,而且我的plist文件在我创建新库时没有更改,因此我不相信它仍然在使用,或者它是否保持最新。

媒体位置没有保存在全局itunes首选项文件中。因为您可以有多个库,并且每个库定义自己的媒体位置,所以这实际上保存在库首选项中。默认库位于
~/Music/iTunes/iTunes library.itl
。我不确定这是什么类型的文件。它似乎不是plist/xml文件,也不是sqlite文件。它似乎只是一个专有的二进制文件

在同一个文件夹中,我还找到了
iTunes Music Library.xml
(经过一些测试,该文件现在丢失了,下面请参阅YMMV)。以下是一个截断的示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Major Version</key><integer>1</integer>
    <key>Minor Version</key><integer>1</integer>
    <key>Application Version</key><string>12.3.3.17</string>
    <key>Date</key><date>2016-04-14T19:35:27Z</date>
    <key>Features</key><integer>5</integer>
    <key>Show Content Ratings</key><true/>
    <key>Library Persistent ID</key><string>1AEAB6C2057C2167</string>
    <key>Tracks</key>
    <dict>
    </dict>
    <key>Playlists</key>
    <array>
    </array>
    <key>Music Folder</key><string>file:///Users/<username>/Music/iTunes/iTunes%20Media/</string>
</dict>
</plist>

主要版本1
小版本1
应用程序版本12.3.3.17
日期2016-04-14T19:35:27Z
特点5
显示内容分级
库持久性ID1AEAB6C2057C2167
轨道
播放列表
音乐Folderfile:///Users//Music/iTunes/iTunes%20Media/

注意键
音乐文件夹
。这是您查找库的媒体位置所需的设置。还有一些库设置,如播放列表和曲目信息列表。

是的,@PaulTaylor,您可以使用Apple提供的文件在AppleScript中获取当前用户的媒体文件夹位置​iTunes​图书馆框架。(文档位于)

下面是一个可以执行此操作的应用程序脚本:

use AppleScript version "2.4" -- Yosemite (10.10) or later

use framework "iTunesLibrary"

set lib to current application's ITLibrary's libraryWithAPIVersion:"1.0" |error|:(missing value)

set mediaFolderPath to POSIX path of (lib's mediaFolderLocation as alias)

--> "/Volumes/LaCie 6/iTunes Library/"

您想将文件显示给正在播放的歌曲,还是想以其他方式使用文件夹位置?@oa与当前播放的歌曲无关(如果有)我想知道当前媒体文件夹位置的路径,也就是说,如果我向iTunes添加了一首新歌,并且iTunes配置为将媒体文件复制到哪里。您指的是什么“其他iTunes选项”?@NicolasRiley“保持iTunes媒体文件夹有序”和“添加到库时将文件复制到iTunes媒体文件夹”选项不幸的是,iTunes Music library.xml现在已被禁用可选,取决于用户偏好“与其他应用程序共享iTunes库Xml”,默认为false,但无论如何,谢谢你,我没有意识到它实际上存储在这个文件中。因此,它必须存储在itl文件中,但似乎无法对其进行解码。@PaulTaylor说,有一个java项目可以读取.itl文件。听起来它还没有完全开发出来,会给你增加很多额外的依赖性,但看起来这是获得你想要的文件路径的唯一选择。有趣的是,因此,我认为这也可以用来找出iTunes库中的内容,而不必像我目前使用以“告诉应用程序”iTunes开头的applescript代码那样启动iTunes。我想知道它会更快,如果它也适用于Windows。