Each should be used the right number of times.
TITLEP = CHAPTERP = False
def __init__(me, fn):
me.fn = fn
TITLEP = CHAPTERP = False
def __init__(me, fn):
me.fn = fn
+ me.neps = None
+ me.used_titles = dict()
+ me.used_chapters = set()
+ me.nuses = 0
def url(me, title = None, chapter = None):
if title is None:
if me.TITLEP: raise ExpectedError("missing title number")
def url(me, title = None, chapter = None):
if title is None:
if me.TITLEP: raise ExpectedError("missing title number")
raise ExpectedError("can't specify chapter with `%s'" % me.fn)
else:
suffix = "#%d:%d-%d:%d" % (title, chapter, title, chapter)
raise ExpectedError("can't specify chapter with `%s'" % me.fn)
else:
suffix = "#%d:%d-%d:%d" % (title, chapter, title, chapter)
+ if chapter is not None: key, set = (title, chapter), me.used_chapters
+ else: key, set = title, me.used_titles
+ if key in set:
+ if title is None:
+ raise ExpectedError("`%s' already used" % me.fn)
+ elif chapter is None:
+ raise ExpectedError("`%s' title %d already used" % (me.fn, title))
+ else:
+ raise ExpectedError("`%s' title %d chapter %d already used" %
+ (me.fn, title, chapter))
+ if chapter is not None: me.used_chapters.add((title, chapter))
return me.PREFIX + ROOT + urlencode(me.fn) + suffix
class VideoDisc (Source):
PREFIX = "dvd://"
TITLEP = CHAPTERP = True
return me.PREFIX + ROOT + urlencode(me.fn) + suffix
class VideoDisc (Source):
PREFIX = "dvd://"
TITLEP = CHAPTERP = True
+ def __init__(me, fn, *args, **kw):
+ super().__init__(fn, *args, **kw)
+ me.neps = 0
+
class VideoSeason (object):
def __init__(me, i, title):
me.i = i
class VideoSeason (object):
def __init__(me, i, title):
me.i = i
def set_episode_disc(me, i, disc):
if i in me.episodes:
raise ExpectedError("season %d episode %d already taken" % (me.i, i))
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; disc.neps += 1
def some_group(m, *gg):
for g in gg:
def some_group(m, *gg):
for g in gg:
""", RX.X)
def __init__(me, dir):
""", RX.X)
def __init__(me, dir):
fns = OS.listdir(OS.path.join(ROOT, dir))
fns.sort()
season, last_j = None, 0
fns = OS.listdir(OS.path.join(ROOT, dir))
fns.sort()
season, last_j = None, 0
""", RX.X)
def __init__(me, dir):
""", RX.X)
def __init__(me, dir):
fns = OS.listdir(OS.path.join(ROOT, dir))
fns.sort()
episodes = {}
fns = OS.listdir(OS.path.join(ROOT, dir))
fns.sort()
episodes = {}
episode = season.add_episode(fake_epi, neps, title, src, i)
chapter = None
episode = season.add_episode(fake_epi, neps, title, src, i)
chapter = None
+ ep_i += neps; src.nuses += neps
else: j += 1
chapter = episode.add_chapter(title, j)
else: j += 1
chapter = episode.add_chapter(title, j)
+ discs = set()
+ for vdir in vds.values():
+ for s in vdir.seasons.values():
+ for d in s.episodes.values():
+ discs.add(d)
+ for d in sorted(discs, key = lambda d: d.fn):
+ if d.neps != d.nuses:
+ raise ExpectedError("disc `%s' has %d episodes, used %d times" %
+ (d.fn, d.neps, d.nuses))
+
return playlist
ROOT = "/mnt/dvd/archive/"
return playlist
ROOT = "/mnt/dvd/archive/"