Add-on:Artist Slideshow

From Official Kodi Wiki
Jump to: navigation, search

Artist Slideshow

See this add-on on the kodi.tv showcase

Author: pkscout,ronie
Website: link
Type: Program
Repo: Kodi.tv repo v18
Kodi.tv repo v17
Kodi.tv repo v16

License: GPL v2.0
Source: Source code
Summary: Download images and additional info of the currently playing artist
Home icon grey.png   ▶ Add-ons ▶ Artist Slideshow
Attention talk.png Need help with this add-on? See here.

Addon to download images and additional information from fanart.tv and theaudiodb.com of the currently playing artist. The images, along with local artists' images, and info can be used by the skin to create a slideshow for the artist being listened to.

Contents

1 Installing

To install this add-on you must do so from the Add-on manager from within Kodi by going to

  1. The home screen
  2. Add-ons
  3. Download
  4. Program Add-ons
  5. Artist Slideshow
  6. Install

2 Donations

Donations are not accepted for Artist Slideshow. If you find this addon useful, please consider instead supporting the services that make Artist Slideshow possible.

3 Features

  • displays slideshow as background for music visualization (must use a compatible skin or update skin using the instructions below)
    • option to have artist images downloaded and/or use a local directory of artist images
    • option for a fallback slideshow if no local or remote images are found
    • option to have a single slideshow displayed regardless of artist playing
  • options to download artwork from fanart.tv and theaudiodb.com to display as background for music visualization
    • option to download artist bio and other additional information from Kodi's internal database, theaudiodb.com, or last.fm (skin must support display of this information)
      • support for overriding the artist bio, discography, and similar artists list with local information
    • option to limit size of download cache
    • option to display notification during download of first image for an artist with option to provide a local image (or images) to use instead of default Kodi notification
    • option to display notification when downloads are complete (or no images found for download)
    • ability to exclude images from being downloaded (see Tips and Tricks below)
  • support for multiple artists for a single song (as passed by Kodi)
    • also supports iTunes/Amazon standard of song name (feat. artist 2) in title MP3 tag
  • support for internet streams that put the artist name in the Kodi title field
  • support for other addons using Artist Slideshow to provide the background
  • support for an alternate name for the folder containing the images (i.e. something instead of extrafanart)

4 How to use this addon

4.1 Find a Compatible Skin

There are a number of skins that support Artist Slideshow, but keeping a running list of them has proved too much work. I'd suggest visiting the Kodi forums and see if the skin you want to use supports Artist Slideshow. I do have a modified version of the default Confluence theme (Kodi 16 and earlier) and Estuary theme (Kodi 17 and later) that include support for Artist Slideshow. To use that skin you will need to download and install my skin repo (Gotham or Helix or later) and then install the skin from there.

4.2 Using Artist Slideshow with the default Confluence Skin

Depending on the version of Kodi you have and the operating system on which you are running it, the files you need to modify will be in different locations. If you don't know where skin files are stored, then this is not the option for you. Please see the section above for information on downloading and installing a skin that supports Artist Slideshow.

Change Default Skin Files

