2017-01-13 14 views
3

Могу ли я использовать Applescript, чтобы найти текущее местоположение медиа iTunes и другие параметры iTunes. Кажется, что такие параметры отсутствуют, когда я читаю словарь iTunes Applescript в Script Редактор, но, конечно, есть способ сделать это.Могу ли я использовать Applescript, чтобы найти текущее местоположение медиаплеера iTunes и другие параметры iTunes

В прошлом я читал, что что-то хранится в com.itunes.plist, но его не открытый текст и мой файл plist не изменились, когда я создал новую библиотеку, поэтому я не убежден, что она по-прежнему используется, или если она сохраняется своевременно.

+0

Вы хотите, чтобы открыть файл в песне, которая играет, или вы хотите использовать папку по-другому? –

+0

@oa Ничего общего с воспроизводимой в данный момент песней (если есть) Я хочу знать путь к текущему местоположению медиа-папки, то есть, если я добавлю новую песню в iTunes, и у меня есть iTunes для копирования медиафайлов, где она будет копироваться файл. –

+0

Какие еще варианты iTunes вы имеете в виду? –

ответ

0

Местоположение носителя не сохраняется в глобальном файле настроек 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> 

Обратите внимание на ключ Music Folder. Это настройка, которую вы ищете, чтобы найти место в медиатеке библиотеки. Также есть некоторые настройки библиотеки, такие как список плейлистов и информация о треке.

+0

К сожалению, iTunes Music Library.xml теперь является необязательным в зависимости от предпочтений пользователя «Поделиться iTunes LIbrary Xml с другими приложениями», который по умолчанию имеет значение false, но, в любом случае, я не понял, что он был фактически сохранен в этом файле. Поэтому он должен быть сохранен в файле itl, но не может его декодировать. –

+0

@PaulTaylor В соответствии с [этим ответом] (http://stackoverflow.com/a/2888005/2348587) есть java-проект в [google code] (http://code.google.com/p/titl/) для чтения .itl-файлов. Похоже, что он не полностью разработан и добавит много дополнительной зависимости для вас, но похоже, что это единственный вариант, который можно получить, чтобы получить нужный путь к файлу. –

+0

Я пробовал это, и он не работал для меня :( –

1

Да, @PaulTaylor, вы можете найти местоположение медиа-папки текущего пользователя в AppleScript, используя предоставленную Apple инфраструктуру iTunes Library. (Документация на iTunesLibrary at Apple)

Вот рабочий AppleScript, чтобы сделать это:

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/" 
+0

Интересно, так что я прав, думая, что это также можно использовать, чтобы узнать, что есть в библиотеке iTunes, фактически не запустив iTunes, как я это делаю с моим текущим кодом приложения, который начинается с «скажите приложение« iTunes ». Интересно, что это будет быстрее, и если оно также будет доступно для Windows. –