0

iTunes XML ファイルは実際には plist であり、生の 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>
4

1 に答える 1

2

を実行すると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単なる記録アクセスです。残念ながら、XML ファイルが非常に大きいため、この plist の処理は非常に遅いようです。

于 2010-01-02T08:27:22.633 に答える