如何在 Touch Bar 上显示 Spotify 歌曲的剩余时间?

如何在 Touch Bar 上显示 Spotify 歌曲的剩余时间?

目前,我正在使用 BetterTouchTool (BTT) 来自动执行任务。我想编写一个脚本,将歌曲的剩余时间(MM:SS 格式)显示为 Touch Bar 上的标签。

以下是我为了实现此目标所尝试做的事情(设置一个按钮来触发此脚本):

如果应用程序“Spotify”正在运行,则告诉应用程序“Spotify”返回(当前曲目的持续时间)-(播放器位置)结束告诉否则返回“”结束如果

它没有给我预期的输出。有人知道如何修复它吗?

答案1

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

return ""

但是,在我的系统上,Spotify在 AppleScript 中错误地报告了曲目时长。

系统信息: AppleScript 版本:2.7 系统版本:10.13.6

答案2

这对我有用:

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

它将显示 "1:43/3:31"

歌曲时长以毫秒为单位返回,因此要获得分钟数,您首先需要除以 1000 以获得秒数,然后除以 以minutes获得分钟数。对于秒数,它将给出秒的分数,因此我添加了div 1将其转换为 int(整数,没有分数)的附加值。player position以秒为单位,因此更容易。

相关内容