Add-on:Artist Slideshow

From XBMC
Jump to: navigation, search
Artist Slideshow
Author: ronie/kyleejohnson (pkscuot)
Type: Program
Version: 1.5.0
Repo: XBMC.org (v11)
XBMC.org (v12)

Summary: Download images and additional info of the currently playing artist

Addon to download images and additional information from Last.FM and htbackdrops.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 XBMC by going to:

  1. Settings
  2. Add-ons
  3. Get add-ons
  4. XBMC.org Add-ons
  5. Program Add-ons
  6. Artist Slideshow
  7. Install

2 Features

If you are using the default Confluence skin (or Confluence Vertical), you can download the modified files for Eden or Frodo

3 Limitations

4 How to use this addon in your skin

4.1 Using Artist Slideshow with the default Confluence Skin

If you are using the default Confluence skin, you can download modified skin files for Eden (XBMC 11) or Frodo (XBMC 12). You have two choices when installing these files.

Overwrite Default Skin Files

This is probably the easiest way, but anytime you upgrade or reinstall XBMC you will have to reinstall these modifications. Go to the XBMC installation root folder (see this wiki page under special://xbmc for the path for your operating system). Then go to addons --> skin.confluence. Use the files from the zip to overwrite the ones in this directory. Read the README file for the correct location of the files.

Create Custom Skin

This is a bit more complicated but will keep your modifications intact across upgrades. Go to the directory above, enter the addon directory and find the skin.confluence folder. Make a copy of it and move it to your user settings directory.

Operating system settings folder paths
Android Android/data/org.xbmc.xbmc/files/.xbmc/
iOS - Varied /private/var/mobile/Library/Preferences/XBMC/
Linux $HOME/.xbmc/userdata/
Mac OS X /Users/<your_user_name>/Library/Application Support/XBMC/
Windows 7 Users\%userprofile%\AppData\Roaming\XBMC\
Windows XP Documents and Settings\%userprofile%\Application Data\XBMC\

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 XBMC). 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 XBMC again, use the zip file to overwrite the appropriate files and then startup XBMC again.

4.2 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

There are three groupings of settings: Download, Slideshow, and Advanced.

5.1 Download

Download images from last.fm: (default true)
(self explanatory)

Download images from htbackdrops.com: (default false)
(self explanatory)

Minimal image width and height: (default 0,0)
any images smaller than the set dimensions will not be downloaded.

Download only 16:9 images: (default false)
will discard any images that aren't really, really close to a 16:9 aspect ratio.

Download additional artist info: (default false)
includes information like the artist's bio and artists similar to the one to which you are listening. includes option to select download language. skin must support this extra information, or nothing will be displayed.

5.2 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.

Fallback slideshow folder: (default none)
path to a directory of images that should be used if no local or remote images can be found.

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.

Override slideshow folder: (default none)
path to a directory of images that should be used intead of artist artwork. With this set no artwork will ever be downloaded.

5.3 Advanced

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

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.

6 Overriding Artist Info with Local Information

6.1 Directory Structure

To override the information downloaded from last.FM, 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>

6.3 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)

6.4 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 last.fm


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

Similar artists


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

Albums by the artist

7 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.

7.1 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 last.fm


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

Similar artists


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

Albums by the artist


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(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.


7.2 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)"
        % (xbmcgui.getCurrentWindowId(), "CURRENTARTIST", "CURRENTTITLE")
    xbmc.executebuiltin(artistslideshow)

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

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.

7.3 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)

8 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.xbmc.org/showthread.php?t=124880
Personal tools
Namespaces
Variants
Actions
Navigation
Wiki help
Google Search
Toolbox