Доступ к названию дорожки в iTunes через файл plist (XML) iTunes
Я узнал, что файл iTunes XML на самом деле является списком, и вместо того, чтобы пытаться анализировать необработанный XML, я мог бы использовать списки свойств.
Я могу получить доступ к разделу "Треки", но не могу ничего сделать, например, извлечь название трека. По общему признанию, я немного спотыкаюсь, но этот код я получил до сих пор:
tell application "System Events"
tell property list file property_file
tell contents
set my_tracks to value of property list item "Tracks"
repeat with t in my_tracks
set theName to value of property list item "Name" of t
display dialog theName
end repeat
end tell
end tell
end tell
Любые указатели относительно того, что я делаю неправильно?
Если это поможет, пример XML:
<?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>9.0.2</string>
...
<dict>
<key>2471</key>
<dict>
<key>Name</key><string>Check The Rhime</string>
<key>Artist</key><string>A Tribe Called Quest</string>
...
</dict>
<key>2473</key>
<dict>
<key>Name</key><string>A Short History of Nearly Everyth
ing (Unabridged), Part 1</string>
<key>Artist</key><string>Bill Bryson</string>
...
</dict>
1 ответ
Когда вы делаете value of property list item
AppleScript преобразует все это в собственное значение AppleScript; в этом случае значение является записью. Таким образом, вам просто нужно немного подправить внутреннюю часть:
property property_file : ¬
(POSIX path of (path to home folder) & ¬
"Music/iTunes/iTunes Music Library.xml")
tell application "System Events"
tell property list file property_file
tell contents
set my_tracks to value of property list item "Tracks"
repeat with t in items of my_tracks
display dialog (|Name| of t)
end repeat
end tell
end tell
end tell
дела items of my_tracks
выдает список значений записи; |Name| of t
это просто доступ к записи. К сожалению, выполнение этой plist-обработки кажется очень медленным, поскольку XML-файл очень большой.