Actualmente, estoy usando BetterTouchTool (BTT) para automatizar tareas. Quería hacer un guión que mostrara el tiempo que le queda a una canción (en formato MM:SS) como una etiqueta en mi Touch Bar.
Esto es lo que intenté hacer para lograr este objetivo (tenga configurado un botón para activar este script):
si la aplicación "Spotify" se está ejecutando, dígale a la aplicación "Spotify" que regrese (duración de la pista actual) - (posición del jugador) finalice dígale a los demás que regrese "" finalice si
No me está dando el resultado que esperaba. ¿Alguien sabe cómo arreglarlo?
Respuesta1
tell application "Spotify" to if running then tell ¬
(duration of current track) - (player position) ¬
to return "" & (it div minutes) & ":" & (it mod minutes)
return ""
Sin embargo, en mi sistema,Spotifyinforma incorrectamente la duración de la pista en AppleScript.
Información del sistema: Versión de AppleScript:2.7 Versión del sistema:10.13.6
Respuesta2
Esto es lo que funcionó para mí:
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
Se mostrará
"1:43/3:31"
La duración de la canción se devuelve en milisegundos, por lo que para obtener minutos primero debes dividir por 1000 para obtener segundos y luego dividir por minutes
para obtener minutos. Para los segundos, dará fracciones de segundo, así que agregué div 1
para convertirlo a un int (número entero, sin fracciones). player position
Es en segundos, por lo que es más fácil.