diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-05-08 12:28:06 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-05-08 12:28:06 -0400 |
| commit | a9ccccc5351936fb0bebcc7a3959d91e1e9a5bab (patch) | |
| tree | 254d0ebba1a2a31cde10d68b3b384a559bedf082 | |
| parent | 55461b7605a62af041f478b94af740ad3117b293 (diff) | |
make more dlna attributes configurable
37 files changed, 148 insertions, 95 deletions
diff --git a/MediaBrowser.Dlna/DlnaManager.cs b/MediaBrowser.Dlna/DlnaManager.cs index 62756e4c4..2d2525919 100644 --- a/MediaBrowser.Dlna/DlnaManager.cs +++ b/MediaBrowser.Dlna/DlnaManager.cs @@ -482,7 +482,7 @@ namespace MediaBrowser.Dlna var profile = GetProfile(headers) ?? GetDefaultProfile(); - return new DescriptionXmlBuilder(profile, serverUuId, serverAddress, _appHost.FriendlyName).GetXml(); + return new DescriptionXmlBuilder(profile, serverUuId, serverAddress, _appHost.FriendlyName, serverUuId.GetMD5().ToString("N")).GetXml(); } public ImageStream GetIcon(string filename) diff --git a/MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs b/MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs index 39d3a8d07..ab6674afc 100644 --- a/MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs +++ b/MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs @@ -13,7 +13,7 @@ namespace MediaBrowser.Dlna.PlayTo public class SsdpHttpClient { private const string USERAGENT = "Microsoft-Windows/6.2 UPnP/1.0 Microsoft-DLNA DLNADOC/1.50"; - private const string FriendlyName = "MediaBrowser"; + private const string FriendlyName = "Emby"; private readonly IHttpClient _httpClient; private readonly IServerConfigurationManager _config; diff --git a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs index a243fd011..59e1dc540 100644 --- a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs +++ b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs @@ -1,4 +1,5 @@ using MediaBrowser.Model.Dlna; +using System.Linq; using System.Xml.Serialization; namespace MediaBrowser.Dlna.Profiles @@ -75,6 +76,23 @@ namespace MediaBrowser.Dlna.Profiles Type = DlnaProfileType.Video } }; + + AddXmlRootAttribute("xmlns", "urn:schemas-upnp-org:device-1-0"); + AddXmlRootAttribute("xmlns:dlna", "urn:schemas-dlna-org:device-1-0"); + } + + public void AddXmlRootAttribute(string name, string value) + { + var atts = XmlRootAttributes ?? new XmlAttribute[] { }; + var list = atts.ToList(); + + list.Add(new XmlAttribute + { + Name = name, + Value = value + }); + + XmlRootAttributes = list.ToArray(); } } } diff --git a/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs b/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs index 9e51c2895..473640c15 100644 --- a/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs +++ b/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs @@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles } }; - XmlRootAttributes = new[] - { - new XmlAttribute - { - Name = "xmlns:pv", - Value = "http://www.pv.com/pvns/" - } - }; + AddXmlRootAttribute("xmlns:pv", "http://www.pv.com/pvns/"); TimelineOffsetSeconds = 10; diff --git a/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs b/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs index 396dd6489..d2aa005c3 100644 --- a/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs +++ b/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs @@ -27,14 +27,7 @@ namespace MediaBrowser.Dlna.Profiles } }; - XmlRootAttributes = new[] - { - new XmlAttribute - { - Name = "xmlns:sec", - Value = "http://www.sec.co.kr/" - } - }; + AddXmlRootAttribute("xmlns:sec", "http://www.sec.co.kr/"); TranscodingProfiles = new[] { diff --git a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs index baaccba5a..dbade8170 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs @@ -17,14 +17,7 @@ namespace MediaBrowser.Dlna.Profiles ModelNumber = "BDP-2013" }; - XmlRootAttributes = new[] - { - new XmlAttribute - { - Name = "xmlns:av", - Value = "urn:schemas-sony-com:av" - } - }; + AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av"); ModelName = "Windows Media Player Sharing"; ModelNumber = "3.0"; diff --git a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs index d2e6d7c15..f6cc03637 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs @@ -33,14 +33,7 @@ namespace MediaBrowser.Dlna.Profiles } }; - XmlRootAttributes = new[] - { - new XmlAttribute - { - Name = "xmlns:av", - Value = "urn:schemas-sony-com:av" - } - }; + AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av"); ModelName = "Windows Media Player Sharing"; ModelNumber = "3.0"; diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs index 3bd425cb3..3a1086d3c 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs @@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles } }; - XmlRootAttributes = new[] - { - new XmlAttribute - { - Name = "xmlns:av", - Value = "urn:schemas-sony-com:av" - } - }; + AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av"); AlbumArtPn = "JPEG_TN"; diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs index de4f1d2b6..34b2dc325 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs @@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles } }; - XmlRootAttributes = new[] - { - new XmlAttribute - { - Name = "xmlns:av", - Value = "urn:schemas-sony-com:av" - } - }; + AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av"); AlbumArtPn = "JPEG_TN"; diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs index 5a5fb9e94..c56663d43 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs @@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles } }; - XmlRootAttributes = new[] - { - new XmlAttribute - { - Name = "xmlns:av", - Value = "urn:schemas-sony-com:av" - } - }; + AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av"); AlbumArtPn = "JPEG_TN"; diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs index 74a07f389..d19ca1a91 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs @@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles } }; - XmlRootAttributes = new[] - { - new XmlAttribute - { - Name = "xmlns:av", - Value = "urn:schemas-sony-com:av" - } - }; + AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av"); AlbumArtPn = "JPEG_TN"; diff --git a/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs b/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs index 62c06f8f5..f230b38ae 100644 --- a/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs +++ b/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs @@ -18,12 +18,13 @@ namespace MediaBrowser.Dlna.Profiles ModelNumber = "12.0"; - FriendlyName = "${HostName} : 1"; + FriendlyName = "${HostName}: Emby:"; - ModelUrl = "http://www.microsoft.com/"; + ModelUrl = "http://go.microsoft.com/fwlink/?LinkId=105926"; Manufacturer = "Microsoft Corporation"; - ManufacturerUrl = "http://www.microsoft.com/"; + ManufacturerUrl = "http://www.microsoft.com"; XDlnaDoc = "DMS-1.50"; + ModelDescription = null; TimelineOffsetSeconds = 40; RequiresPlainFolders = true; @@ -311,6 +312,9 @@ namespace MediaBrowser.Dlna.Profiles } } }; + + XmlRootAttributes = new XmlAttribute[] { }; + AddXmlRootAttribute("xmlns", "urn:schemas-upnp-org:device-1-0"); } } } diff --git a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml index d65b55f2e..4aacc8a48 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml @@ -32,7 +32,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso" type="Video" /> <DirectPlayProfile container="mp3,flac,asf,off,oga,aac" type="Audio" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml index 1c611d47a..4755d60bd 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml @@ -26,7 +26,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="mp3,wma" type="Audio" /> <DirectPlayProfile container="avi,mp4" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml index 4f8a0eac5..6bf90c8ff 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml @@ -31,7 +31,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="mp3,flac,m4a,wma" type="Audio" /> </DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml index 4595b57e0..cecdfdbe4 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml @@ -32,7 +32,10 @@ <RequiresPlainVideoItems>true</RequiresPlainVideoItems> <RequiresPlainFolders>true</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="mpeg" audioCodec="mp2" videoCodec="mpeg2video" type="Video" /> <DirectPlayProfile container="jpeg,jpg" type="Photo" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index 50bc43f7c..59f374b2e 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -33,7 +33,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="mp4,mkv,mpeg,ts" audioCodec="mp3,ac3,aac,he-aac,pcm" videoCodec="h264,mpeg2video" type="Video" /> <DirectPlayProfile container="mp3" audioCodec="mp3" type="Audio" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml index 919fa5a40..340a295e7 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml @@ -32,7 +32,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="ts" audioCodec="aac,ac3,mp3" videoCodec="h264" type="Video" /> <DirectPlayProfile container="mkv" audioCodec="aac,ac3,mp3" videoCodec="h264" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml index 1dc942873..057a052e1 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml @@ -30,7 +30,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="mp3,flac,m4a,wma" type="Audio" /> <DirectPlayProfile container="avi,mp4,mkv,ts" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml index 4896402a0..8054f3b61 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml @@ -32,7 +32,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="mp3" audioCodec="mp2,mp3" type="Audio" /> <DirectPlayProfile container="mp4" audioCodec="mp4" type="Audio" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml index a2203e4ce..e0517aa8a 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml @@ -34,6 +34,8 @@ <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> <XmlAttribute name="xmlns:pv" value="http://www.pv.com/pvns/" /> </XmlRootAttributes> <DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml index b02f37986..d2f03333a 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -26,7 +26,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="mp4,mov" audioCodec="aac" videoCodec="h264,mpeg4" type="Video" /> <DirectPlayProfile container="ts" audioCodec="aac,ac3,eac3,mp3,mp2,pcm" videoCodec="h264" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml index 91c2325cf..70f3b0f8d 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml @@ -33,6 +33,8 @@ <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> <XmlAttribute name="xmlns:sec" value="http://www.sec.co.kr/" /> </XmlRootAttributes> <DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml index f5ec1a31e..b8a75ec94 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml @@ -33,6 +33,8 @@ <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> <DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml index 6a732f869..cf80c0192 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml @@ -35,6 +35,8 @@ <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> <DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml index 7afc8183d..eabdb303f 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -35,6 +35,8 @@ <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> <DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 7400600e2..e6669f8e8 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -35,6 +35,8 @@ <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> <DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml index b8e3d6d30..7aa877cd4 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml @@ -35,6 +35,8 @@ <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> <DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml index 5733d9d0b..7611f26b0 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml @@ -35,6 +35,8 @@ <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> <DirectPlayProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml index 4b21dc195..89e282cd0 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml @@ -34,7 +34,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="avi" audioCodec="mp2,mp3" videoCodec="mpeg4" type="Video" /> <DirectPlayProfile container="ts" audioCodec="ac3,mp2,mp3,aac" videoCodec="mpeg1video,mpeg2video,h264" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml index fd4b77f55..bc24f268c 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml @@ -32,7 +32,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso" type="Video" /> <DirectPlayProfile container="mp3,flac,asf,off,oga,aac" type="Audio" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml index a2ab33b4e..6cb933151 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml @@ -33,7 +33,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="avi" audioCodec="ac3,dca,mp2,mp3,pcm" videoCodec="mpeg1video,mpeg2video,mpeg4,h264,vc1" type="Video" /> <DirectPlayProfile container="mpeg" audioCodec="ac3,dca,mp2,mp3,pcm" videoCodec="mpeg1video,mpeg2video" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml index 69d091e47..4ada24512 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml @@ -8,13 +8,12 @@ <HttpHeaderInfo name="User-Agent" value="Xenon" match="Substring" /> </Headers> </Identification> - <FriendlyName>${HostName} : 1</FriendlyName> + <FriendlyName>${HostName}: Emby:</FriendlyName> <Manufacturer>Microsoft Corporation</Manufacturer> - <ManufacturerUrl>http://www.microsoft.com/</ManufacturerUrl> + <ManufacturerUrl>http://www.microsoft.com</ManufacturerUrl> <ModelName>Windows Media Player Sharing</ModelName> - <ModelDescription>Emby</ModelDescription> <ModelNumber>12.0</ModelNumber> - <ModelUrl>http://www.microsoft.com/</ModelUrl> + <ModelUrl>http://go.microsoft.com/fwlink/?LinkId=105926</ModelUrl> <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl> <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit> <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes> @@ -33,7 +32,9 @@ <RequiresPlainVideoItems>true</RequiresPlainVideoItems> <RequiresPlainFolders>true</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>true</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="avi" audioCodec="ac3,mp3" videoCodec="mpeg4" type="Video" /> <DirectPlayProfile container="avi" audioCodec="aac" videoCodec="h264" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml index e1faea150..073292363 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml @@ -33,7 +33,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="ts" audioCodec="ac3" videoCodec="h264" type="Video" /> <DirectPlayProfile container="avi" audioCodec="ac3,mp3" videoCodec="mpeg4" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml index c2095cf83..f98945360 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml @@ -32,7 +32,10 @@ <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> - <XmlRootAttributes /> + <XmlRootAttributes> + <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" /> + <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" /> + </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="mp3" audioCodec="mp2,mp3" type="Audio" /> <DirectPlayProfile container="mp4" audioCodec="mp4" type="Audio" /> diff --git a/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs b/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs index e302fe902..5780aa10b 100644 --- a/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs +++ b/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs @@ -18,8 +18,9 @@ namespace MediaBrowser.Dlna.Server private readonly string _serverUdn; private readonly string _serverAddress; private readonly string _serverName; + private readonly string _serverId; - public DescriptionXmlBuilder(DeviceProfile profile, string serverUdn, string serverAddress, string serverName) + public DescriptionXmlBuilder(DeviceProfile profile, string serverUdn, string serverAddress, string serverName, string serverId) { if (string.IsNullOrWhiteSpace(serverUdn)) { @@ -35,6 +36,7 @@ namespace MediaBrowser.Dlna.Server _serverUdn = serverUdn; _serverAddress = serverAddress; _serverName = serverName; + _serverId = serverId; } private bool EnableAbsoluteUrls @@ -48,7 +50,7 @@ namespace MediaBrowser.Dlna.Server builder.Append("<?xml version=\"1.0\"?>"); - builder.Append("<root xmlns=\"urn:schemas-upnp-org:device-1-0\" xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\""); + builder.Append("<root"); foreach (var att in _profile.XmlRootAttributes) { builder.AppendFormat(" {0}=\"{1}\"", att.Name, att.Value); @@ -72,7 +74,7 @@ namespace MediaBrowser.Dlna.Server builder.Append("<device>"); AppendDeviceProperties(builder); - AppendIconList(builder); + //AppendIconList(builder); AppendServiceList(builder); builder.Append("</device>"); } @@ -80,20 +82,37 @@ namespace MediaBrowser.Dlna.Server private void AppendDeviceProperties(StringBuilder builder) { builder.Append("<UDN>uuid:" + SecurityElement.Escape(_serverUdn) + "</UDN>"); - builder.Append("<dlna:X_DLNACAP>" + SecurityElement.Escape(_profile.XDlnaCap ?? string.Empty) + "</dlna:X_DLNACAP>"); + + if (!string.IsNullOrWhiteSpace(_profile.XDlnaCap)) + { + builder.Append("<dlna:X_DLNACAP>" + SecurityElement.Escape(_profile.XDlnaCap ?? string.Empty) + "</dlna:X_DLNACAP>"); + } builder.Append("<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">M-DMS-1.50</dlna:X_DLNADOC>"); builder.Append("<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">" + SecurityElement.Escape(_profile.XDlnaDoc ?? string.Empty) + "</dlna:X_DLNADOC>"); - + builder.Append("<friendlyName>" + SecurityElement.Escape(GetFriendlyName()) + "</friendlyName>"); builder.Append("<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>"); builder.Append("<manufacturer>" + SecurityElement.Escape(_profile.Manufacturer ?? string.Empty) + "</manufacturer>"); builder.Append("<manufacturerURL>" + SecurityElement.Escape(_profile.ManufacturerUrl ?? string.Empty) + "</manufacturerURL>"); builder.Append("<modelName>" + SecurityElement.Escape(_profile.ModelName ?? string.Empty) + "</modelName>"); - builder.Append("<modelDescription>" + SecurityElement.Escape(_profile.ModelDescription ?? string.Empty) + "</modelDescription>"); + + if (!string.IsNullOrWhiteSpace(_profile.ModelDescription)) + { + builder.Append("<modelDescription>" + SecurityElement.Escape(_profile.ModelDescription ?? string.Empty) + "</modelDescription>"); + } + builder.Append("<modelNumber>" + SecurityElement.Escape(_profile.ModelNumber ?? string.Empty) + "</modelNumber>"); builder.Append("<modelURL>" + SecurityElement.Escape(_profile.ModelUrl ?? string.Empty) + "</modelURL>"); - builder.Append("<serialNumber>" + SecurityElement.Escape(_profile.SerialNumber ?? string.Empty) + "</serialNumber>"); + + if (string.IsNullOrWhiteSpace(_profile.SerialNumber)) + { + builder.Append("<serialNumber>" + SecurityElement.Escape(_serverId) + "</serialNumber>"); + } + else + { + builder.Append("<serialNumber>" + SecurityElement.Escape(_profile.SerialNumber) + "</serialNumber>"); + } builder.Append("<presentationURL>" + SecurityElement.Escape(_serverAddress) + "</presentationURL>"); diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs index aa92cc280..1c526b4db 100644 --- a/MediaBrowser.Providers/Manager/ProviderUtils.cs +++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs @@ -14,6 +14,15 @@ namespace MediaBrowser.Providers.Manager bool replaceData, bool mergeMetadataSettings) { + if (source == null) + { + throw new ArgumentNullException("source"); + } + if (target == null) + { + throw new ArgumentNullException("target"); + } + if (!lockedFields.Contains(MetadataFields.Name)) { if (replaceData || string.IsNullOrEmpty(target.Name)) |
