Derzeit verwende ich BetterTouchTool (BTT), um Aufgaben zu automatisieren. Ich wollte ein Skript erstellen, das die verbleibende Zeit eines Songs (im MM: SS-Format) als Beschriftung auf meiner Touch Bar anzeigt.
Um dieses Ziel zu erreichen, habe ich Folgendes versucht (eine Schaltfläche zum Auslösen dieses Skripts einrichten):
wenn die Anwendung „Spotify“ läuft, dann sag der Anwendung „Spotify“ return (Dauer des aktuellen Titels) - (Player-Position) end tell sonst return "" end if
Ich bekomme nicht die erwartete Ausgabe. Weiß jemand, wie man das beheben kann?
Antwort1
tell application "Spotify" to if running then tell ¬
(duration of current track) - (player position) ¬
to return "" & (it div minutes) & ":" & (it mod minutes)
return ""
Auf meinem SystemSpotifymeldet die Titeldauer in AppleScript falsch.
Systeminformationen: AppleScript-Version:2.7 Systemversion:10.13.6
Antwort2
Das hat bei mir funktioniert:
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
Es wird angezeigt
"1:43/3:31"
Die Songdauer wird in Millisekunden zurückgegeben. Um also Minuten zu erhalten, müssen Sie zuerst durch 1000 dividieren, um Sekunden zu erhalten, und dann durch dividieren, minutes
um Minuten zu erhalten. Für die Sekunden werden Sekundenbruchteile zurückgegeben, daher habe ich hinzugefügt, div 1
um es in eine Ganzzahl (Ganzzahl, keine Brüche) umzuwandeln. player position
ist in Sekunden, also ist es einfacher.