def _tvrageEpisideInfo(self): log.debug('_tvrageEpisideInfo: Input Parm: {!s}'.format( self.series.getDict())) self.series.episodeData = [] _epinfo = etree_to_dict( feeds.episode_list(self.series.tvrage_id, node='Episodelist'))['Episodelist']['Season'] _seasons = self._tvrageBuildTVSeason(_epinfo) self.series.seasons = _seasons if self.series.season is not None: _season = self.series.seasons['<Season {0:04}>'.format( int(self.series.season))] if self.series.episodeNums: for epno in self.series.episodeNums: _episode = _season.episodes['E{0:02d}'.format(int(epno))] self.series.addRageEpisode(_season, _episode) else: for _episode in _season.episodes.itervalues(): self.series.addRageEpisode(_season, _episode) else: for _season in _seasons.itervalues(): for _episode in _season.episodes.itervalues(): self.series.addRageEpisode(_season, _episode) return
def save_episodes(show_id): show = db.Show.query.filter_by(show_id=show_id).first() if show is None: return jsonify({ 'status': 'error', 'message': 'Show not found. First save the show then add episode' }) show_id = show.show_id el = feeds.episode_list(show_id, node='Episodelist') episode_count = 0 for s in el.findall('Season'): season_no = s.get('no') for e in s.findall('episode'): episode_info = parse_episode_info(e) episode = db.Episode.query.filter_by(show_id=show_id, season_number=season_no, season_episode_number=episode_info['seasonnum']).first() if episode is None: episode = db.Episode(episode_id=None, show_id=show_id, season_episode_number=episode_info['seasonnum'], season_number=season_no, episode_number=episode_info['epnum'], air_date=datetime.strptime(episode_info['airdate'], '%Y-%m-%d'), title=episode_info['title'], link=episode_info['link'], watched='N') db.db.session.add(episode) else: episode.episode_number = episode_info['epnum'] episode.air_date = datetime.strptime(episode_info['airdate'], '%Y-%m-%d') episode.title = episode_info['title'] episode.link = episode_info['link'] episode_count += 1 show.episodes_saved_at = datetime.now() db.db.session.commit() return jsonify({ 'status': 'success', 'message': 'Successfully episode list', 'show_id': show_id, 'episode_count': episode_count, 'episode_saved_at_iso': show.episodes_saved_at.isoformat(), 'episode_saved_at_readable': show.episodes_saved_at.strftime('%c') })
def get_all_eps(sid): ''' This method parses episode list from the TVRage database for a given sid and returns an Episode object for each episode in the list ''' tree = ET.ElementTree(feeds.episode_list(sid)) showname = tree.find(tvrpath.EPLIST_NAME).text results = [] seasons = map(ET.ElementTree, tree.findall(tvrpath.EPLIST_SEASON)) for season in seasons: seasonnum = season.getroot().get(tvrpath.EPLIST_SEASONNUM) eps = map(ET.ElementTree, season.findall(tvrpath.EPLIST_EPISODE)) for ep in eps: epnum = ep.find(tvrpath.EPLIST_EPNUM).text title = ep.find(tvrpath.EPLIST_TITLE).text airdate = ep.find(tvrpath.EPLIST_AIRDATE).text results.append(Episode(sid, showname, seasonnum, epnum, title, airdate)) return results
def _tvrageEpisideInfo(self): log.debug("_tvrageEpisideInfo: Input Parm: {!s}".format(self.series.getDict())) self.series.episodeData = [] _epinfo = etree_to_dict(feeds.episode_list(self.series.tvrage_id, node="Episodelist"))["Episodelist"]["Season"] _seasons = self._tvrageBuildTVSeason(_epinfo) self.series.seasons = _seasons if self.series.season is not None: _season = self.series.seasons["<Season {0:04}>".format(int(self.series.season))] if self.series.episodeNums: for epno in self.series.episodeNums: _episode = _season.episodes["E{0:02d}".format(int(epno))] self.series.addRageEpisode(_season, _episode) else: for _episode in _season.episodes.itervalues(): self.series.addRageEpisode(_season, _episode) else: for _season in _seasons.itervalues(): for _episode in _season.episodes.itervalues(): self.series.addRageEpisode(_season, _episode) return