예제 #1
0
 def _copy_moviethumbs( self ):
     count = 0
     processeditems = 0
     json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMovies", "params": {"properties": ["file", "title", "thumbnail", "year"], "filter": {"field": "path", "operator": "contains", "value": "%s"}}, "id": 1}' % self.path)
     json_query = unicode(json_query, 'utf-8', errors='ignore')
     json_response = json.loads(json_query)
     if json_response.has_key('result') and (json_response['result'] != None) and (json_response['result'].has_key('movies')):
         totalitems = len( json_response['result']['movies'] )
         for item in json_response['result']['movies']:
             if self.dialog.iscanceled():
                 log('script cancelled')
                 return
             processeditems = processeditems + 1
             self.dialog.update( int( float( processeditems ) / float( totalitems ) * 100), LANGUAGE(32005) + ': ' + str( count + 1 ) )
             name = item['title']
             year = str(item['year'])
             artwork = item['thumbnail']
             tmp_filename = name + ' (' + year + ')' + '.jpg'
             filename = clean_filename( tmp_filename )
             if self.normalize_names == "true":
                 filename = video_library._normalize_string(filename)
             # test file path with movie_content to find source name
             moviethumbspath = self.moviethumbspath
             if self.split_movies_sources == "true" and item['file'] in self.movies_content:
                 media_source = self.movies_content[item['file']]
                 if self.normalize_names == "true":
                     media_source = video_library._normalize_string(media_source)
                 moviethumbspath = os.path.join( self.moviethumbspath, media_source )
             if artwork != '':
                 try:
                     xbmcvfs.copy( xbmc.translatePath( artwork ), os.path.join( moviethumbspath, filename ) )
                     count += 1
                 except:
                     log( 'failed to copy moviethumb' )
     log( 'moviethumbs copied: %s' % count )
예제 #2
0
 def _copy_seasonthumbs( self ):
     _TVShow_ = namedtuple('TVShow', ['id', 'path'])
     count = 0
     tvshows = []
     json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"properties": ["file"], "filter": {"field": "path", "operator": "contains", "value": "%s"}}, "id": 1}' % self.path)
     json_query = unicode(json_query, 'utf-8', errors='ignore')
     json_response = json.loads(json_query)
     if json_response.has_key('result') and (json_response['result'] != None) and (json_response['result'].has_key('tvshows')):
         for item in json_response['result']['tvshows']:
             if self.dialog.iscanceled():
                 log('script cancelled')
                 return
             tvshow = _TVShow_(int(item['tvshowid']), item['file'])
             tvshows.append(tvshow)
         for tvshow in tvshows:
             processeditems = 0
             json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetSeasons", "params": {"properties": ["thumbnail", "showtitle"], "tvshowid":%s}, "id": 1}' % tvshow.id )
             json_query = unicode(json_query, 'utf-8', errors='ignore')
             json_response = json.loads(json_query)
             if json_response.has_key('result') and (json_response['result'] != None) and (json_response['result'].has_key('seasons')):
                 totalitems = len( json_response['result']['seasons'] )
                 for item in json_response['result']['seasons']:
                     if self.dialog.iscanceled():
                         log('script cancelled')
                         return
                     processeditems = processeditems + 1
                     self.dialog.update( int( float( processeditems ) / float( totalitems ) * 100), LANGUAGE(32007) + ': ' + str( count + 1 ) )
                     name = item['label']
                     tvshow_title = item['showtitle']
                     artwork = item['thumbnail']
                     tmp_filename = tvshow_title + ' - ' + name + '.jpg'
                     filename = clean_filename( tmp_filename )
                     if self.normalize_names == "true":
                         filename = video_library._normalize_string(filename)        
                     # test file path with tv_content to find source name
                     seasonthumbspath = self.seasonthumbspath
                     if self.split_tvshows_sources == "true":
                         for tv_file_path, source_name in self.tvshows_content.items():
                             if tv_file_path.startswith(tvshow.path):
                                 if self.normalize_names == "true":
                                     source_name = video_library._normalize_string(source_name)
                                 seasonthumbspath = os.path.join( self.seasonthumbspath, source_name )
                                 break
                     if artwork != '':
                         try:
                             xbmcvfs.copy( xbmc.translatePath( artwork ), os.path.join( seasonthumbspath, filename ) )
                             count += 1
                         except:
                             log( 'failed to copy seasonthumb' )
     log( 'seasonthumbs copied: %s' % count )
