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'
Example #2
0
    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'