def syncSeason(self, serie, season): qry = Session.query(Serie).filter_by(path=serie) if qry.count() == 0: raise Exception("No serie linked to %s/%s" % (serie, saison)) serie = qry.one() path = season num = getSeasonNumFromFoldername(season) if num is None: raise Exception("This is not a season (%s)" % season) season = filter(lambda season: season.num == num, serie.seasons) if len(season) == 0: season = Season(num=num, path=path) Session.add(season) serie.seasons.append(season) else: assert 1 == len(season) season = season[0] season.num = num season.path = path episodes = glob(os.path.join(self.basepath, serie.path, season.path, "*")) episodes = filter(lambda episode: os.path.isfile(episode), episodes) for episode in [os.path.basename(e) for e in episodes]: try: self.syncEpisode(serie.path, season.path, episode) except: pass