예제 #3
0
 def _copy_albumthumbs( self ):
     count = 0
     processeditems = 0
     json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "AudioLibrary.GetAlbums", "params": {"properties": ["title", "thumbnail", "artist"]}, "id": 1}')
     json_query = unicode(json_query, 'utf-8', errors='ignore')
     json_response = json.loads(json_query)
     if json_response.has_key('result') and (json_response['result'] != None) and (json_response['result'].has_key('albums')):
         totalitems = len( json_response['result']['albums'] )
         for item in json_response['result']['albums']:
             if self.dialog.iscanceled():
                 log('script cancelled')
                 return
             processeditems = processeditems + 1
             self.dialog.update( int( float( processeditems ) / float( totalitems ) * 100), LANGUAGE(32011) + ': ' + str( count + 1 ) )
             name = item['title']
             artist = item['artist'][0]
             artwork = item['thumbnail']
             tmp_filename = artist + ' - ' + name + '.jpg'
             filename = clean_filename( tmp_filename )
             if self.normalize_names == "true":
                 filename = video_library._normalize_string(filename)
             if artwork != '':
                 try:
                     xbmcvfs.copy( xbmc.translatePath( artwork ), os.path.join( self.albumthumbspath, filename ) )
                     count += 1
                 except:
                     log( 'failed to copy albumthumb' )
     log( 'albumthumbs copied: %s' % count )
예제 #4
0
 def _copy_musicvideothumbs( self ):
     count = 0
     processeditems = 0
     json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMusicVideos", "params": {"properties": ["title", "thumbnail", "artist"], "filter": {"field": "path", "operator": "contains", "value": "%s"}}, "id": 1}' % self.path)
     json_query = unicode(json_query, 'utf-8', errors='ignore')
     json_response = json.loads(json_query)
     if json_response.has_key('result') and (json_response['result'] != None) and (json_response['result'].has_key('musicvideos')):
         totalitems = len( json_response['result']['musicvideos'] )
         for item in json_response['result']['musicvideos']:
             if self.dialog.iscanceled():
                 log('script cancelled')
                 return
             processeditems = processeditems + 1
             self.dialog.update( int( float( processeditems ) / float( totalitems ) * 100), LANGUAGE(32009) + ': ' + str( count + 1 ) )
             name = item['title']
             artwork = item['thumbnail']
             if item['artist']: # bug workaround, musicvideos can end up in the database without an artistname
                 artist = item['artist'][0]
                 tmp_filename = artist + ' - ' + name + '.jpg'
             else:
                 tmp_filename = name + '.jpg'
             filename = clean_filename( tmp_filename )
             if self.normalize_names == "true":
                 filename = video_library._normalize_string(filename)
             if artwork != '':
                 try:
                     xbmcvfs.copy( xbmc.translatePath( artwork ), os.path.join( self.musicvideothumbspath, filename ) )
                     count += 1
                 except:
                     log( 'failed to copy musicvideothumb' )
     log( 'musicvideothumbs copied: %s' % count )
예제 #5
0
 def _create_directories( self ):
     if not xbmcvfs.exists( self.directory ):
         try:
             xbmcvfs.mkdir( self.directory )
         except:
             self.directoriescreated = 'false'
             log( 'failed to create artwork directory' )
     if self.directoriescreated == 'true':
         for path in self.artworklist:
             try:
                 xbmcvfs.mkdir( path )
             except:
                 self.directoriescreated = 'false'
                 log( 'failed to create directories' )
     # Create media type based directories if defined by user (movies, tvshows)
     # media source format: [(name, path, content)]
     if self.directoriescreated == 'true':
         if self.split_movies_sources == "true" and (self.moviefanart == "true" or self.moviethumbs == 'true'):
             for ms_name in [m_s.name for m_s in self.movies_sources]:
                 try:
                     if self.normalize_names == "true":
                         ms_name = video_library._normalize_string(ms_name)
                     if self.moviefanart == "true":
                         xbmcvfs.mkdir( os.path.join( self.moviefanartpath, ms_name ) )
                     if self.moviethumbs == "true":
                         xbmcvfs.mkdir( os.path.join( self.moviethumbspath, ms_name ) )
                 except:
                     self.directoriescreated = 'false'
                     log( 'failed to create directories for movies content type' )
         if self.split_tvshows_sources == "true" and (self.tvshowfanart == 'true' or self.tvshowbanners == 'true' or self.tvshowposters == 'true' or self.seasonthumbs == 'true' or self.episodethumbs == 'true'):
             for tvs_name in [tv_s.name for tv_s in self.tvshows_sources]:
                 try:
                     if self.normalize_names == "true":
                         tvs_name = video_library._normalize_string(tvs_name)
                     if self.tvshowfanart == 'true':
                         xbmcvfs.mkdir( os.path.join( self.tvshowfanartpath, tvs_name ) )
                     if self.tvshowbanners == 'true':
                         xbmcvfs.mkdir( os.path.join( self.tvshowbannerspath, tvs_name ) )
                     if self.tvshowposters == 'true':
                         xbmcvfs.mkdir( os.path.join( self.tvshowposterspath, tvs_name ) )
                     if self.seasonthumbs == 'true':
                         xbmcvfs.mkdir( os.path.join( self.seasonthumbspath, tvs_name ) )
                     if self.episodethumbs == 'true':
                         xbmcvfs.mkdir( os.path.join( self.episodethumbspath, tvs_name ) )
                 except:
                     self.directoriescreated = 'false'
                     log( 'failed to create directories for tvshows content type' )
