diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
index 5a5d48ac27..a5b8082262 100644
--- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
+++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
@@ -296,6 +296,16 @@ namespace MediaBrowser.Common.Implementations
logger.Info("64-Bit Process: {0}", Environment.Is64BitProcess);
logger.Info("Program data path: {0}", appPaths.ProgramDataPath);
+ Type type = Type.GetType("Mono.Runtime");
+ if (type != null)
+ {
+ MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
+ if (displayName != null)
+ {
+ logger.Info("Mono: " + displayName.Invoke(null, null));
+ }
+ }
+
logger.Info("Application Path: {0}", appPaths.ApplicationPath);
logger.Info("*** When reporting issues please include the entire log file. ***".ToUpper());
diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs
index 307117fdd4..015e4b4aee 100644
--- a/MediaBrowser.Controller/Entities/MusicVideo.cs
+++ b/MediaBrowser.Controller/Entities/MusicVideo.cs
@@ -46,6 +46,21 @@ namespace MediaBrowser.Controller.Entities
}
}
+ ///
+ /// TODO: Remove
+ ///
+ public string Artist
+ {
+ get { return Artists.FirstOrDefault(); }
+ set
+ {
+ if (!string.IsNullOrEmpty(value) && !Artists.Contains(value, StringComparer.OrdinalIgnoreCase))
+ {
+ Artists.Add(value);
+ }
+ }
+ }
+
///
/// Determines whether the specified name has artist.
///
diff --git a/MediaBrowser.Dlna/DlnaManager.cs b/MediaBrowser.Dlna/DlnaManager.cs
index b4519d02de..c4a79c22d0 100644
--- a/MediaBrowser.Dlna/DlnaManager.cs
+++ b/MediaBrowser.Dlna/DlnaManager.cs
@@ -541,7 +541,6 @@ namespace MediaBrowser.Dlna
public void Dispose()
{
- throw new NotImplementedException();
}
}
}
\ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs
index 4344ceb0a5..75195c8c51 100644
--- a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs
+++ b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs
@@ -34,7 +34,7 @@ namespace MediaBrowser.Server.Implementations.Connect
{
LoadCachedAddress();
- _timer = new Timer(TimerCallback, null, TimeSpan.FromSeconds(30), TimeSpan.FromHours(12));
+ _timer = new Timer(TimerCallback, null, TimeSpan.FromSeconds(10), TimeSpan.FromHours(12));
}
private async void TimerCallback(object state)
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
index 2f2973130b..7c336f6d7a 100644
--- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
+++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
@@ -1,4 +1,6 @@
-using MediaBrowser.Common.Configuration;
+using System.IO;
+using System.Text;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
@@ -79,21 +81,42 @@ namespace MediaBrowser.XbmcMetadata.Parsers
{
using (var streamReader = BaseNfoSaver.GetStreamReader(metadataFile))
{
- // Use XmlReader for best performance
- using (var reader = XmlReader.Create(streamReader, settings))
+ // Need to handle a url after the xml data
+ // http://kodi.wiki/view/NFO_files/movies
+
+ var xml = streamReader.ReadToEnd();
+
+ var index = xml.LastIndexOf('>');
+
+ if (index != -1)
{
- reader.MoveToContent();
+ xml = xml.Substring(0, index + 1);
+ }
- // Loop through each element
- while (reader.Read())
+ using (var ms = new MemoryStream())
+ {
+ var bytes = Encoding.UTF8.GetBytes(xml);
+
+ ms.Write(bytes, 0, bytes.Length);
+ ms.Position = 0;
+
+ // Use XmlReader for best performance
+ using (var reader = XmlReader.Create(ms, settings))
{
- cancellationToken.ThrowIfCancellationRequested();
+ reader.MoveToContent();
- if (reader.NodeType == XmlNodeType.Element)
+ // Loop through each element
+ while (reader.Read())
{
- FetchDataFromXmlNode(reader, item, userDataList);
+ cancellationToken.ThrowIfCancellationRequested();
+
+ if (reader.NodeType == XmlNodeType.Element)
+ {
+ FetchDataFromXmlNode(reader, item, userDataList);
+ }
}
}
+
}
}
}