This is probably the easiest way, but anytime you upgrade or reinstall XBMC you will have to redo these modifications. Go to the Kodi installation root folder (see this wiki page under special://xbmc for the path for your operating system). Then go to addons --> skin.confluence. Quit Kodi, modify the appropriate files (see below in the Changes to MusicVisualization.xml section), and then start up Kodi again.

Create Custom Skin

This is a bit more complicated but will keep your modifications intact across upgrades. Go to the Kodi installation folder, enter the addon directory and find the skin.confluence folder. Make a copy of it and move it to your user addon directory. Rename the directory to skin.confluence.mod. In that directory open the file called addon.xml. Change the third line to read id="skin.confluence.mod" and then launch (or relaunch Kodi). Go to SYSTEM --> APPEARANCE --> SKIN and switch to the modified skin. When you do that you will lose all your current skin settings, so you might want to write them down before changing. Quit Kodi again, modify the appropriate files (see below in the Changes to MusicVisualization.xml section), and then start up Kodi again.

4.3 Changes to MusicVisualisation.xml

To run the script:

<onload>RunScript(script.artistslideshow)</onload>

On AppleTV if ArtistSlideshow isn't updating after the first artist, use this instead:

<onload>RunScript(script.artistslideshow, daemon=True)</onload>

To add a multiimage conrol:

<control type="multiimage">
    <posx>0</posx>
    <posy>0</posy>
    <width>1280</width>
    <height>720</height>
    <imagepath background="true">$INFO[Window(Visualisation).Property(ArtistSlideshow)]</imagepath>
    <aspectratio>keep</aspectratio>
    <timeperimage>10000</timeperimage>
    <fadetime>2000</fadetime>
    <randomize>true</randomize>
</control>

5 Addon settings

5.1 Slideshow

Local artist folder: (default none)
path to a directory that has artist images. Images must be organized in artist/extrafanart/ unless you set a different local fanart folder name in the advanced settings.

Priority: (default remote first)
three options: remote first, local first, both
remote first will try and download images from remote sites. if none found will use local images. if none found will use fallback slideshow
local first will use local images. if none found will try and download remote images. if none found will use fallback slideshow
both will check for local images first. if they exist the downloaded images will be placed in the same directory as the local images. if not remote images will be stored in normal cache dir.

Always use local artist path for storage: (default false)
If you are using local image folders you've downloaded from other sources, by default AS will only add images in those directories if the artist directory already exists. If this option is set to TRUE, then AS will create new artist folders in the local artist path and save the images there. This is useful if you are sharing images between Kodi instances on different TVs.

Use fallback slideshow (default false)
Tells Kodi to use this folder of images if no artwork is found for the playing artist
Fallback slideshow folder: (default none)
path to a directory of images that should be used if no local or remote images can be found.

Include root level fanart.jpg / Include root level folder.jpg (default false for both)
If you have your local images organized using many popular image download addons, you might not have a couple images in the root of your artist directory that aren't included in the extrafanart folder. This option will make a copy of these two images (or fanart.png / folder.png) and place them in your extrafanart folder so they are included in your slideshow.

Use override slideshow (default false)
Tells Kodi to use this folder of images no matter what artist is playing. With this set no artist artwork will ever be downloaded.
Override slideshow folder: (default none)
path to a directory of images that should be used intead of artist artwork.

Use transparent background when no artist found: (default false)
When set to true, Artist Slideshow will use a transparent background (instead of a black one), allowing the layer below to be seen. Please note that exactly what you see will be very dependent on the skin you are using and the settings you have for that skin.

5.2 Images

Download images from fanart.tv: (default false)
fanart.tv has very high quality (1080p) artwork. To use this service, you must have the MusicBrainz Artist ID tag in your music files and have that scanned into your Kodi library.
Client API key (default empty)
fanart.tv provides the option for individual users to have an API key. For information on the benefits that provides, please see https://fanart.tv/2015/01/personal-api-keys/
Download all images regardless of resolution: (default false)
Downloads images even if they are not in 16x9 aspect ratio.

Download images from theaudiodb.com: (default false)
theaudiodb.com has no more than three images per artist, and they are often duplicates of artwork from fanart.tv. To use this service, you must have the MusicBrainz Artist ID tag in your music files and have that scanned into your Kodi library.

5.3 Album Info

Download album info from theaudiodb.com (default false)
Downloads the artist's discography from theaudiodb.com. To use this service, you must have the MusicBrainz Artist ID tag in your music files and have that scanned into your Kodi library.
Priority (range 1 - 10, default 5)
If multiple services are enabled, the service with priority 1 will be used first, and the one with priority 10 will be used last.
Download album info fromlast.fm (default false)
Downloads the artist's discography from last.fm.
Priority (range 1 - 10, default 5)
If multiple services are enabled, the service with priority 1 will be used first, and the one with priority 10 will be used last.

5.4 Artist Bio

Preferred language for artist bio:' (default: English)
Sets the language Kodi uses when attempting to download a bio. If no bio for that language is returned, no bio is returned (even if available in other languages).
Get artist bio from Kodi: (default: true)
If selected, AS will ask Kodi for the artist bio that was stored when the music library was last scraped.
Priority (range 1 - 10, default 5)
If multiple services are enabled, the service with priority 1 will be used first, and the one with priority 10 will be used last.
Get artist bio from theaudiodb.com (default: false)
If selected, AS will download the artist bio matching the selected language from theaudiodb.com.
Priority (range 1 - 10, default 5)
If multiple services are enabled, the service with priority 1 will be used first, and the one with priority 10 will be used last.
Get artist bio fromlast.fm (default: false)
If selected, AS will download the artist bio matching the selected language from last.fm.
Priority (range 1 - 10, default 5)
If multiple services are enabled, the service with priority 1 will be used first, and the one with priority 10 will be used last.

5.5 Similar Artists

Download similar artists fromlast.fm (default: false)
If selected, AS will download a list of similar artists from last.fm.
Priority (range 1 - 10, default 5)
If multiple services are enabled, the service with priority 1 will be used first, and the one with priority 10 will be used last.

5.6 Advanced

Disable secondary and featured artist images: (default false)
if enabled, AS will show only images for the primary artist of a song.

Limit size of download cache: (default false)
if enabled, the download cache will be trimmed (oldest first) to keep the size below the specified minimum. Please note that if you set the image download priority to both on the Slideshow settings, this setting has no effect, as the cache manger is disabled to protect your local artwork from being deleted.
Maximum cache size (in megabytes): (default 1024)
if Limit size of download cache is set to true, this allows the user to specify the maximum size of the cache

Download notification type: (default none)
three options: none, text notifications, custom images
none will surpress all notifications
text notifications will use the built in XBMC notification pop-up to let you know about images being downloaded for the first time and the completion status (either nothing downloaded or download complete)
custom images let's you show an image or directory of images when artwork for an artist is being downloaded for the first time. This won't display if there are local images available to display. If you select this option you must provide the path to the directory that has the custom image or images in it (stored in custom notification images folder)
Progress images folder: (default empty)
Must be set to a valid local path with one or more images to be displayed while first image for an artist is being downloaded

Alternate name for local fanart folder: (default empty)
this is a text field where you can provide an alternate name for the add-on to use to find local images. If this has text in it, the add-on will look in artist/customfolder instead of artist/extrafanart for local images.

AS replaces certain reserved characters in an artist names with an alternate character when looking for a local artist folder.
Platform for image store can be Windows, MacOS, or Other. When set to Windows, the characters <>:"/\|?*and trailing periods are replaced with whatever is set in the settings. When set to MacOS, the character : is replaced with whatever is set in the settings. If set to other, any characters defined by os.path.sep are replaced with whatever is set in the settings.
Replace illegal path characters in artist name with (default _)
This character replaces any illegal characters noted above.
Replace trailing period in artist name with: (default BLANK)
This character replaces any trailing period as noted above.

Enable debug logging: (default false)
When enabled, if you have XBMC logging set the DEBUG you will get a very verbose set of information in your log file. You should only need to activate this when troubleshooting issues.

6 Overriding Artist Info with Local Information

6.1 Directory Structure

To override the downloaded information, you need to create another directory in the folder you defined in the settings as the Local artist folder. Your folder structure will look something like this:

<artistname>
    extrafanart
    override
        albums (folder with artist album art)
            albumname.jpg (any XBMC image type supported)
            anotheralbumname.jpg
        artistbio.nfo (see below for format)
        artistsalbum.nfo (see below for format)
        artistsimilar.nfo (see below for format)
        similar
            artistimage.jpg
            anotherartistimage.jpg

6.2 Override nfo file formats

All .nfo files are xml files (pretty simple ones) patterned after the XML files downloaded from last.fm.

Example artistbio.nfo

<?xml version="1.0" encoding="utf-8"?>
<artist>
    <content>This is the artist's bio.</content>
</artist>

Example artistsalbum.nfo

<?xml version="1.0" encoding="utf-8"?>
<topalbums>
    <album>
        <name>Some Album</name>
        <image>albumname.jpg</image>
    </album>
    <album>
        <name>Another Album</name>
        <image>anotheralbumname.jpg</image>
    </album>
</topalbums>

Example artistsimilar.nfo

<?xml version="1.0" encoding="utf-8"?>
<similarartists>
    <artist>
        <name>Some Similar Artist</name>
        <image>artistimage.jpg</image>
    </artist>
    <artist>
        <name>Another Similar Artist</name>
        <image>anotherartistimage.jpg</image>
    </artist>
</similarartists>

7 Accessing Script from Other Screens

You might want to use Artist Slideshow to display images somewhere other than on the music visualization. To do that you need to start Artist Slideshow when XBMC starts using DAEMON mode. To do that use:

 RunScript(script.artistslideshow, daemon=True)

8 New skin properties

Window(Visualisation).Property(ArtistSlideshow)

This is the path to the directory containing the downloaded images for the currently playing artist


Window(Visualisation).Property(ArtistSlideshowRunning)

This one is used internally by the script to check if it is already running. There's no need to use this property in your skin.


Window(Visualisation).Property(ArtistSlideshow.ArtistBiography)

Artist biography from theaudiodb.com (or last.fm as fallback)


Window(Visualisation).Property(ArtistSlideshow.%d.SimilarName)
Window(Visualisation).Property(ArtistSlideshow.%d.SimilarThumb)

Similar artists (from last.fm)


Window(Visualisation).Property(ArtistSlideshow.%d.AlbumName)
Window(Visualisation).Property(ArtistSlideshow.%d.AlbumThumb)

Albums by the artist (from theaudiodb.com)


Window(Visualisation).Property(ArtistSlideshowTransparent)

Let's the skin know that the user has enabled the option to have AS use a transparent background when no artist images are found.


Window(Visualisation).Property(ArtistSlideshow.ArtworkReady)

Set to "true" as soon as an image is ready to be displayed; blank when no image is ready to be displayed. This is useful if you want to show some alternate image until AS has images ready to display.

9 How to call this addon from another addon

To use this addon to provide the background for another addon, the calling addon must create a window that uses a multimage control:

<control type="multiimage">
    <posx>0</posx>
    <posy>0</posy>
    <width>1280</width>
    <height>720</height>
    <imagepath background="true">$INFO[Window.Property(ArtistSlideshow)]</imagepath>
    <aspectratio>keep</aspectratio>
    <timeperimage>10000</timeperimage>
    <fadetime>2000</fadetime>
    <randomize>true</randomize>
    <animation effect="fade" start="0" end="100" time="300">Visible</animation>
    <animation effect="fade" start="100" end="0" time="300">Hidden</animation>
</control>

That window must have an infolabel in which the currently playing artist is stored (suggested name is CURRENTARTIST) as well as one for the song title (suggested name is CURRENTTILE). It is the responsibility of the calling addon to change those infolabels when the artist/song changes.

9.1 Calling the addon

Artist Slideshow does not exit after being called. It continues to run to check for changes in the artist infolabel. Becasue of that, the calling addon will have to create another thread for Artist Slideshow. The calling addon needs to import the python theading module for this to work.

def runArtistSlideshow(self):
    #startup artistslideshow
    xbmcgui.Window(xbmcgui.getCurrentWindowId()).setProperty("ArtistSlideshow.ExternalCall", "True")
    #assumes addon is using suggested infolabel name of CURRENTARTIST and CURRENTTITLE
    artistslideshow = "RunScript(script.artistslideshow,windowid=%s&artistfield=%s&titlefield=%s&albumfield=%s&mbidfield=%s)"
        % (xbmcgui.getCurrentWindowId(), "CURRENTARTIST", "CURRENTTITLE", "CURRENTALBUM", "CURRENTMBID")
    xbmc.executebuiltin(artistslideshow)

self.thread = threading.Thread(target=self.runArtistSlideshow)
self.thread.setDaemon(True)
self.thread.start()

When calling Artist Slideshow, only artistfield and titlefield (and their corresponding information stored in the skin) are required. It would be helpful to have albumfield, as it makes it easier to lookup the Musicbrainz ID. If you happen to have the MusicBrainz ID, you can pass that as well.

Note that the line wrap in artistslideshow = is there just for presentation purposes. If you copy and paste the code exactly as is you will get a python error. The suggestion is for the addon to spawn this thread right after it spawns the window.

9.2 Exiting the addon

When the calling addon is preparing to exit, it must tell Artist Slideshow to stop and wait until it has. This logic should be added *before* the addon's window is destroyed. Failure to include this step will likely cause XBMC to crash.

#tell ArtistSlideshow to exit
xbmcgui.Window(xbmcgui.getCurrentWindowId()).clearProperty("ArtistSlideshow.ExternalCall")
#wait until ArtistSlideshow exits
while (not xbmcgui.Window(xbmcgui.getCurrentWindowId()).getProperty("ArtistSlideshow.CleanupComplete") == "True"):
    time.sleep(1)

9.3 Additional script/skin properties available

Window.Property(ArtistSlideshow)

This is the path to the directory containing the downloaded images for the currently playing artist.


Window.Property(ArtistSlideshow.ArtistBiography)

Artist biography from theaudiodb.com (or last.fm as fallback)


Window.Property(ArtistSlideshow.%d.SimilarName)
Window.Property(ArtistSlideshow.%d.SimilarThumb)

Similar artists from last.fm


Window.Property(ArtistSlideshow.%d.AlbumName)
Window.Property(ArtistSlideshow.%d.AlbumThumb)

Albums by the artist from theaudiodb.com


Window.Property(ArtistSlideshowRunning)

This one is used internally by Artist Slideshow to check if it is already running. There's no need to use this property in the calling addon's skin.


Window.Property(ArtistSlideshowTransparent)

Let's the skin know that the user has enabled the option to have AS use a transparent background when no artist images are found.


Window.Property(ArtistSlideshow.ArtworkReady)

Set to "true" as soon as an image is ready to be displayed; blank when no image is ready to be displayed. This is useful if you want to show some alternate image until AS has images ready to display.


Window.Property(ArtistSlideshow.ExternalCall)

An external addon needs to set this to True so that Artist Slideshow will run properly when called by an external script. This property should be cleared to tell ArtistSlideshow to stop running.


Window.Property(ArtistSlideshow.CleanupComplete)

This one is used internally by Artist Slideshow to tell an external script that ArtistSlideshow is done running and is exiting.

10 Tips and Tricks

10.1 Using Artist Slideshow with Fanart.tv

In order to download images from fanart.tv, AS must have the MusicBrainz ID for the playing artist. The easiest way to get that information is to tag your music using MusicBrainz Picard. Once you have done that rescan your music library to import the new information into Kodi.

10.2 Removing Unwanted Images

Every artist's directory (whether your local one or the one in the cache directory) will have a file named _imagedb.nfo. Once an image has been downloaded, the image name will be stored in that file. If you delete an image, it will not be downloaded again unless you delete the image name from _imagedb.nfo file.

10.3 Using Artist Slideshow with a Visualization

If you want to see artist images and a visualization, make sure the skin is loading the Artist Slideshow images first (i.e at the top of the XML file). That will ensure the artist image is the furtherest back layer. If you choose to use a visualization, please select one with a significant amount of transparent area or you may not see much of anything. For any other skin, please contact the skin developer for a clarification on how visualizations interact with Artist Slideshow.

10.4 Using Artist Slideshow with AppleTV

On AppleTV the PAPlayer sometimes stops after each song and restarts at the beginning of a new one. That, by default, causes Artist Slideshow to stop. Once that happens, artist background images no longer update. Please see Changes to MusicVisualisation.xml above for a workaround.

11 Getting help

If you need assistance using Artist Slideshow, integrating it a skin, or calling it using another addon, please see the support thread on the XBMC forums.

http://forum.kodi.tv/showthread.php?t=124880

12 Beta Testing

If you are interested in beta testing new versions of this add on (or just like being on the bleeding edge of up to date), you can install beta versions (Helix or later, there will be no more updates for Gotham or earlier) from pkscout's Add On Beta Channel. You can also monitor the support thread, as links to particular beta releases will be available there as well.

Personal tools
Namespaces

Variants
Actions
Navigation
Wiki help
Toolbox