Files
MoviePilot/app/domain/episode.py
T

40 lines
1.2 KiB
Python

"""剧集编号列表的业务显示规则。"""
from typing import List
def compact_numbers(numbers: List[int]) -> str:
"""把连续剧集编号压缩为逗号分隔的数字区间。"""
numbers.sort()
result = []
start = numbers[0]
end = numbers[0]
for number in numbers[1:]:
if number == end + 1:
end = number
continue
result.append(str(start) if start == end else f"{start}-{end}")
start = end = number
result.append(str(start) if start == end else f"{start}-{end}")
return ",".join(result)
def format_ranges(numbers: List[int]) -> str:
"""把剧集编号格式化为带 E 前缀和中文顿号的连续区间。"""
if not numbers:
return ""
if len(numbers) == 1:
return f"E{numbers[0]:02d}"
numbers.sort()
ranges = []
start = numbers[0]
end = numbers[0]
for number in numbers[1:]:
if number == end + 1:
end = number
continue
ranges.append(f"E{start:02d}" if start == end else f"E{start:02d}-E{end:02d}")
start = end = number
ranges.append(f"E{start:02d}" if start == end else f"E{start:02d}-E{end:02d}")
return "、".join(ranges)