mkm3u: Abolish `VideoEpisodes'.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 14 Mar 2022 13:56:12 +0000 (13:56 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 14 Mar 2022 14:30:44 +0000 (14:30 +0000)
Instead, just associate a disc with each episode in the season.  This way, a
disc can be associated with multiple seasons without trouble.

mkm3u

diff --git a/mkm3u b/mkm3u
index 5ef5832..9be73ce 100755 (executable)
--- a/mkm3u
+++ b/mkm3u
@@ -101,24 +101,15 @@ class VideoDisc (Source):
   PREFIX = "dvd://"
   TITLEP = CHAPTERP = True
 
-class VideoEpisodes (VideoDisc):
-  def __init__(me, fn, season, eps, *args, **kw):
-    super().__init__(fn, *args, **kw)
-    me.season = season
-    me.eps = eps
-
 class VideoSeason (object):
   def __init__(me, i, title):
     me.i = i
     me.title = title
     me.episodes = {}
-  def add_disc(me, fn, eps):
-    d = VideoEpisodes(fn, me, eps)
-    for i in eps:
-      if i in me.episodes:
-        raise ExpectedError("season %d episode %d already taken" % (me.i, i))
-      me.episodes[i] = d
-    return d
+  def set_episode_disc(me, i, disc):
+    if i in me.episodes:
+      raise ExpectedError("season %d episode %d already taken" % (me.i, i))
+    me.episodes[i] = disc
 
 def some_group(m, *gg):
   for g in gg:
@@ -168,17 +159,18 @@ class VideoDir (object):
         check(j == last_j + 1,
               "season %d disc %d /= %d" % (season.i, j, last_j + 1))
 
-      eps = set()
-      bad = False
+      disc = VideoDisc(path)
+      any, bad = False, False
       for eprange in m.group("eps").split(", "):
         mm = me._R_ISO_EP.match(eprange)
         if mm is None: bad = True; continue
         start = filter(mm.group("ei"), int)
         end = filter(mm.group("ej"), int, start)
-        for k in range(start, end + 1): eps.add(k)
-      if bad and eps:
+        for k in range(start, end + 1):
+          season.set_episode_disc(k, disc)
+        any = True
+      if bad and any:
         raise ExpectedError("bad ep list in `%s'", fn)
-      season.add_disc(path, eps)
       last_j = j
     me.seasons = seasons