aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/indexer/enrich.py
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-29 18:50:37 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-29 18:50:37 +0200
commit0bcd8521eec8c6fde3ba5a6dc127866b3fb991e7 (patch)
tree9e14bc8c1b6d8b18c9e2ec8fe1708f6ad3f18cb6 /packages/meshbay-node/src/meshbay_node/indexer/enrich.py
parent8de80b7e19738b716d9973c0b4ba3b42085f7359 (diff)
parent00880fd8b9d362ad391c784f1ee31bd62aa18d62 (diff)
downloadmeshbay-0bcd8521eec8c6fde3ba5a6dc127866b3fb991e7.tar.gz
Merge branch 'fix/movie-misclassified-as-show'
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/indexer/enrich.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/indexer/enrich.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/indexer/enrich.py b/packages/meshbay-node/src/meshbay_node/indexer/enrich.py
index 07f0be7..8b2eca5 100644
--- a/packages/meshbay-node/src/meshbay_node/indexer/enrich.py
+++ b/packages/meshbay-node/src/meshbay_node/indexer/enrich.py
@@ -283,9 +283,18 @@ class Enricher:
fields["display_title"] = show_folder.name
fields["season"] = season
fields["episode"] = episode
- elif ep.episode is not None:
+ elif (ep.season is not None and ep.episode is not None
+ and (title_parse.has_episode_marker(entry.name)
+ or title_parse.year_in(entry.name) is None)):
# No season-like ancestor at all (a flat library) but the
- # filename itself carries season+episode (§3.4).
+ # filename itself carries season+episode (§3.4) — *and* it
+ # is a real marker, not guessit reading a bare number as
+ # SxxExx. A movie whose "1080p" tag was truncated to "108",
+ # or "1280" left in the name, otherwise parses to S01E08 /
+ # S12E80 and gets shelved as a nonexistent series
+ # (found live 2026-08-29). A genuine flat-dumped episode
+ # has an explicit SxxExx/1x08/"Episode N" marker; a movie
+ # has a "(2019)"-style year and no such marker.
title = ep.display_title or await asyncio.to_thread(
_title_from_siblings, file_path)
fields["display_title"] = title or title_parse.naive_title(entry.name)