mkm3u: Format episode numbers correctly when paired.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 19 Mar 2022 22:31:00 +0000 (22:31 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 19 Mar 2022 22:31:00 +0000 (22:31 +0000)
mkm3u
ref/btvs.m3u8
ref/buffyverse.m3u8
ref/stargate-sg1.m3u8
ref/stargate.m3u8

diff --git a/mkm3u b/mkm3u
index 982475c..bc963d5 100755 (executable)
--- a/mkm3u
+++ b/mkm3u
@@ -354,9 +354,9 @@ class BaseSeason (object):
     return ep
   def _epnames(me, i, neps):
     playlist = me.series.playlist
-    if neps == 1: return playlist.epname, "%d" % i
-    elif neps == 2: return playlist.epnames, "%d, %d" % (i, i + 1)
-    else: return playlist.epnames, "%d–%d" % (i, i + neps - 1)
+    if neps == 1: return playlist.epname, ["%d" % i]
+    elif neps == 2: return playlist.epnames, ["%d" % i, "%d" % (i + 1)]
+    else: return playlist.epnames, ["%d–%d" % (i, i + neps - 1)]
 
 class Season (BaseSeason):
   def __init__(me, series, title, i, *args, **kw):
@@ -365,13 +365,21 @@ class Season (BaseSeason):
   def _eplabel(me, i, neps, title):
     epname, epn = me._epnames(i, neps)
     if title is None:
-      if me.implicitp: label = "%s %s" % (epname, epn)
-      elif me.title is None: label = "%s %d.%s" % (epname, me.i, epn)
-      else: label = "%s—%s %s" % (me.title, epname, epn)
+      if me.implicitp:
+        label = "%s %s" % (epname, ", ".join(epn))
+      elif me.title is None:
+        label = "%s %s" % \
+          (epname, ", ".join("%d.%s" % (me.i, e) for e in epn))
+      else:
+        label = "%s—%s %s" % (me.title, epname, ", ".join(epn))
     else:
-      if me.implicitp: label = "%s. %s" % (epn, title)
-      elif me.title is None: label = "%d.%s. %s" % (me.i, epn, title)
-      else: label = "%s—%s. %s" % (me.title, epn, title)
+      if me.implicitp:
+        label = "%s. %s" % (", ".join(epn), title)
+      elif me.title is None:
+        label = "%s. %s" % \
+          (", ".join("%d.%s" % (me.i, e) for e in epn), title)
+      else:
+        label = "%s—%s. %s" % (me.title, ", ".join(epn), title)
     return label
 
 class MovieSeason (BaseSeason):
@@ -388,7 +396,7 @@ class MovieSeason (BaseSeason):
       label = title
     elif title is None:
       epname, epn = me._epnames(i, neps)
-      label = "%s—%s %s" % (me.title, epname, epn)
+      label = "%s—%s %s" % (me.title, epname, ", ".join(epn))
     else:
       label = "%s—%s" % (me.title, title)
     return label
index c1160b0..d805f5a 100644 (file)
@@ -205,7 +205,7 @@ dvd:///mnt/dvd/archive/B/Buffy%20the%20Vampire%20Slayer/S05D06.%20E20%e2%80%9322
 #EXTINF:2562,,5.22. The Gift
 dvd:///mnt/dvd/archive/B/Buffy%20the%20Vampire%20Slayer/S05D06.%20E20%e2%80%9322.iso#3
 
-#EXTINF:5127,,6.1, 2. Bargaining
+#EXTINF:5127,,6.1, 6.2. Bargaining
 dvd:///mnt/dvd/archive/B/Buffy%20the%20Vampire%20Slayer/S06D01.%20E01%e2%80%9304.iso#1
 #EXTINF:2491,,6.3. After Life
 dvd:///mnt/dvd/archive/B/Buffy%20the%20Vampire%20Slayer/S06D01.%20E01%e2%80%9304.iso#2
index c6dd59a..7d4e473 100644 (file)
@@ -297,7 +297,7 @@ dvd:///mnt/dvd/archive/A/Angel/S02D06.%20E20%e2%80%9322.iso#3
 dvd:///mnt/dvd/archive/A/Angel/S03D01.%20E01%e2%80%9304.iso#1
 #EXTINF:2517,,Angel 3.2. That Vision Thing
 dvd:///mnt/dvd/archive/A/Angel/S03D01.%20E01%e2%80%9304.iso#2
-#EXTINF:5127,,Buffy the Vampire Slayer 6.1, 2. Bargaining
+#EXTINF:5127,,Buffy the Vampire Slayer 6.1, 6.2. Bargaining
 dvd:///mnt/dvd/archive/B/Buffy%20the%20Vampire%20Slayer/S06D01.%20E01%e2%80%9304.iso#1
 #EXTINF:2442,,Angel 3.3. That Old Gang of Mine
 dvd:///mnt/dvd/archive/A/Angel/S03D01.%20E01%e2%80%9304.iso#3
index 54f53a3..79aaeec 100644 (file)
@@ -308,10 +308,10 @@ dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S07D05.%20E17%e2%80%9320.iso#9
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S07D05.%20E17%e2%80%9320.iso#10
 #EXTINF:2531,,7.20. Inauguration
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S07D05.%20E17%e2%80%9320.iso#11
-#EXTINF:4921,,7.21, 22. Lost City (parts 1&2)
+#EXTINF:4921,,7.21, 7.22. Lost City (parts 1&2)
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S07D06.%20E21%e2%80%9322.iso#2
 
-#EXTINF:4866,,8.1, 2. New Order (parts 1&2)
+#EXTINF:4866,,8.1, 8.2. New Order (parts 1&2)
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S08D01.%20E01%e2%80%9304.iso#10
 #EXTINF:2517,,8.3. Lockdown
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S08D01.%20E01%e2%80%9304.iso#11
index 1713d0f..9c1f9b4 100644 (file)
@@ -311,10 +311,10 @@ dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S07D05.%20E17%e2%80%9320.iso#9
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S07D05.%20E17%e2%80%9320.iso#10
 #EXTINF:2531,,Stargate SG-1 7.20. Inauguration
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S07D05.%20E17%e2%80%9320.iso#11
-#EXTINF:4921,,Stargate SG-1 7.21, 22. Lost City (parts 1&2)
+#EXTINF:4921,,Stargate SG-1 7.21, 7.22. Lost City (parts 1&2)
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S07D06.%20E21%e2%80%9322.iso#2
 
-#EXTINF:4866,,Stargate SG-1 8.1, 2. New Order (parts 1&2)
+#EXTINF:4866,,Stargate SG-1 8.1, 8.2. New Order (parts 1&2)
 dvd:///mnt/dvd/archive/S/Stargate%20SG-1/S08D01.%20E01%e2%80%9304.iso#10
 #EXTINF:5070,,Stargate Atlantis 1.1. Rising
 dvd:///mnt/dvd/archive/S/Stargate%20Atlantis/S01D01.%20E01%e2%80%9303.iso#8