Got browsing working on the PS3 all the way down to an item - hitting
the item breaks the API which breaks the server, but still, its a start.
Had to only return the single item of metadata being requested and jsut
as importantly, had to report the number of children container objects
have - I'd neglected to set that property which meant it was assuming
all containers had no children.
Added well known container Playlist and its well know children "All
Playlists" and "Playlists Folder". Both of these are just returning
empty collections for their children, but it means that when WMP
requests well known container 13 "All Playlists", we don't have to
recursively load the entire data model in order to search for it.
Also removed unrequired test code that was setting xml string to a local
variable to assist with debugging.
Added some temprorary code to delete any of the embeded assemblies
(log4net.dll & Platinum.Managed.dll) before attempting to write them to
disk.
This is just to ensure they are definitely replaced while we're trying
to sort out the file not found issues.
Recompiled Platinum.Managed on a machine with Visual Studio 2008 on it.
Still compiled in VS2010 but used Platform Toolset V90 (vs2008)
compiler, which means its compiled against .Net 2.0 not 4.0.
Most importantly this compile is definitely in Release Mode, so should
have a dependency on msvcr100.dll and not msvcr100d.dll (the d at the
end is for Debug, and only gets installed on development machines).
Hardcoded video options for .asf and .wmv so that I can do a release for
testing like this.
I would have like to have included one more option, perhaps mp4, but I
couldn't get hold of Tikuf to get advice, no matter, we can incude
better option in the next release.
Did a huge rearange of the code, pushed a lot of functionality through
the dlna object and into static helper methods. This is partially in
preperation for requiring different behaviour for different clients
(xbox, ps3, etc) and partially because the code was a mess and really
needed cleaning up.
Changed Artist and Album to be containers instead of Items, having them
as Items was definitely incorrect. Hopefully this will improve behaviour
in Xbox360 Music App and VLC, WPM was fine beforehand.
Had to pass the actual MB item around instead of just the id because
there are possilby mulitple images available and the api barfs if there
are no images available. This meant a fair bit of refactoring but its
better for it.
Tweaked the platinum ObjectClass for epsiodes to be
object.item.videoItem.videoBroadcast instead of just
object.item.videoItem - I think this will get removed once I test it on
the Xbox360 and discover it doesn't work as expected.
Added well know 'Music Genre' and 'Video Series' containers and items.
I found the didl-lite xsd which has decent descriptions for some of its
elements and attributes. A lot of these map directly to Platinum
Properties so I copied a lot of the descriptions above where the
properties are being utilised. Ideally this information would be in
triple slash comments inside the Platinum Library but alas it is not.
Cleaned up some commented out code, but didn't get as much cleanup does
as I'd like because I realised I should really implement music properly
before removing the old code that does music.
Implemened the well known Music/All Music, Music/Artist and Music/Genre
folders as well as the sub items for those folders which are
MusicAlbumItem, MusicArtistItem and MusicItem
Somehow I've ended up with different line endings than the previous
commit so the diff on Plugin.cs is practically the entire file, but
these changes are too good to throw awy in order to fix that...
Hanselmans recent post is very timely:
http://www.hanselman.com/blog/YoureJustAnotherCarriageReturnLineFeedInTheWall.aspx
Actual changes:
Created a dlna specific object model to wrap the mediabrowser model.
It's only functional for Video and even then really only for the way
video is used on the Xbox360. Music is missing at the moment.
Utilised the new object model when Search and BrowseDirect is called.
Pulled in the MoreLinq nuget package.
The next commit will be a bit of a cleanup, with lots of commented out
code removed and lots of uncalled functions removed as well.