예제 #1
0
 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()
예제 #4
0
 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')