From: Mark Wooding Date: Sun, 25 Sep 2022 23:25:08 +0000 (+0100) Subject: mkm3u: Factor out the guts of `AudioDir'. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/epls/commitdiff_plain/72ddfb64abd222188f5533510c8386586413f345 mkm3u: Factor out the guts of `AudioDir'. --- diff --git a/mkm3u b/mkm3u index f945e29..b36d527 100755 --- a/mkm3u +++ b/mkm3u @@ -360,6 +360,35 @@ class DVDDir (object): raise ExpectedError("bad ep list in `%s'", fn) me.seasons = seasons +class SingleFileDir (object): + + _CHECK_COMPLETE = True + + def __init__(me, dir): + me.dir = dir + fns = OS.listdir(OS.path.join(ROOT, dir)) + fns.sort() + episodes = {} + last_i = 0 + rx = RX.compile(r""" + E (\d+) + (?: \. \ (.*))? + %s $ + """ % RX.escape(me._EXT), RX.X) + + for fn in fns: + path = OS.path.join(dir, fn) + if not fn.endswith(me._EXT): continue + m = rx.match(fn) + if not m: continue + i = filter(m.group(1), int) + etitle = m.group(2) + if me._CHECK_COMPLETE: + check(i == last_i + 1, "episode %d /= %d" % (i, last_i + 1)) + episodes[i] = me._mkepisode(path, i) + last_i = i + me.episodes = episodes + class AudioFile (Source): PREFIX = "file://" TITLEP = CHAPTERP = False @@ -376,31 +405,12 @@ class AudioEpisode (AudioFile): super().__init__(fn, *args, **kw) me.i = i -class AudioDir (object): +class AudioDir (SingleFileDir): + _EXT = ".flac" - _R_FLAC = RX.compile(r""" ^ - E (\d+) - (?: \. \ (.*))? - \. flac $ - """, RX.X) + def _mkepisode(me, path, i): + return AudioEpisode(path, i) - def __init__(me, dir): - me.dir = dir - fns = OS.listdir(OS.path.join(ROOT, dir)) - fns.sort() - episodes = {} - last_i = 0 - for fn in fns: - path = OS.path.join(dir, fn) - if not fn.endswith(".flac"): continue - m = me._R_FLAC.match(fn) - if not m: continue - i = filter(m.group(1), int) - etitle = m.group(2) - check(i == last_i + 1, "episode %d /= %d" % (i, last_i + 1)) - episodes[i] = AudioEpisode(path, i) - last_i = i - me.episodes = episodes class Chapter (object): def __init__(me, episode, title, i):