Add TheTVDB episode title matching and release v1.0.3.

Match filenames to TheTVDB episode order (default, aired, DVD, etc.) to fix chaotic SxxExx numbering while preserving titles.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Bulk Renamer
2026-07-03 16:47:37 -05:00
co-authored by Cursor
parent 59dba20c1e
commit 085d6dc296
8 changed files with 609 additions and 5 deletions
+15 -2
View File
@@ -36,6 +36,7 @@ from .rule_widgets import (
CaseRuleWidget,
NumberingRuleWidget,
EpisodeRenumberRuleWidget,
TvdbEpisodeRenumberRuleWidget,
PrefixSuffixRuleWidget,
CsvMappingRuleWidget,
)
@@ -85,6 +86,7 @@ class MainWindow(QMainWindow):
CaseRuleWidget(),
NumberingRuleWidget(),
EpisodeRenumberRuleWidget(),
TvdbEpisodeRenumberRuleWidget(),
PrefixSuffixRuleWidget(),
CsvMappingRuleWidget(),
]
@@ -96,12 +98,17 @@ class MainWindow(QMainWindow):
"5. Case",
"6. Numbering",
"7. Episode renumber",
"8. Prefix / Suffix",
"9. CSV mapping",
"8. TheTVDB episode match",
"9. Prefix / Suffix",
"10. CSV mapping",
]
for title, w in zip(rule_titles, self._rule_widgets):
w.enabled_cb.toggled.connect(self._refresh_preview) # always refresh when checkbox toggled
w.ruleChanged.connect(self._on_rule_changed) # refresh only when enabled rules options change
if hasattr(w, "set_file_names"):
w.set_file_names(self._file_names)
if hasattr(w, "matchCompleted"):
w.matchCompleted.connect(self._refresh_preview)
g = QGroupBox(title)
g_layout = QVBoxLayout(g)
g_layout.setContentsMargins(8, 12, 8, 8)
@@ -206,7 +213,13 @@ class MainWindow(QMainWindow):
self.preview_table.setSortingEnabled(False)
self.preview_table.setRowCount(0)
self.preview_status.setText("Add a folder to see files.")
for w in self._rule_widgets:
if hasattr(w, "set_file_names"):
w.set_file_names([])
return
for w in self._rule_widgets:
if hasattr(w, "set_file_names"):
w.set_file_names(self._file_names)
# Preserve sort and selection so checking a rule doesnt reorder or clear selection
header = self.preview_table.horizontalHeader()
sort_section = header.sortIndicatorSection()