feat: optimize format_duration
This commit is contained in:
@@ -134,23 +134,20 @@ class LibraryClient:
|
|||||||
def format_duration(
|
def format_duration(
|
||||||
value: int | None, unit: str = "minutes", default_none: str | None = None
|
value: int | None, unit: str = "minutes", default_none: str | None = None
|
||||||
) -> str | None:
|
) -> str | None:
|
||||||
"""Format duration value into human-readable string."""
|
"""Format duration value into a human-readable string."""
|
||||||
if value is None or value <= 0:
|
if value is None or value <= 0:
|
||||||
return default_none
|
return default_none
|
||||||
|
|
||||||
|
total_minutes = int(value)
|
||||||
if unit == "seconds":
|
if unit == "seconds":
|
||||||
total_minutes = int(value) // 60
|
total_minutes //= 60
|
||||||
else:
|
|
||||||
total_minutes = int(value)
|
|
||||||
|
|
||||||
if total_minutes < 60:
|
hours, minutes = divmod(total_minutes, 60)
|
||||||
return f"{total_minutes} minute{'s' if total_minutes != 1 else ''}"
|
|
||||||
|
|
||||||
hours = total_minutes // 60
|
parts = []
|
||||||
mins = total_minutes % 60
|
if hours:
|
||||||
if mins == 0:
|
parts.append(f"{hours} hour{'s' if hours != 1 else ''}")
|
||||||
return f"{hours} hour{'s' if hours != 1 else ''}"
|
if minutes:
|
||||||
return (
|
parts.append(f"{minutes} minute{'s' if minutes != 1 else ''}")
|
||||||
f"{hours} hour{'s' if hours != 1 else ''} "
|
|
||||||
f"{mins} minute{'s' if mins != 1 else ''}"
|
return " ".join(parts) if parts else default_none
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user