Пример #1
0
	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
Пример #2
0
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
Пример #3
0
 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']}
Пример #4
0
	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']}
Пример #5
0
	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')}
Пример #6
0
    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}
Пример #7
0
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 {}
Пример #8
0
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 {}
Пример #9
0
	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}
Пример #10
0
 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
Пример #11
0
 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')
         }
Пример #12
0
 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
Пример #13
0
 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
Пример #14
0
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")