From c3538df6a077ce05e000c5ec99085b7c57a7422c Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Thu, 17 Mar 2022 16:16:47 +0000 Subject: [PATCH] mkm3u: Allow movie seasons to have titles and numbered episodes. --- mkm3u | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/mkm3u b/mkm3u index 9051c26..27907cd 100755 --- a/mkm3u +++ b/mkm3u @@ -322,13 +322,23 @@ class Season (BaseSeason): return label class MovieSeason (BaseSeason): - def __init__(me, series, *args, **kw): + def __init__(me, series, title, *args, **kw): + super().__init__(series, *args, **kw) + me.title = title me.i = None def add_episode(me, j, neps, title, src, tno, startch): - if title is None: raise ExpectedError("movie must have a title") + if me.title is None and title is None: + raise ExpectedError("movie or movie season must have a title") return super().add_episode(j, neps, title, src, tno, startch) - def _eplabel(me, i, epn, title): - return title + def _eplabel(me, i, neps, title): + if me.title is None: + label = title + elif title is None: + epname, epn = me._epnames(i, neps) + label = "%s—%s %s" % (me.title, epname, epn) + else: + label = "%s—%s" % (me.title, title) + return label class Series (object): def __init__(me, playlist, title = None): @@ -339,8 +349,8 @@ class Series (object): me.cur_season = season def add_season(me, title, i, implicitp = False): me._add_season(Season(me, title, i, implicitp)) - def add_movies(me): - me._add_season(MovieSeason(me)) + def add_movies(me, title = None): + me._add_season(MovieSeason(me, title)) def ensure_season(me): if me.cur_season is None: me.add_season(None, 1, implicitp = True) return me.cur_season @@ -451,9 +461,8 @@ class EpisodeListParser (object): w = ww.nextword(); check(w is not None, "missing season number") if w == "-": - check(ww.rest() is None, "trailing junk") if not me._wantedp(sname): return - series.add_movies() + series.add_movies(ww.rest()) else: title = ww.rest(); i = getint(w) if not me._wantedp(sname): return -- 2.11.0