Ottenere il percorso del file di una traccia iTunes attualmente in riproduzione con Applescript

3

Ho un programma Applescript che funziona molto bene per ottenere la maggior parte delle informazioni di una traccia in riproduzione in una serie di variabili nominate:

tell application "System Events"
    if application process "iTunes" exists then
        tell application "iTunes"
            set state to player state
            if state = playing
                tell current track
                    set theArtist to artist
                    set theTitle to name
                    set theAlbum to album
                    set theTime to time
                    set theGrouping to grouping
                    set theGenre to genre
                    set theKind to kind
                    set theYear to year
                    set theComments to comment
                    set playCount to played count
                    set theTrack to track number
                    set numTracks to track count
                    set theDisc to disc number
                    set numDiscs to disc count
                    set bitRate to bit rate
                end tell
            else
                set state to "none"
            end if
        end tell
    else
        set state to "none"
    end if
end tell

Ma sono completamente sconcertato su come ottenere il percorso del file attuale della traccia corrente. La libreria Applescript per iTunes ha una voce "traccia file" che ha un elemento "posizione", ma non sono stato in grado di capire come usarlo in questo contesto. Qualsiasi aiuto sarebbe molto apprezzato.

    
posta Charles Johnson 03.09.2017 - 02:51
fonte

2 risposte

1

Non hai bisogno di Eventi di sistema, iTunes può dire se è in esecuzione o meno.

Inoltre, imposta le proprietà di current track a una variabile e quindi ottieni le informazioni dalla variabile . La ragione di ciò è che fai solo una chiamata di livello inferiore (properties of current track) e poi l'assegnazione delle altre variabili ottiene le informazioni da una variabile contenente tutte le informazioni, e non effettuare 15 chiamate di livello inferiore separate per ottenere le informazioni, Questo dovrebbe essere il codice più veloce e più efficiente.

tell application "iTunes"
    if running then
        set state to player state
        if state = playing then
            set trackProperties to (properties of current track)
            set theArtist to artist in trackProperties
            set theTitle to name in trackProperties
            set theAlbum to album in trackProperties
            set theTime to time of trackProperties
            set theGrouping to grouping in trackProperties
            set theGenre to genre in trackProperties
            set theKind to kind in trackProperties
            set theYear to year of trackProperties
            set theComments to comment in trackProperties
            set playCount to played count in trackProperties
            set theTrack to track number in trackProperties
            set numTracks to track count in trackProperties
            set theDisc to disc number in trackProperties
            set numDiscs to disc count in trackProperties
            set bitRate to bit rate in trackProperties
            try
                set thePath to POSIX path of (get location of current track)
            on error
                set thePath to "Not playing from local library."
            end try
        else
            set state to "none"
        end if
    else
        set state to "none"
    end if
end tell
    
risposta data 03.09.2017 - 03:48
fonte
0

Questo funziona per me sull'ultima versione di Sierra

tell application "iTunes" to POSIX path of (get location of current track)
tell application "iTunes"
    set fileLocation to POSIX path of (get location of current track)
end tell
tell application "System Events"
    if application process "iTunes" exists then
        tell application "iTunes"
            set state to player state
            if state = playing then
                set fileLocation to POSIX path of (get location of current track)
                tell current track
                    set theArtist to artist
                    set theTitle to name
                    set theAlbum to album
                    set theTime to time
                    set theGrouping to grouping
                    set theGenre to genre
                    set theKind to kind
                    set theYear to year
                    set theComments to comment
                    set playCount to played count
                    set theTrack to track number
                    set numTracks to track count
                    set theDisc to disc number
                    set numDiscs to disc count
                    set bitRate to bit rate
                end tell
            else
                set state to "none"
            end if
        end tell
    else
        set state to "none"
    end if
end tell
    
risposta data 03.09.2017 - 03:20
fonte

Leggi altre domande sui tag