def download_artwork(self, media_list, providers): self.processeditems = 0 for currentmedia in media_list: ### check if XBMC is shutting down if xbmc.abortRequested: log('XBMC abort requested, aborting') self.reportdata += ( '\n - %s: %s' %( __localize__(32150), time.strftime('%d %B %Y - %H:%M')) ) break ### check if script has been cancelled by user if dialog('iscanceled', background = self.settings.background): self.reportdata += ( '\n - %s [%s]: %s' %(__localize__(32151), self.mediatype, time.strftime('%d %B %Y - %H:%M')) ) break # abort script because of to many failures if not self.settings.failcount < self.settings.failthreshold: self.reportdata += ( '\n - %s: %s' %( __localize__(32152), time.strftime('%d %B %Y - %H:%M')) ) break # Declare some vars self.media_id = currentmedia["id"] self.media_name = currentmedia["name"] self.media_path = currentmedia["path"] dialog('update', percentage = int(float(self.processeditems) / float(len(media_list)) * 100.0), line1 = self.media_name, line2 = __localize__(32008), line3 = '', background = self.settings.background) log('########################################################') log('Processing media: %s' % self.media_name, xbmc.LOGNOTICE) # do some id conversions if not self.mediatype == 'tvshow' and self.media_id in ['','tt0000000','0']: log('No IMDB ID found, trying to search themoviedb.org for matching title.', xbmc.LOGNOTICE) self.media_id = tmdb._search_movie(self.media_name,currentmedia["year"]) elif self.mediatype == 'movie' and not self.media_id == '' and not self.media_id.startswith('tt'): log('No valid ID found, trying to search themoviedb.org for matching title.', xbmc.LOGNOTICE) self.media_id = tmdb._search_movie(self.media_name,currentmedia["year"]) ''' elif self.mediatype == 'movie' and not self.media_id == '' and not self.media_id.startswith('tt'): self.media_id_old = self.media_id self.media_id = "tt%.7d" % int(self.media_id) log('No IMDB ID found, try ID conversion: %s -> %s' % (self.media_id_old,self.media_id), xbmc.LOGNOTICE) ''' log('Provider ID: %s' % self.media_id) log('Media path: %s' % self.media_path) # Declare the target folders self.target_extrafanartdirs = [] self.target_extrathumbsdirs = [] self.target_artworkdir = [] artwork_dir = os.path.join(self.media_path + '/') extrafanart_dir = os.path.join(artwork_dir + 'extrafanart' + '/') extrathumbs_dir = os.path.join(artwork_dir + 'extrathumbs' + '/') self.target_artworkdir.append(artwork_dir) self.target_extrafanartdirs.append(extrafanart_dir) self.target_extrathumbsdirs.append(extrathumbs_dir) # Check if using the centralize option if self.settings.centralize_enable: if self.mediatype == 'tvshow': self.target_extrafanartdirs.append(self.settings.centralfolder_tvshows) elif self.mediatype == 'movie': self.target_extrafanartdirs.append(self.settings.centralfolder_movies) # Check for presence of id used by source sites if self.mode == 'gui' and ((self.media_id == '') or (self.mediatype == 'tvshow' and self.media_id.startswith('tt'))): dialog('close', background = self.settings.background) dialog('okdialog','' ,self.media_name , __localize__(32030)) elif self.media_id == '': log('- No ID found, skipping', xbmc.LOGNOTICE) self.failed_items.append('[%s] ID %s' %( self.media_name, __localize__(32022) )) elif self.mediatype == 'tvshow' and self.media_id.startswith('tt'): log('- IMDB ID found for TV show, skipping', xbmc.LOGNOTICE) self.failed_items.append('[%s]: TVDB ID %s' %( self.media_name, __localize__(32022) )) # If correct ID found continue else: self.temp_image_list = [] self.image_list = [] # Run through all providers getting their imagelisting for self.provider in providers: if not self.settings.failcount < self.settings.failthreshold: break artwork_result = '' xmlfailcount = 0 while not artwork_result == 'pass' and not artwork_result == 'skipping': if artwork_result == 'retrying': xbmc.sleep(self.settings.api_timedelay) try: self.temp_image_list = self.provider.get_image_list(self.media_id) except HTTP404Error, e: errmsg = '404: File not found' artwork_result = 'skipping' except HTTP503Error, e: xmlfailcount += 1 errmsg = '503: API Limit Exceeded' artwork_result = 'retrying' except NoFanartError, e: errmsg = 'No artwork found' artwork_result = 'skipping' self.failed_items.append('[%s] %s' %(self.media_name, __localize__(32133)) ) except ItemNotFoundError, e: errmsg = '%s not found' % self.media_id artwork_result = 'skipping' except ExpatError, e: xmlfailcount += 1 errmsg = 'Error parsing xml: %s' % str(e) artwork_result = 'retrying'
def download_artwork(self, media_list, providers): self.processeditems = 0 for currentmedia in media_list: ### check if XBMC is shutting down if xbmc.abortRequested: log('XBMC abort requested, aborting') break ### check if script has been cancelled by user if dialog('iscanceled', background=self.settings.background): self.reportdata += ('\n - add-on cancelled: %s' % time.strftime('%d %B %Y - %H:%M')) break if not self.settings.failcount < self.settings.failthreshold: self.reportdata += ( '\n - add-on aborted because of problems. Check the log: %s' % time.strftime('%d %B %Y - %H:%M')) break # Declare some vars self.media_id = currentmedia["id"] self.media_name = currentmedia["name"] self.media_path = currentmedia["path"] dialog('update', percentage=int( float(self.processeditems) / float(len(media_list)) * 100.0), line1=self.media_name, line2=__localize__(32008), line3='', background=self.settings.background) log('########################################################') log('Processing media: %s' % self.media_name, xbmc.LOGNOTICE) # do some id conversions if not self.mediatype == 'tvshow' and self.media_id in [ '', 'tt0000000', '0' ]: self.media_id = tmdb._search_movie(self.media_name, currentmedia["year"]) log( 'No IMDB ID found, try searching themoviedb.org. Found TMDB ID: %s' % self.media_id, xbmc.LOGNOTICE) elif self.mediatype == 'movie' and not self.media_id == '' and not self.media_id.startswith( 'tt'): self.media_id_old = self.media_id self.media_id = "tt%.7d" % int(self.media_id) log( 'No IMDB ID found, try ID conversion: %s -> %s' % (self.media_id_old, self.media_id), xbmc.LOGNOTICE) log('Provider ID: %s' % self.media_id) log('Media path: %s' % self.media_path) # Declare the target folders self.target_extrafanartdirs = [] self.target_extrathumbsdirs = [] self.target_artworkdir = [] artwork_dir = os.path.join(self.media_path + '/') extrafanart_dir = os.path.join(artwork_dir + 'extrafanart' + '/') extrathumbs_dir = os.path.join(artwork_dir + 'extrathumbs' + '/') self.target_artworkdir.append(artwork_dir) self.target_extrafanartdirs.append(extrafanart_dir) self.target_extrathumbsdirs.append(extrathumbs_dir) # Check if using the centralize option if self.settings.centralize_enable: if self.mediatype == 'tvshow': self.target_extrafanartdirs.append( self.settings.centralfolder_tvshows) elif self.mediatype == 'movie': self.target_extrafanartdirs.append( self.settings.centralfolder_movies) # Check for presence of id used by source sites if self.mode == 'gui' and ((self.media_id == '') or (self.mediatype == 'tvshow' and self.media_id.startswith('tt'))): dialog('close', background=self.settings.background) dialog('okdialog', '', self.media_name, __localize__(32030)) elif self.media_id == '': log('- No ID found, skipping', xbmc.LOGNOTICE) self.failed_items.append('[%s] No ID found, skipping' % self.media_name) elif self.mediatype == 'tvshow' and self.media_id.startswith('tt'): log('- IMDB ID found for TV show, skipping', xbmc.LOGNOTICE) self.failed_items.append( '[%s]: IMDB ID found for TV show, skipping' % self.media_name) # If correct ID found continue else: self.temp_image_list = [] self.image_list = [] # Run through all providers getting their imagelisting for self.provider in providers: if not self.settings.failcount < self.settings.failthreshold: break artwork_result = '' xmlfailcount = 0 while not artwork_result == 'pass' and not artwork_result == 'skipping': if artwork_result == 'retrying': xbmc.sleep(self.settings.api_timedelay) try: self.temp_image_list = self.provider.get_image_list( self.media_id) except HTTP404Error, e: errmsg = '404: File not found' artwork_result = 'skipping' except HTTP503Error, e: xmlfailcount += 1 errmsg = '503: API Limit Exceeded' artwork_result = 'retrying' except NoFanartError, e: errmsg = 'No artwork found' artwork_result = 'skipping' self.failed_items.append('[%s] No fanart found' % self.media_name) except ItemNotFoundError, e: errmsg = '%s not found' % self.media_id artwork_result = 'skipping' except ExpatError, e: xmlfailcount += 1 errmsg = 'Error parsing xml: %s' % str(e) artwork_result = 'retrying'