to show what things could be done within the current limits of the navtree architecture.
The idea here is to take that same direction, but this time lets apply it to different running instances of twonky
There are a few things that we can gain from doing that
1. I could have different twonky servers looking at different shares that would be isolated from each other
which would allow us to create navtree's that only reflected the data each server had access to
2. I could for example have one for c:\movies, another for c:\television, and another for c:\family
they each would have there own web page, and would be seen as seperate servers to clients
3. I could also for example have one just for music, one just for photo's, one just for videos, and one just for remote access
As you can see there are a lot of mix and match possibilities here
Ok, so how do I do any of this you ask..
Note:
I am currently doing this with 6.0.31
And I assume that you already have twonky installed
I am going to run through installing 3 more instances like in example 3 from above
Open a command prompt and cd directories to C:\Program Files\TwonkyMedia\
Type of paste the following commands into the command promptCD C:\Program Files\TwonkyMedia\
Note: if one just had -install, its the same as -install 0, the number is the instance
twonkymediaserverwatchdog.exe -install 1
twonkymediaserverwatchdog.exe -install 2
twonkymediaserverwatchdog.exe -install 3
Ok, So what did that just do?
It created the the following services, in addtion to the existing TwonkMedia service
each acting as its own entity
It created the following files in C:\Program Files\TwonkyMedia\TwonkMedia-1
TwonkMedia-2
TwonkMedia-3
It created the following files in C:\Documents and Settings\All Users\Application Data\TwonkyMedia(1)twonkymedia-config1.html
(1)twonkymedia-config.html
(2)twonkymedia-config1.html
(2)twonkymedia-config.html
(3)twonkymedia-config1.html
(3)twonkymedia-config.html
(1)db.info
(1)twonkymedia-config1.html
(1)twonkymedia-config.html
(1)twonkymedia-server.ini
(2)db.info
(2)twonkymedia-config1.html
(2)twonkymedia-config.html
(2)twonkymedia-server.ini
(3)db.info
(3)twonkymedia-config1.html
(3)twonkymedia-config.html
(3)twonkymedia-server.ini
Ok, now what?
Well, all 3 new instances were created with copies from origianl files
The ones we really care about are the ini and xml files, as these are what we are going to edit
so that we can customize each instance to have the look anbd fell that we want
Note: at present there are servers running on ports 9000, 9001, 9002 and 9003, go take a peek if you want
IF you dont have that command prompt still open, open one again and type or paste the following
Note: The Twonky Tray Control tool is only capable of stopping or starting just the TwonkyMedia service
Note: you can read the following, and makes the edits yourself,net stop TwonkyMedia
net stop TwonkyMedia-1
net stop TwonkyMedia-2
net stop TwonkyMedia-3
or you can use the files I have included within the attached zip file in this post
Also, I am going to for this example assume your stuff is in My Documents for Music, Photo, Video
Edit the following in the twonkymedia-server.ini
Edit the following in the (1)twonkymedia-server.inifriendlyname=TwonkyServer Web
defaultview=Twonky Web
contentdir=+M|C:\Documents and Settings\ADMIN\My Documents\My Music,+P|C:\Documents and Settings\ADMIN\My Documents\My Pictures,+V|C:\Documents and Settings\ADMIN\My Documents\My videos
Edit the following in the (2)twonkymedia-server.inifriendlyname=TwonkyServer Music
defaultview=Twonky Music
contentdir=+M|C:\Documents and Settings\ADMIN\My Documents\My Music
Edit the following in the (3)twonkymedia-server.inifriendlyname=TwonkyServer Photo
defaultview=Twonky Photo
contentdir=+P|C:\Documents and Settings\ADMIN\My Documents\My Pictures
Create the following file twonky0.view.xml in the folder C:\Program Files\TwonkyMedia\resources\viewsfriendlyname=TwonkyServer Video
defaultview=Twonky Video
contentdir=+V|C:\Documents and Settings\ADMIN\My Documents\My videos
Code: Select all
<view name='Twonky Web' path='twonky0.view'>
<navtree>
<container id='music' />
<container id='picture' />
<container id='video' />
</navtree>
</view>
Code: Select all
<view name='Twonky Music' path='twonky1.view'>
<navtree>
<container id='music/all' />
<link id='music/artists' />
<link id='music/artistindex' />
<link id='music/composers' />
<link id='music/rating' />
<link id='music/artistalbum' />
<link id='music/genre' />
<link id='music/genrealbum' />
<link id='music/genreartistalbum' />
<link id='music/albums' />
<link id='music/folders' />
<link id='music/playlists' />
<link groupid='music/onlineservices' />
</navtree>
</view>
Code: Select all
<view name='Twonky Photo' path='twonky2.view'>
<navtree>
<container id='picture/all' />
<link id='picture/folders' />
<link id='picture/year' />
<link id='picture/date' />
<link id='picture/keywords' />
<link id='picture/albums' />
<link id='picture/rating' />
<link id='picture/playlists' />
<link groupid='picture/onlineservices' />
</navtree>
</view>
Code: Select all
<view name='Twonky Video' path='twonky3.view'>
<navtree>
<container id='video/all' />
<link id='video/folders' />
<link id='video/titleindex' />
<link id='video/genre' />
<link id='video/year' />
<link id='video/date' />
<link id='video/albums' />
<link id='video/rating' />
<link id='video/playlists' />
<link id='video/classified' />
<link groupid='video/onlineservices' />
</navtree>
</view>
Edit the following file view-definitions.xml in the folder C:\Program Files\TwonkyMedia\resources\views
Code: Select all
<view name='base' viewlist='twonky0,twonky1,twonky2,twonky3' guilist='Twonky Web,Twonky Music,Twonky Photo,Twonky Video'>
<navtree sortcriteria='+upnp:originalTrackNumber'>
<container name='Music By All' id='music/all' createClass='object.item.audioItem.musicTrack' class='object.container'/>
<container name='Music By Artist' id='music/artists' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'/>
</container>
<container name='Music By Artist/Index' id='music/artistindex' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container buildon='upnp:artist[3]' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
</container>
<container name='Music By Composer' id='music/composers' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container buildon='upnp:author@role' createClass='object.item.audioItem.musicTrack' class='object.container.person.musicArtist' />
</container>
<container name='Music By Rating' id='music/rating' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container buildon='pv:rating' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container name='Music By Artist/Album' id='music/artistalbum' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
<container name='Music By Genre' id='music/genre' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack' />
</container>
<container name='Music By Genre/Album' id='music/genrealbum' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack' >
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
<container name='Music By Genre/Artist' id='music/genreartistalbum' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container buildon='upnp:artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container buildon='upnp:artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
</container>
<container name='Music By Album' id='music/albums' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container name='Music By Folder' id='music/folders' class='object.container.storageFolder' createClass='object.item.audioItem.musicTrack'>
<container buildon='res' createClass='object.item.audioItem.musicTrack' class='object.container.storageFolder' />
</container>
<container name='Music By Playlists' id='music/playlists' class='object.container' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Music' >
<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistmostplayed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistlastplayed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='4' class='object.container.playlistContainer' restricted='1' flags='pv:smartplaylist=1' />
<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' upnp:originalTrackNumber='5' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack' class='object.container.playlistContainer' />
</container>
<container name='Music By Services' groupid='music/onlineservices' createClass='object.item.audioItem.online.musicTrack' class='object.container'>
<container buildon='pv:onlineServiceTitle' createClass='object.item.audioItem.online.musicTrack' class='object.container'>
<container name='allstations' createClass='object.item.audioItem.online.musicTrack' class='object.container' />
<container name='genrestation' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.online.musicTrack' />
</container>
<container name='stationindex' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
<container buildon='dc:title[3]' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
<container buildon='dc:title' class='object.container' createClass='object.item.audioItem.online.musicTrack'/>
</container>
</container>
</container>
</container>
<container name='Photo By All' id='picture/all' createClass='object.item.imageItem.photo' class='object.container'/>
<container name='Photo By Folder' id='picture/folders' class='object.container.storageFolder' restricted='0' createClass='object.item.imageItem.photo'>
<container buildon='res' createClass='object.item.imageItem.photo' class='object.container.storageFolder'/>
</container>
<container name='Photo By Year' id='picture/year' createClass='object.item.imageItem.photo' class='object.container'>
<container buildon='pv:year' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container name='Photo By Date' id='picture/date' createClass='object.item.imageItem.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
<container buildon='pv:month' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container buildon='pv:year' createClass='object.item.imageItem.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
<container buildon='pv:month' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
</container>
<container name='Photo By Keyword' id='picture/keywords' createClass='object.item.imageItem.photo' class='object.container' >
<container buildon='pv:avKeywords' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container name='Photo By Album' id='picture/albums' createClass='object.item.imageItem.photo' class='object.container' >
<container buildon='upnp:album' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container name='Photo By Rating' id='picture/rating' createClass='object.item.imageItem.photo' class='object.container' >
<container buildon='pv:rating' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container name='Photo By Playlists' id='picture/playlists' class='object.container' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Picture' >
<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistmostviewed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistlastviewed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='4' class='object.container.playlistContainer' restricted='1' flags='pv:smartplaylist=1' />
<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' upnp:originalTrackNumber='5' class='object.container.playlistContainer' />
</container>
<container name='Photo By Services' groupid='picture/onlineservices' createClass='object.item.imageItem.online.photo' class='object.container'>
<container buildon='pv:onlineServiceName' createClass='object.item.imageItem.online.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
<container buildon='pv:onlineServiceTitle' createClass='object.item.imageItem.online.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
<container name='keywords' createClass='object.item.imageItem.online.photo' class='object.container' >
<container buildon='pv:avKeywords' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
</container>
<container name='album' createClass='object.item.imageItem.online.photo' class='object.container' >
<container buildon='upnp:album' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
</container>
<container name='date' createClass='object.item.imageItem.online.photo' class='object.container'>
<container buildon='pv:year' createClass='object.item.imageItem.online.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
<container buildon='pv:month' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum'/>
</container>
</container>
<container name='author' createClass='object.item.imageItem.online.photo' class='object.container' >
<container buildon='upnp:author' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
</container>
</container>
</container>
</container>
<container name='Video By All' id='video/all' createClass='object.item.videoItem.movie' class='object.container'/>
<container name='Video By Folder' id='video/folders' class='object.container.storageFolder' restricted='0' createClass='object.item.videoItem.movie'>
<container buildon='res' createClass='object.item.videoItem.movie' class='object.container.storageFolder'/>
</container>
<container name='Video By Genre' id='video/genre' createClass='object.item.videoItem.movie' class='object.container'>
<container buildon='upnp:genre' createClass='object.item.videoItem.movie' class='object.container' />
</container>
<container name='Video By Title' id='video/titleindex' class='object.container' createClass='object.item.videoItem.movie'>
<container buildon='dc:title[3]' class='object.container' createClass='object.item.videoItem.movie'>
<container buildon='dc:title' class='object.container' createClass='object.item.videoItem.movie'/>
</container>
</container>
<container name='Video By Year' id='video/year' createClass='object.item.videoItem.movie' class='object.container'>
<container buildon='pv:year' createClass='object.item.videoItem.movie' class='object.container' />
</container>
<container name='Video By Date' id='video/date' createClass='object.item.videoItem.movie' class='object.container'>
<container buildon='pv:year' createClass='object.item.videoItem.movie' class='object.container'>
<container buildon='pv:month' createClass='object.item.videoItem.movie' class='object.container'/>
</container>
</container>
<container name='Video By Album' id='video/albums' createClass='object.item.videoItem.movie' class='object.container' >
<container buildon='upnp:album' createClass='object.item.videoItem.movie' class='object.container' />
</container>
<container name='Video By Rating' id='video/rating' createClass='object.item.videoItem.movie' class='object.container' >
<container buildon='pv:rating' createClass='object.item.videoItem.movie' class='object.container' />
</container>
<container name='Video By Playlists' id='video/playlists' class='object.container' createClass='object.item.videoItem.movie,object.item.videoItem.online.movie' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Video' >
<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistmostviewed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistlastviewed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='4' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.videoItem.movie,object.item.videoItem.online.movie' upnp:originalTrackNumber='5' class='object.container.playlistContainer' />
</container>
<container name='Video By Classified' id='video/classified' class='object.container' createClass='object.item.videoItem.classified.movie'/>
<container name='Video By Services' groupid='video/onlineservices' createClass='object.item.videoItem.online.movie' class='object.container'>
<container buildon='pv:onlineServiceName' createClass='object.item.videoItem.online.movie' class='object.container'>
<container buildon='pv:onlineServiceTitle' createClass='object.item.videoItem.online.movie' class='object.container'/>
</container>
</container>
<container name='music' id='music' upnp:originalTrackNumber='1' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack'>
<container name='Music All' createClass='object.item.audioItem.musicTrack' class='object.container'/>
<container name='Music Artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'/>
</container>
<container name='Music Artist/Index' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container buildon='upnp:artist[3]' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
</container>
<container name='Music Composer' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container buildon='upnp:author@role' createClass='object.item.audioItem.musicTrack' class='object.container.person.musicArtist' />
</container>
<container name='Music Rating' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container buildon='pv:rating' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container name='Music Artist/Album' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container buildon='upnp:artist' class='object.container.person.musicArtist' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
<container name='Music Genre' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack' />
</container>
<container name='Music Genre/Album' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack' >
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
<container name='Music Genre/Artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container buildon='upnp:artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container buildon='upnp:artist' class='object.container' createClass='object.item.audioItem.musicTrack'>
<container name='allname' createClass='object.item.audioItem.musicTrack' class='object.container' />
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
</container>
</container>
<container name='Music Album' createClass='object.item.audioItem.musicTrack' class='object.container' >
<container buildon='upnp:album' albumart='1' sortcriteria='+pv:numberOfThisDisc,+upnp:originalTrackNumber' createClass='object.item.audioItem.musicTrack' class='object.container.album.musicAlbum' />
</container>
<container name='Music Folder' class='object.container.storageFolder' createClass='object.item.audioItem.musicTrack'>
<container buildon='res' createClass='object.item.audioItem.musicTrack' class='object.container.storageFolder' />
</container>
<container name='Music Playlists' class='object.container' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Music' >
<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistmostplayed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistlastplayed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.audioItem.musicTrack' maxitems='500' upnp:originalTrackNumber='4' class='object.container.playlistContainer' restricted='1' flags='pv:smartplaylist=1' />
<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' upnp:originalTrackNumber='5' createClass='object.item.audioItem.musicTrack,object.item.audioItem.online.musicTrack' class='object.container.playlistContainer' />
</container>
<container name='Music Services' createClass='object.item.audioItem.online.musicTrack' class='object.container'>
<container buildon='pv:onlineServiceTitle' createClass='object.item.audioItem.online.musicTrack' class='object.container'>
<container name='allstations' createClass='object.item.audioItem.online.musicTrack' class='object.container' />
<container name='genrestation' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
<container buildon='upnp:genre' class='object.container.genre.musicGenre' createClass='object.item.audioItem.online.musicTrack' />
</container>
<container name='stationindex' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
<container buildon='dc:title[3]' class='object.container' createClass='object.item.audioItem.online.musicTrack'>
<container buildon='dc:title' class='object.container' createClass='object.item.audioItem.online.musicTrack'/>
</container>
</container>
</container>
</container>
</container>
<container name='pictures' id='picture' upnp:originalTrackNumber='2' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' class='object.container'>
<container name='Photo All' createClass='object.item.imageItem.photo' class='object.container'/>
<container name='Photo Folder' class='object.container.storageFolder' restricted='0' createClass='object.item.imageItem.photo'>
<container buildon='res' createClass='object.item.imageItem.photo' class='object.container.storageFolder'/>
</container>
<container name='Photo Year' createClass='object.item.imageItem.photo' class='object.container'>
<container buildon='pv:year' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container name='Photo Date' createClass='object.item.imageItem.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
<container buildon='pv:month' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container buildon='pv:year' createClass='object.item.imageItem.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
<container buildon='pv:month' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
</container>
<container name='Photo Keyword' createClass='object.item.imageItem.photo' class='object.container' >
<container buildon='pv:avKeywords' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container name='Photo Album' createClass='object.item.imageItem.photo' class='object.container' >
<container buildon='upnp:album' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container name='Photo Rating' createClass='object.item.imageItem.photo' class='object.container' >
<container buildon='pv:rating' createClass='object.item.imageItem.photo' class='object.container.album.photoAlbum' />
</container>
<container name='Photo Playlists' class='object.container' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Picture' >
<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistmostviewed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistlastviewed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.imageItem.photo' maxitems='500' upnp:originalTrackNumber='4' class='object.container.playlistContainer' restricted='1' flags='pv:smartplaylist=1' />
<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.imageItem.photo,object.item.imageItem.online.photo' upnp:originalTrackNumber='5' class='object.container.playlistContainer' />
</container>
<container name='Photo Services' createClass='object.item.imageItem.online.photo' class='object.container'>
<container buildon='pv:onlineServiceName' createClass='object.item.imageItem.online.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
<container buildon='pv:onlineServiceTitle' createClass='object.item.imageItem.online.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
<container name='keywords' createClass='object.item.imageItem.online.photo' class='object.container' >
<container buildon='pv:avKeywords' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
</container>
<container name='album' createClass='object.item.imageItem.online.photo' class='object.container' >
<container buildon='upnp:album' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
</container>
<container name='date' createClass='object.item.imageItem.online.photo' class='object.container'>
<container buildon='pv:year' createClass='object.item.imageItem.online.photo' class='object.container'>
<container name='allname' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
<container buildon='pv:month' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum'/>
</container>
</container>
<container name='author' createClass='object.item.imageItem.online.photo' class='object.container' >
<container buildon='upnp:author' createClass='object.item.imageItem.online.photo' class='object.container.album.photoAlbum' />
</container>
</container>
</container>
</container>
</container>
<container name='videos' id='video' upnp:originalTrackNumber='3' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.videoItem.movie,object.item.videoItem.classified.movie,object.item.videoItem.online.movie' class='object.container'>
<container name='Video All' createClass='object.item.videoItem.movie' class='object.container'/>
<container name='Video Folder' class='object.container.storageFolder' restricted='0' createClass='object.item.videoItem.movie'>
<container buildon='res' createClass='object.item.videoItem.movie' class='object.container.storageFolder'/>
</container>
<container name='Video Genre' createClass='object.item.videoItem.movie' class='object.container'>
<container buildon='upnp:genre' createClass='object.item.videoItem.movie' class='object.container' />
</container>
<container name='Video Title' class='object.container' createClass='object.item.videoItem.movie'>
<container buildon='dc:title[3]' class='object.container' createClass='object.item.videoItem.movie'>
<container buildon='dc:title' class='object.container' createClass='object.item.videoItem.movie'/>
</container>
</container>
<container name='Video Year' createClass='object.item.videoItem.movie' class='object.container'>
<container buildon='pv:year' createClass='object.item.videoItem.movie' class='object.container' />
</container>
<container name='Video Date' createClass='object.item.videoItem.movie' class='object.container'>
<container buildon='pv:year' createClass='object.item.videoItem.movie' class='object.container'>
<container buildon='pv:month' createClass='object.item.videoItem.movie' class='object.container'/>
</container>
</container>
<container name='Video Album' createClass='object.item.videoItem.movie' class='object.container' >
<container buildon='upnp:album' createClass='object.item.videoItem.movie' class='object.container' />
</container>
<container name='Video Rating' createClass='object.item.videoItem.movie' class='object.container' >
<container buildon='pv:rating' createClass='object.item.videoItem.movie' class='object.container' />
</container>
<container name='Video Playlists' class='object.container' createClass='object.item.videoItem.movie,object.item.videoItem.online.movie' sortcriteria='+upnp:originalTrackNumber,+dc:title' restricted='0' flags='pv:playlistRoot=Video' >
<container name='playlistrecentlyadded' filteron='pv:addedLast60' sortcriteria='-pv:addedTime' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='3' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistmostviewed' filteron='pv:playcount' sortcriteria='-pv:playcount' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='1' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlistlastviewed' filteron='pv:lastPlayedTime' sortcriteria='-pv:lastPlayedTime' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='2' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container name='playlisthighlyrated' filteron='pv:highrated' sortcriteria='-pv:rating' createClass='object.item.videoItem.movie' maxitems='500' upnp:originalTrackNumber='4' restricted='1' class='object.container.playlistContainer' flags='pv:smartplaylist=1' />
<container buildon='upnp:playlist' sortcriteria='+upnp:originalTrackNumber' createClass='object.item.videoItem.movie,object.item.videoItem.online.movie' upnp:originalTrackNumber='5' class='object.container.playlistContainer' />
</container>
<container name='Video Classified' id='video/classified' class='object.container' createClass='object.item.videoItem.classified.movie'/>
<container name='Video Servies' createClass='object.item.videoItem.online.movie' class='object.container'>
<container buildon='pv:onlineServiceName' createClass='object.item.videoItem.online.movie' class='object.container'>
<container buildon='pv:onlineServiceTitle' createClass='object.item.videoItem.online.movie' class='object.container'/>
</container>
</container>
</container>
</navtree>
</view>
IF you dont have that command prompt still open, open one again and type or paste the following
Note: The Twonky Tray Control tool is only capable of stopping or starting just the TwonkyMedia service
Phew, just a little editingnet start TwonkyMedia
net start TwonkyMedia-1
net start TwonkyMedia-2
net start TwonkyMedia-3
But now everything should be up and running
If you connect to the following from a browser, you should see them like this
http: //serverip:9000
http: //serverip:9001
http: //serverip:9002
http: //serverip:9003
And if you look at it from a client point of view, what do you gain
Well on the PS3 for example, I now have an instance of twonky for each media type
So when I click on the XMB and go to Music, I just click on the TwonkyServe Music icon, and I get root navtree for music
So when I click on the XMB and go to Photo, I just click on the TwonkyServe Photo icon, and I get root navtree for photo
So when I click on the XMB and go to video, I just click on the TwonkyServe Video icon, and I get root navtree for video
now you dont have to navigate twice, they look just like the web gui ones
I'll make notes on some of the other things in my next post