3 votos

Obtención de la ruta del archivo de una pista de iTunes que se está reproduciendo actualmente con Applescript

Tengo un programa Applescript que funciona muy bien para obtener la mayor parte de la información de una pista en reproducción en una serie de variables con nombre:

 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
 

Pero estoy completamente desconcertado sobre cómo obtener la ruta del archivo actual de la pista actual. La librería Applescript para iTunes tiene una entrada de "pista de archivo" que tiene un elemento "ubicación", pero no he podido averiguar cómo usarlo en este contexto. Cualquier ayuda sería muy apreciada.

1voto

user3439894 Puntos 5883

Usted no necesita Sistema de Eventos, iTunes puede saber si está funcionando o no.

También, establecer las propiedades de current track a una variable y, a continuación, obtener la información de la variable. La razón de esto es que hace sólo un nivel inferior de la llamada (properties of current track) y, a continuación, la asignación de las otras variables se obtiene la información de una variable que contiene toda la info, y no hacer 15 separadas llamadas de bajo nivel para obtener la información, Esta debe ser más rápido y más eficiente de código.

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

0voto

wch1zpink Puntos 11

Esto funciona para mí en la última versión de 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
 

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X