def get_tmdb_id(self, itemtype=None, imdb_id=None, tvdb_id=None, query=None, year=None, selectdialog=False, usedetails=True, longcache=False, returntuple=False): func = self.get_request_lc if longcache else self.get_request_sc if not itemtype: return request = None if itemtype == 'genre' and query: return _genreids.get(query, '') elif imdb_id: request = func('find', imdb_id, language=self.req_language, external_source='imdb_id') request = request.get('{0}_results'.format(itemtype), []) elif tvdb_id: request = func('find', tvdb_id, language=self.req_language, external_source='tvdb_id') request = request.get('{0}_results'.format(itemtype), []) elif query: query = query.split(' (', 1)[0] # Scrub added (Year) or other cruft in parentheses () added by Addons or TVDb if itemtype == 'tv': request = func('search', itemtype, language=self.req_language, query=query, first_air_date_year=year) else: request = func('search', itemtype, language=self.req_language, query=query, year=year) request = request.get('results', []) if not request: return itemindex = 0 if selectdialog: item = utils.dialog_select_item(items=request, details=self, usedetails=usedetails) if returntuple: return (self.get_title(item), item.get('id')) if item else None return item.get('id') if item else None return request[itemindex].get('id')
def add_prop(self): item = utils.dialog_select_item(self.params.get('add_prop')) if not item: return prop_name = '{0}{1}'.format(self.prefixname, self.params.get('prop_id')) self.home.setProperty(prop_name, item) self.call_auto()
def add_query(self): with utils.busy_dialog(): query = utils.try_decode_string(self.params.get('add_query', '')) item = utils.dialog_select_item(query) if not item: return tmdb_id = self.tmdb.get_tmdb_id(self.params.get('type'), query=item, selectdialog=True) if not tmdb_id: utils.kodi_log(u'Unable to find TMDb ID!\nQuery: {0} Type: {1}'.format(self.params.get('add_query'), self.params.get('type')), 1) return url = 'plugin://plugin.video.skin.info.provider/?info=details&type={0}&tmdb_id={1}'.format(self.params.get('type'), tmdb_id) if url == self.home.getProperty(self.prefixcurrent): return # Already added so let's quit as user probably clicked twice self.position = self.get_position() + 1 self.set_props(self.position, url) self.lock_path(self.params.get('prevent_del')) self.call_auto()
def get_tmdb_id(self, itemtype=None, imdb_id=None, tvdb_id=None, query=None, year=None, selectdialog=False, usedetails=True, longcache=False, returntuple=False, epyear=None): func = self.get_request_lc if longcache else self.get_request_sc if not itemtype: return request = None if itemtype == 'genre' and query: return _genreids.get(query, '') elif imdb_id: request = func('find', imdb_id, language=self.req_language, external_source='imdb_id') request = request.get('{0}_results'.format(itemtype), []) elif tvdb_id: request = func('find', tvdb_id, language=self.req_language, external_source='tvdb_id') request = request.get('{0}_results'.format(itemtype), []) elif query: query = query.split( ' (', 1 )[0] # Scrub added (Year) or other cruft in parentheses () added by Addons or TVDb if itemtype == 'tv': request = func('search', itemtype, language=self.req_language, query=query, first_air_date_year=year) else: request = func('search', itemtype, language=self.req_language, query=query, year=year) request = request.get('results', []) if not request: return if selectdialog: item = utils.dialog_select_item(items=request, details=self, usedetails=usedetails) if returntuple: return (self.get_title(item), item.get('id')) if item else None return item.get('id') if item else None if itemtype == 'tv' and epyear and len(request) > 1: for i in sorted(request, key=lambda k: k.get('first_air_date', ''), reverse=True): if not i.get('first_air_date'): continue if utils.try_parse_int( i.get('first_air_date', '9999')[:4]) <= utils.try_parse_int(epyear): if query in [i.get('name'), i.get('original_name')]: return i.get('id') return request[0].get('id')