drwho.epls: Remove dummy episodes from incomplete extras data.
[epls] / mkm3u
diff --git a/mkm3u b/mkm3u
index b36d527..ea60ddc 100755 (executable)
--- a/mkm3u
+++ b/mkm3u
@@ -411,6 +411,26 @@ class AudioDir (SingleFileDir):
   def _mkepisode(me, path, i):
     return AudioEpisode(path, i)
 
+class VideoFile (Source):
+  PREFIX = "file://"
+  TITLEP = CHAPTERP = False
+
+  def _duration(me, title, start_chapter, end_chaptwr):
+    out = program_output(["mediainfo", "--output=General;%Duration%",
+                          OS.path.join(ROOT, me.fn)])
+    return int(out)//1000
+
+class VideoEpisode (VideoFile):
+  def __init__(me, fn, i, *args, **kw):
+    super().__init__(fn, *args, **kw)
+    me.i = i
+
+class VideoDir (SingleFileDir):
+  _EXT = ".mp4"
+  _CHECK_COMPLETE = False
+
+  def _mkepisode(me, path, i):
+    return VideoEpisode(path, i)
 
 class Chapter (object):
   def __init__(me, episode, title, i):
@@ -527,6 +547,7 @@ class Playlist (object):
     me.nseries = 0
     me.single_series_p = False
     me.series_title = None
+    me.series_sep = ""
 
   def add_episode(me, episode):
     me.episodes.append(episode)
@@ -544,9 +565,9 @@ class Playlist (object):
         label = ep.label()
         if me.nseries > 1 and ep.series_title_p and \
            ep.season.series.title is not None:
-          if ep.season.i is None: sep = ": "
-          else: sep = " "
-          label = ep.season.series.title + sep + label
+          if ep.season.i is None: sep = ":"
+          else: sep = me.series_sep
+          label = ep.season.series.title + sep + " " + label
         if not ep.chapters:
           f.write("#EXTINF:%d,,%s\n%s\n" % (ep.duration, label, ep.url))
         else:
@@ -568,7 +589,7 @@ class Playlist (object):
         title = ep.season.series.full_title
         if me.single_series_p:
           stag = "-"
-          if title is not None: label = title + " " + label
+          if title is not None: label = title + me.series_sep + " " + label
         else:
           if title is None: title = me.series_title
           stag = ep.season.series.name
@@ -777,6 +798,13 @@ class EpisodeListParser (object):
       if dir == "-": forget(me._vdirs, series.name)
       else: me._vdirs[series.name] = DVDDir(dir)
 
+    elif cmd == "vdir":
+      series = me._opts_series(cmd, opts)
+      dir = ww.rest(); check(dir is not None, "missing directory")
+      if not series.wantedp: return
+      if dir == "-": forget(me._sfdirs, series.name)
+      else: me._sfdirs[series.name] = VideoDir(dir)
+
     elif cmd == "adir":
       series = me._opts_series(cmd, opts)
       dir = ww.rest(); check(dir is not None, "missing directory")
@@ -790,6 +818,10 @@ class EpisodeListParser (object):
       src = me._auto_epsrc(series)
       src.nuses += n
 
+    elif cmd == "sep":
+      sep = ww.rest(); check(sep is not None, "missing separator")
+      me._pl.series_sep = sep
+
     else:
       raise ExpectedError("unknown command `%s'" % cmd)