Instead, just associate a disc with each episode in the season. This way, a
disc can be associated with multiple seasons without trouble.
PREFIX = "dvd://"
TITLEP = CHAPTERP = True
PREFIX = "dvd://"
TITLEP = CHAPTERP = True
-class VideoEpisodes (VideoDisc):
- def __init__(me, fn, season, eps, *args, **kw):
- super().__init__(fn, *args, **kw)
- me.season = season
- me.eps = eps
-
class VideoSeason (object):
def __init__(me, i, title):
me.i = i
me.title = title
me.episodes = {}
class VideoSeason (object):
def __init__(me, i, title):
me.i = i
me.title = title
me.episodes = {}
- def add_disc(me, fn, eps):
- d = VideoEpisodes(fn, me, eps)
- for i in eps:
- if i in me.episodes:
- raise ExpectedError("season %d episode %d already taken" % (me.i, i))
- me.episodes[i] = d
- return d
+ 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
def some_group(m, *gg):
for g in gg:
def some_group(m, *gg):
for g in gg:
check(j == last_j + 1,
"season %d disc %d /= %d" % (season.i, j, last_j + 1))
check(j == last_j + 1,
"season %d disc %d /= %d" % (season.i, j, last_j + 1))
- eps = set()
- bad = False
+ disc = VideoDisc(path)
+ any, bad = False, False
for eprange in m.group("eps").split(", "):
mm = me._R_ISO_EP.match(eprange)
if mm is None: bad = True; continue
start = filter(mm.group("ei"), int)
end = filter(mm.group("ej"), int, start)
for eprange in m.group("eps").split(", "):
mm = me._R_ISO_EP.match(eprange)
if mm is None: bad = True; continue
start = filter(mm.group("ei"), int)
end = filter(mm.group("ej"), int, start)
- for k in range(start, end + 1): eps.add(k)
- if bad and eps:
+ for k in range(start, end + 1):
+ season.set_episode_disc(k, disc)
+ any = True
+ if bad and any:
raise ExpectedError("bad ep list in `%s'", fn)
raise ExpectedError("bad ep list in `%s'", fn)
- season.add_disc(path, eps)
last_j = j
me.seasons = seasons
last_j = j
me.seasons = seasons