v1.0.2: multi-episode rename (S01E01-E02), VERSION file, docs
Made-with: Cursor
This commit is contained in:
+33
-7
@@ -201,14 +201,14 @@ class NumberingRule(Rule):
|
||||
return stem, ext
|
||||
|
||||
|
||||
# Episode renumber: match SxxExx or similar, replace episode number only, keep title
|
||||
# Episode renumber: match SxxExx or SxxExx-Eyy, replace episode block; keep title
|
||||
@dataclass
|
||||
class EpisodeRenumberRule(Rule):
|
||||
start: int = 1
|
||||
step: int = 1
|
||||
padding: int = 2
|
||||
# Pattern: group 1 = prefix (e.g. "S01E"), group 2 = episode digits, group 3 = rest (title)
|
||||
pattern: str = r"(.*?[Ss]\d+[Ee])(\d+)(.*)"
|
||||
# Group 1 = prefix (e.g. "S01E"), 2 = first ep digits, 3 = full "-E06" or None, 4 = second ep if range, 5 = rest (title)
|
||||
pattern: str = r"(.*?[Ss]\d+[Ee])(\d+)(-[Ee](\d+))?(.*)"
|
||||
|
||||
def apply(
|
||||
self,
|
||||
@@ -224,10 +224,36 @@ class EpisodeRenumberRule(Rule):
|
||||
return stem, ext
|
||||
if not m:
|
||||
return stem, ext
|
||||
prefix, _old_ep, rest = m.group(1), m.group(2), m.group(3)
|
||||
ep_num = self.start + index * self.step
|
||||
ep_str = str(ep_num).zfill(max(1, self.padding))
|
||||
new_stem = f"{prefix}{ep_str}{rest}"
|
||||
prefix, old_first_s, range_dash_e, old_second_s, rest = (
|
||||
m.group(1),
|
||||
m.group(2),
|
||||
m.group(3),
|
||||
m.group(4),
|
||||
m.group(5),
|
||||
)
|
||||
try:
|
||||
old_first = int(old_first_s)
|
||||
except ValueError:
|
||||
return stem, ext
|
||||
span = 1
|
||||
if old_second_s is not None:
|
||||
try:
|
||||
old_second = int(old_second_s)
|
||||
except ValueError:
|
||||
return stem, ext
|
||||
span = old_second - old_first + 1
|
||||
if span < 1:
|
||||
span = 1
|
||||
ep_new_first = self.start + index * self.step
|
||||
pad = max(1, self.padding)
|
||||
e1 = str(ep_new_first).zfill(pad)
|
||||
if span <= 1:
|
||||
new_stem = f"{prefix}{e1}{rest}"
|
||||
else:
|
||||
ep_new_last = ep_new_first + span - 1
|
||||
e2 = str(ep_new_last).zfill(pad)
|
||||
# Match common style: S01E01-E02 (second block uses E again)
|
||||
new_stem = f"{prefix}{e1}-E{e2}{rest}"
|
||||
return new_stem, ext
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user