def listSeries(self,json_c=False,retr_tvdb_data=False): if retr_tvdb_data: t = myTvDB() result = [] series = self.tree.getroot() for serie in series.findall('serie'): emails_list = [] for email in serie.findall('email'): emails_list.append(email.text) keywords_list = [] for keyword in serie.findall('keyword'): keywords_list.append(keyword.text) if retr_tvdb_data: try: tvdb_data = t[int(serie.find('id').text)] except: return False result.append({ 'id': int(serie.find('id').text), 'name': str(serie.find('name').text), 'pattern': str(serie.find('pattern').text), 'season': int(serie.find('season').text), 'episode': int(serie.find('episode').text), 'status': int(serie.find('status').text), 'slot_id': int(serie.find('slot_id').text), 'expected': serie.find('expected').text if json_c else convert_date(serie.find('expected').text), 'emails': emails_list, 'keywords': keywords_list, 'tvdb': tvdb_data.data if retr_tvdb_data else {}, 'lastEpisode': tvdb_data.lastAired() if retr_tvdb_data else {}, 'nextEpisode': tvdb_data.nextAired() if retr_tvdb_data else {} }) return result
def input_serie(): global t if 't' not in globals(): t = myTvDB() else: logging.debug('connection saved') logging.debug('API initiator: %s', t) result = [] while len(result) < 1: serie = Prompt.promptSimple("Please type your TV Show ") serie = str(''.join(c for c in unicodedata.normalize('NFKD', unicode(serie, 'utf-8')) if unicodedata.category(c) != 'Mn')) result = t.search(serie) if len(result) == 0: print("Unknowned TV Show") elif len(result) > 1: choices = [] for val in result: if not 'firstaired' in val.keys(): val['firstaired'] = '????' choices.append([val['id'],val['seriesname']+' (' + val['firstaired'][0:4] + ')']) result = Prompt.promptChoice("Did you mean...",choices) result = t[result] elif len(result) == 1: result = t[result[0]['id']] return result
def getEpisode(self, serieID, season, episode): global t t = myTvDB() try: result = t[serieID][season][episode] return {'rtn': '200', 'result': result} except Exception, e: return {'rtn': '419', 'error': messages.returnCode['419']}
def getEpisode(self,serieID,season,episode): global t t = myTvDB() try: result = t[serieID][season][episode] return {'rtn':'200','result':result} except Exception,e: return {'rtn':'419','error':messages.returnCode['419']}
def search(self,pattern): global t t = myTvDB() try: result = t.search(pattern) if len(result)>0: return {'rtn':'200','result':result} else: return {'rtn':'408','error':messages.returnCode['408'].format(pattern)} except Exception,e: return {'rtn':'404','error':messages.returnCode['404'].format('TvDB')}
def logs(self, json_c=False): global t t = myTvDB() logger = Logger(log_file=myConstants.LOG_FILE) if json_c: result = [convert_dt2str(i) for i in logger.filter_log()] else: result = logger.filter_log() for i in result: i['msg'] = messages.returnCode[i['rtn']] if 'args' in i.keys(): i['msg'] = i['msg'].format(i['args']) i['seriesname'] = t[i['serieID']]['seriesname'] return {'rtn': '200', 'result': result}
def next_aired(serie_id,s_season=0,s_episode=0): global t if 't' not in globals(): t = myTvDB() else: logging.info('Connection saved') logging.debug('API initiator: %s', t) try: #for serie_id in series: if not isinstance(serie_id,int): serie_id = serie_id.find('id').text serie = t[int(serie_id)] except Exception,e: return {}
def next_aired(serie_id, s_season=0, s_episode=0): global t if 't' not in globals(): t = myTvDB() else: logging.info('Connection saved') logging.debug('API initiator: %s', t) try: #for serie_id in series: if not isinstance(serie_id, int): serie_id = serie_id.find('id').text serie = t[int(serie_id)] except Exception, e: return {}
def logs(self,json_c=False): global t t = myTvDB() logger = Logger(log_file = myConstants.LOG_FILE) if json_c: result = [ convert_dt2str(i) for i in logger.filter_log()] else: result = logger.filter_log() for i in result: i['msg'] = messages.returnCode[i['rtn']] if 'args' in i.keys(): i['msg'] = i['msg'].format(i['args']) i['seriesname'] = t[i['serieID']]['seriesname'] return {'rtn':'200','result': result}
def listSeries(self, json_c=False, retr_tvdb_data=False): if retr_tvdb_data: t = myTvDB() result = [] series = self.tree.getroot() for serie in series.findall('serie'): emails_list = [] for email in serie.findall('email'): emails_list.append(email.text) keywords_list = [] for keyword in serie.findall('keyword'): keywords_list.append(keyword.text) if retr_tvdb_data: try: tvdb_data = t[int(serie.find('id').text)] except: return False result.append({ 'id': int(serie.find('id').text), 'name': str(serie.find('name').text), 'pattern': str(serie.find('pattern').text), 'season': int(serie.find('season').text), 'episode': int(serie.find('episode').text), 'status': int(serie.find('status').text), 'slot_id': int(serie.find('slot_id').text), 'expected': serie.find('expected').text if json_c else convert_date( serie.find('expected').text), 'emails': emails_list, 'keywords': keywords_list, 'tvdb': tvdb_data.data if retr_tvdb_data else {}, 'lastEpisode': tvdb_data.lastAired() if retr_tvdb_data else {}, 'nextEpisode': tvdb_data.nextAired() if retr_tvdb_data else {} }) return result
def search(self, pattern): global t t = myTvDB() try: result = t.search(pattern) if len(result) > 0: return {'rtn': '200', 'result': result} else: return { 'rtn': '408', 'error': messages.returnCode['408'].format(pattern) } except Exception, e: return { 'rtn': '404', 'error': messages.returnCode['404'].format('TvDB') }
def getSerie(self, s_id, json_c=False, retr_tvdb_data=False): if retr_tvdb_data: t = myTvDB() if self.testSerieExists(s_id): serie = [serie for serie in self.tree["series"] if serie["id"] == s_id][0] if retr_tvdb_data: tvdb_data = t[int(serie["id"])] serie.update( { "tvdb": tvdb_data.data if retr_tvdb_data else {}, "lastEpisode": tvdb_data.lastAired() if retr_tvdb_data else {}, "nextEpisode": tvdb_data.nextAired() if retr_tvdb_data else {}, } ) return serie else: return False
def getSerie(self, s_id, json_c=False, retr_tvdb_data=False): if retr_tvdb_data: t = myTvDB() if self.testSerieExists(s_id): serie = [ serie for serie in self.tree['series'] if serie['id'] == s_id ][0] if retr_tvdb_data: tvdb_data = t[int(serie['id'])] serie.update({ 'tvdb': tvdb_data.data if retr_tvdb_data else {}, 'lastEpisode': tvdb_data.lastAired() if retr_tvdb_data else {}, 'nextEpisode': tvdb_data.nextAired() if retr_tvdb_data else {} }) return serie else: return False
def action_edit(m): global t logging.debug('Call function action_edit()') result = m.getSeries() logging.debug('result => '+str(result)) if result['rtn']!='200' and result['rtn']!='300': print('Error during TV Shows reading: '+result['error']) sys.exit() if result['rtn'] == '300': print("No TV Show scheduled") sys.exit() pattern = '{0} - S{1:02}E{2:02} - expected on {3} (status: {4})' choice = [] for serie in result['result']: choice.append([serie['id'],pattern.format(serie['name'],serie['season'],serie['episode'],serie['expected'],serie['status'])]) serie_id = Prompt.promptChoice("Select TV Show to modify",choice,0) for serie in result['result']: if serie['id'] == serie_id: break logging.debug(serie) if (serie['keywords'] is not None): keywords = ' / '.join(serie['keywords']) else: keywords = '' if (serie['emails'] is not None): emails = ' / '.join(serie['emails']) else: emails = '' configData = Prompt.promptChoice( "Selection value you want modify for "+serie['name']+" ("+str(serie['id'])+"):", [ ['pattern', 'Pattern: '+serie['pattern']], ['episode', 'Episode: '+'S{0:02}E{1:02}'.format(serie['season'],serie['episode'])], ['keywords','Search keywords: '+keywords], ['emails', 'Notification emails: ' + emails] ]) if configData == 'pattern': pattern = Prompt.promptSimple("Please enter the new search pattern:",serie['pattern']) serie['pattern'] = pattern if configData == 'episode': if 't' not in globals(): t = myTvDB() else: logging.debug('connection saved') logging.debug('API initiator: %s', t) TVresult = t[serie['id']] episode = select_episode(TVresult) serie['season'] = episode['season'] serie['episode'] = episode['episode'] serie['expected'] = convert_date(episode['expected']) elif configData == 'emails': serie['emails'] = input_emails() elif configData == 'keywords': serie['keywords'] = input_keywords() else: sys.exit() rc = m.setSerie(serie['id'],{ 'pattern':serie['pattern'], 'season':serie['season'], 'episode':serie['episode'], 'emails':serie['emails'], 'keywords':serie['keywords'], 'expected':serie['expected'] },json_c=False) if rc['rtn'] == '200': print("TV Show updated") else: print("Error during TV Show update")