mkm3u: Report missing seasons and episodes properly.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 14 Mar 2022 14:30:12 +0000 (14:30 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 14 Mar 2022 14:30:45 +0000 (14:30 +0000)
mkm3u

diff --git a/mkm3u b/mkm3u
index 42f8413..eff5d96 100755 (executable)
--- a/mkm3u
+++ b/mkm3u
@@ -422,14 +422,27 @@ def parse_list(fn):
             if i is None:
               check(ads, "no title, but no audio directory")
               check(season.implicitp, "audio source, but explicit season")
-              src = ads.episodes[ep_i]
+              try: src = ads.episodes[ep_i]
+              except KeyError:
+                raise ExpectedError("episode %d not found in audio dir `%s'" %
+                                    ep_i, ads.dir)
 
             elif iso:
               src = iso
 
             else:
               check(vdname in vds, "title, but no iso or video directory")
-              src = vds[vdname].seasons[season.i].episodes[ep_i]
+              try: vdir = vds[vdname]
+              except KeyError:
+                raise ExpectedError("video dir label `%s' not set" % vdname)
+              try: s = vdir.seasons[season.i]
+              except KeyError:
+                raise ExpectedError("season %d not found in video dir `%s'" %
+                                    (season.i, vdir.dir))
+              try: src = s.episodes[ep_i]
+              except KeyError:
+                raise ExpectedError("episode %d.%d not found in video dir `%s'" %
+                                    (season.i, ep_i, vdir.dir))
 
             episode = season.add_episode(fake_epi, neps, title, src, i)
             chapter = None