Контекст
Видеоплатформа показывает длительность ролика под превьюшкой: «1:15», «10:09», «1:01:01». Данные приходят из базы в секундах — целое число. Отдельная функция превращает это число в строку нужного формата перед тем, как она уйдёт в JSON ответа.
Задача
Реализуйте format_duration(seconds): по целому числу секунд верните строку длительности, например 75 → "1:15".
Правила
- Если
secondsменьше нуля — выбросьтеValueError("seconds must be non-negative"). - Если длительность меньше 3600 секунд (часов нет) — возвращайте строку вида
M:SSилиMM:SS. Минуты НЕ дополняются нулём слева; секунды всегда двузначные (дополняются нулём при необходимости). - Если длительность 3600 секунд и больше — возвращайте строку вида
H:MM:SS. Часы НЕ дополняются нулём слева; минуты и секунды всегда двузначные.
Примеры
format_duration(75) # "1:15"
format_duration(3661) # "1:01:01"
format_duration(0) # "0:00"
format_duration(59) # "0:59"
format_duration(60) # "1:00"
format_duration(70) # "1:10"
format_duration(609) # "10:09"
format_duration(3599) # "59:59"
format_duration(3600) # "1:00:00"
format_duration(4150) # "1:09:10"
format_duration(4209) # "1:10:09"
format_duration(45296) # "12:34:56"
format_duration(-1) # ValueError: seconds must be non-negative
Где это в системе
format_duration вызывается в сериализаторе карточки контента: поле duration собирается из числа секунд в базе и уходит в ответ API как отформатированная строка.