Spotify の曲の残り時間を Touch Bar に表示するにはどうすればよいですか?

Spotify の曲の残り時間を Touch Bar に表示するにはどうすればよいですか?

現在、私は 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 ""

しかし、私のシステムでは、スポティファイ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 1int (小数点なしの整数) に変換するために を追加しました。player position秒単位なので、簡単です。

関連情報