Como posso exibir o tempo restante de uma música do Spotify na minha Touch Bar?

Como posso exibir o tempo restante de uma música do Spotify na minha Touch Bar?

Atualmente, estou usando o BetterTouchTool (BTT) para automatizar tarefas. Eu queria fazer um script que exibisse o tempo restante de uma música (no formato MM: SS) como um rótulo na minha Touch Bar.

Aqui está o que tentei fazer para atingir esse objetivo (tenha um botão configurado para acionar esse script):

se o aplicativo "Spotify" estiver em execução, diga ao aplicativo "Spotify" return (duração da faixa atual) - (posição do jogador) end diga else return "" end if

Não está me dando o resultado que eu esperava. Alguém sabe como consertar isso?

Responder1

tell application "Spotify" to if running then tell ¬
    (duration of current track) - (player position) ¬
    to return "" & (it div minutes) & ":" & (it mod minutes)

return ""

No entanto, no meu sistema,Spotifyestá relatando a duração da faixa incorretamente no AppleScript.

Informação do sistema: Versão do AppleScript:2.7 Versão do sistema:10.13.6

Responder2

Isto é o que funcionou para mim:

tell application "Spotify" to if running then
    set song_duration to (duration of current track) / 1000
    set song_duration_minutes to song_duration div minutes
    set song_duration_seconds to song_duration mod minutes div 1
    -- pad with 0 if necessary 
    if (count of ("" & song_duration_seconds)) is 1 then
        set song_duration_seconds to "0" & song_duration_seconds
    end if
    set player_position_minutes to (player position) div minutes
    set player_postition_seconds to (player position) mod minutes div 1
    -- pad with 0 if necessary
    if (count of ("" & player_postition_seconds)) is 1 then
        set player_postition_seconds to "0" & player_postition_seconds
    end if
    return "" & player_position_minutes & ":" & player_postition_seconds & "/" & song_duration_minutes & ¬
        ":" & song_duration_seconds
else
    return ""
end if

Ele irá exibir "1:43/3:31"

A duração da música é retornada em milissegundos, portanto, para obter os minutos, primeiro você precisa dividir por 1000 para obter os segundos e depois dividir por minutespara obter os minutos. Para os segundos, dará frações de segundo, então adicionei div 1para convertê-lo em um int (número inteiro, sem frações). player positionestá em segundos, então é mais fácil.

informação relacionada