Доступ к названию дорожки в 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 itemAppleScript преобразует все это в собственное значение 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-файл очень большой.

Другие вопросы по тегам