예제 #6
0
 def _copy_episodethumbs( self ):
     count = 0
     processeditems = 0
     json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"properties": ["file", "title", "thumbnail", "season", "episode", "showtitle"], "filter": {"field": "path", "operator": "contains", "value": "%s"}}, "id": 1}' % self.path)
     json_query = unicode(json_query, 'utf-8', errors='ignore')
     json_response = json.loads(json_query)
     if json_response.has_key('result') and (json_response['result'] != None) and (json_response['result'].has_key('episodes')):
         totalitems = len( json_response['result']['episodes'] )
         for item in json_response['result']['episodes']:
             if self.dialog.iscanceled():
                 log('script cancelled')
                 return
             processeditems = processeditems + 1
             self.dialog.update( int( float( processeditems ) / float( totalitems ) * 100), LANGUAGE(32008) + ': ' + str( count + 1 ) )
             name = item['title']
             tvshow = item['showtitle']
             artwork = item['thumbnail']
             season = item['season']
             episode = item['episode']
             episodenumber = "s%.2d%.2d" % (int( season ), int( episode ))
             tmp_filename = tvshow + ' - ' + episodenumber + ' - ' + name + '.jpg'
             filename = clean_filename( tmp_filename )
             if self.normalize_names == "true":
                 filename = video_library._normalize_string(filename)
             # test file path with tv_content to find source name
             episodethumbspath = self.episodethumbspath
             if self.split_tvshows_sources == "true" and item['file'] in self.tvshows_content:
                 source_name = self.tvshows_content[item['file']]
                 if self.normalize_names == "true":
                     source_name = video_library._normalize_string(source_name)
                 episodethumbspath = os.path.join( self.episodethumbspath, source_name)
             if artwork != '':
                 try:
                     xbmcvfs.copy( xbmc.translatePath( artwork ), os.path.join( episodethumbspath, filename ) )
                     count += 1
                 except:
                     log( 'failed to copy episodethumb' )
     log( 'episodethumbs copied: %s' % count )
예제 #7
0
 def _copy_tvshowposters( self ):
     count = 0
     processeditems = 0
     json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"properties": ["file", "title", "art"], "filter": {"field": "path", "operator": "contains", "value": "%s"}}, "id": 1}' % self.path)
     json_query = unicode(json_query, 'utf-8', errors='ignore')
     json_response = json.loads(json_query)
     if json_response.has_key('result') and (json_response['result'] != None) and (json_response['result'].has_key('tvshows')):
         totalitems = len( json_response['result']['tvshows'] )
         for item in json_response['result']['tvshows']:
             if self.dialog.iscanceled():
                 log('script cancelled')
                 return
             processeditems = processeditems + 1
             self.dialog.update( int( float( processeditems ) / float( totalitems ) * 100), LANGUAGE(32014) + ': ' + str( count + 1 ) )
             name = item['title']
             artwork = item['art'].get('poster')
             tmp_filename = name + '.jpg'
             filename = clean_filename( tmp_filename )
             if self.normalize_names == "true":
                 filename = video_library._normalize_string(filename)
             # test file path with tv_content to find source name
             tvshowposterspath = self.tvshowposterspath
             if self.split_tvshows_sources == "true":
                 for tv_file_path, source_name in self.tvshows_content.items():
                     if tv_file_path.startswith(item['file']):
                         if self.normalize_names == "true":
                             source_name = video_library._normalize_string(source_name)
                         tvshowposterspath = os.path.join( self.tvshowposterspath, source_name )
                         break
             if artwork != '':
                 try:
                     xbmcvfs.copy( xbmc.translatePath( artwork ), os.path.join( tvshowposterspath, filename ) )
                     count += 1
                 except:
                     log( 'failed to copy tvshowposter' )
     log( 'tvshowposters copied: %s' % count )