Wie kann ich die verbleibende Zeit eines Spotify-Songs auf meiner Touch Bar anzeigen?

Wie kann ich die verbleibende Zeit eines Spotify-Songs auf meiner Touch Bar anzeigen?

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, minutesum Minuten zu erhalten. Für die Sekunden werden Sekundenbruchteile zurückgegeben, daher habe ich hinzugefügt, div 1um es in eine Ganzzahl (Ganzzahl, keine Brüche) umzuwandeln. player positionist in Sekunden, also ist es einfacher.

verwandte Informationen