Basic playlists

From Official Kodi Wiki
Revision as of 08:44, 28 June 2006 by >Scape (→‎Format of a Smart Playlist File)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

A Playlist is a file that includes several media files (Audio or Video), and plays them in succession. You can either create your own or use existing playlists from other sources, e.g. Winamp m3u playlists. Going to the Playlist item on the left side of the My Music page will take you to all playlists in your media library, same goes for the My Videos page.

Working with Playlists

There are several ways to manipulate playlists in XBMC, one is the the web interface, another is using the "controller / remote"

Pressing the black button on the gamepad or "Title" button on the Remote control, brings up the context menu. The playlist is accessible via the "Now Playing" item. If the playlist is currently empty, that option will not be visible in the context menu.

You can add songs or entire folders with the Y button on the gamepad, or 0 on the Remote Control. Alternatively, the "Queue Item" option in the context menu can be used.

Switching back to the playlist view with the black or Title button (gamepad/remote) and then pressing the A or the Play button (gamepad/remote) will play your playlist.

Once in The Playlists view, you can save your playlist. Playlists are by default saved in the $HOME\albums\playlists folder (separate folder for music and video playlists).

Winamp M3U Playlists

If you use Winamp m3u playlists to play files on a remote computer, make sure the contents of the m3u match the file structure relative to XBMC.---(ie, if your using samba, you'll need to use smb://fullpath/file.mp3).

Example: You want to play several files located in C:\music\mp3\ on your PC with XBMC.

"C:\music\mp3s\" is shared out as mp3 on your PC using PC file sharing

for that to work each playlist item in your m3u file must be formatted thus: smb://workgroup;someuser:somepass@computer/mp3/fileN.mp3

Alternatively, there are settings in "XboxMediaCenter.xml" for path substitutions in playlists. For instance, by adding <xml>

<pathsubstitution>
 <substitute>
   <from>C:\music\mp3s\</from>
   <to>smb://workgroup;someuser:somepass@computer/mp3/</to>
 </substitute>
</pathsubstitution>

</xml> you could use the same playlist file on your PC and XBMC. That is, anywhere the path c:\music\mp3s\ is found in a playlist, XBMC would substitute smb://workgroup;someuser:somepass@computer/mp3/.

Smart Playlists

XBMC now supports "Smart" playlists, which essentially use a set of rules to limit the songs from the music database.

Currently there is no way to generate a Smart Playlist from within the XBMC GUI, but you can easily setup some by creating an xml file with the extension .xsp.

Format of a Smart Playlist File

Smart playlists are xml files using the extension .xsp (Xbmc Smart Playlist). These are just text files that can be parsed by an xml reader. Any text editor can be used to create them. The format is as follows:

<xml>

  <smartplaylist>
   <name>All U2 from after 1990</name>
   <match>all</match>
   <rule field="artist" operator="is">U2</rule>
   <rule field="year" operator="greaterthan">1990</rule>
   <limit>50</limit>
   <order direction="descending">playcount</order>
  </smartplaylist>

</xml>

Basically there are 2 header tags, <name> and <match> and then a set of <rule> tags that define the rules to use, along with an <order> tag to allow sorting and a <limit> tag to limit the returned results. Note that the tags and attributes are all case-sensitive. The <name> tag is the name of the playlist (currently unused) and the <match> tag indicates how the <rule> tags should be matched. If <match>all</match> like in the above example, then only songs which satisfy all the <rule>'s will be included. If <match>one</match> is specified, then songs that satisfy any one (or more) of the <rule>'s will be included.

The <rule> tags, of which there can be as many as you wish, have 2 attributes (field and operator) and a value (the parameter). The allowed fields are

album Album the song appears on
artist Artist of the song
genre Genre of the song
title Title of the song
year Year of the song
tracknumber Track number of the song
time Duration of the song
playcount Number of times the song has been played
filename Filename of the song (excluding path)
lastplayed Date/time of last time the song was played
playlist Whether the song is in the given playlist

The operator attribute specifies the rule that should be used to match the parameter to the field. All matching is done case-insensitive. The allowed operators are

contains True if the field contains the parameter as a substring
doesnotcontain True if the field does not contain the parameter as a substring
is True if the field matches the parameter exactly (case insensitive)
isnot True if the field does not match the parameter exactly (case insensitive)
startswith True if the start of the field matches the parameter
endswith True if the end of the field matches the parameter
lessthan True if the content of the field is is less than the parameter
greaterthan True if the content of the field is is greater than the parameter
inthelast True if the field falls in the last range specified by the parameter. Only applicable for a date field.
notinthelast True if the field does not fall in the last range specified by the parameter. Only applicable for a date field.

The <limit> tag simply takes a number of songs as it's limit. A missing limit tag, or <limit>0</limit> will retrieve all matching songs. The <order> tag has a direction attribute, the values of which can be "ascending" or "descending", and it's value is a field as above, or can be <order>random</order> if you want a random ordering returned. Note that random should be used with care - it is quite slow if the returned results from the <rule> sets is large (> 500 items).

The above example, therefore selects all songs whose artist field is U2 and whose year field is greater than 1990, orders them by the number of times they've been played (most played first) then limits it to just 50. Thus, the top 50 songs you've played from all U2 songs published after 1990.

Smart playlists should be placed in your albums/music folder on the xbox harddisk. They cannot be read off of remote shares at present.

Smart Playlist Examples

Recently played songs <xml> <smartplaylist>

 <name>Recently Played Songs</name>
 <match>all</match>
 <rule field="lastplayed" operator="inthelast">2 weeks</rule>
 <order direction="descending">lastplayed</order>

</smartplaylist> </xml>

Top 100 songs <xml> <smartplaylist>

 <name>Top 100 Songs</name>
 <match>all</match>
 <rule field="playcount" operator="greaterthan">0</rule>
 <order direction="descending">playcount</order>
 <limit>100</limit>

</smartplaylist> </xml>

Rock music from the 1970s <xml> <smartplaylist>

 <name>Rock Music from the 1970s</name>
 <match>all</match>
 <rule field="genre" operator="is">Rock</rule>
 <rule field="year" operator="greaterthan">1969</rule>
 <rule field="year" operator="lessthan">1980</rule>

</smartplaylist> </xml>

Combining Playlists

The "playlist" field can be used to combine several playlists together. When playlists are combined, the <limit> and <order> tags of the included playlists are ignored; only the <order> and <limit> of the final playlist are used.

As a simple example, lets create a new playlist combining the "Rock Music from the 1970s" and "Recently Played Songs" playlists above, to produce a playlist with the recently played rock songs from the 1970s.

Recently played rock tracks from the 1970s <xml> <smartplaylist>

 <name>Recently played  Rock Tracks from the 1970s</name>
 <match>all</match>
 <rule field="playlist" operator="is">Rock Music from the 1970s</rule>
 <rule field="playlist" operator="is">Recently Played Songs</rule>

</smartplaylist> </xml>

Using this system allows very complex queries to be built. Note that in a single playlist, you can only match ALL of the rules, or ONE (or more) of the rules. This is basically either ANDing the conditions together, or ORing them together. You cannot mix AND with OR in a single playlist. To build up a playlist with both AND and OR operations on the rules, you use multiple playlists to group the AND operations and the OR operations, then combine them as above.