diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index 2cdd88775f..a1e5637a49 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -435,7 +435,8 @@ namespace MediaBrowser.Model.Configuration
Limit = 0,
Type = ImageType.Disc
}
- }
+ },
+ DisabledMetadataFetchers = new []{ "TheAudioDB" }
},
new MetadataOptions(1, 1280)
@@ -473,7 +474,8 @@ namespace MediaBrowser.Model.Configuration
Limit = 0,
Type = ImageType.Logo
}
- }
+ },
+ DisabledMetadataFetchers = new []{ "TheAudioDB" }
},
new MetadataOptions(1, 1280)
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index 7d21f9861e..598f8c58b4 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -169,6 +169,8 @@ namespace MediaBrowser.Model.Dto
/// The game system.
public string GameSystem { get; set; }
+ public string[] ProductionLocations { get; set; }
+
///
/// Gets or sets the critic rating summary.
///
diff --git a/MediaBrowser.Model/Providers/RemoteSearchResult.cs b/MediaBrowser.Model/Providers/RemoteSearchResult.cs
index 8c9e116d60..72b6632e4c 100644
--- a/MediaBrowser.Model/Providers/RemoteSearchResult.cs
+++ b/MediaBrowser.Model/Providers/RemoteSearchResult.cs
@@ -32,7 +32,8 @@ namespace MediaBrowser.Model.Providers
public string SearchProviderName { get; set; }
public string GameSystem { get; set; }
-
+ public string Overview { get; set; }
+
public RemoteSearchResult()
{
ProviderIds = new Dictionary(StringComparer.OrdinalIgnoreCase);
diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
index a0ce806105..9ed8f0a007 100644
--- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
+++ b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
@@ -85,7 +85,8 @@ namespace MediaBrowser.Providers.Music
{
var result = new RemoteSearchResult
{
- Name = i.Title
+ Name = i.Title,
+ ProductionYear = i.Year
};
if (!string.IsNullOrWhiteSpace(i.ReleaseId))
@@ -94,7 +95,7 @@ namespace MediaBrowser.Providers.Music
}
if (!string.IsNullOrWhiteSpace(i.ReleaseGroupId))
{
- result.SetProviderId(MetadataProviders.MusicBrainzAlbum, i.ReleaseGroupId);
+ result.SetProviderId(MetadataProviders.MusicBrainzReleaseGroup, i.ReleaseGroupId);
}
return result;
@@ -117,16 +118,22 @@ namespace MediaBrowser.Providers.Music
var releaseResult = await GetReleaseResult(artistMusicBrainzId, id.GetAlbumArtist(), id.Name, cancellationToken).ConfigureAwait(false);
- if (!string.IsNullOrEmpty(releaseResult.ReleaseId))
+ if (releaseResult != null)
{
- releaseId = releaseResult.ReleaseId;
- result.HasMetadata = true;
- }
+ if (!string.IsNullOrEmpty(releaseResult.ReleaseId))
+ {
+ releaseId = releaseResult.ReleaseId;
+ result.HasMetadata = true;
+ }
- if (!string.IsNullOrEmpty(releaseResult.ReleaseGroupId))
- {
- releaseGroupId = releaseResult.ReleaseGroupId;
- result.HasMetadata = true;
+ if (!string.IsNullOrEmpty(releaseResult.ReleaseGroupId))
+ {
+ releaseGroupId = releaseResult.ReleaseGroupId;
+ result.HasMetadata = true;
+ }
+
+ result.Item.ProductionYear = releaseResult.Year;
+ result.Item.Overview = releaseResult.Overview;
}
}
@@ -205,6 +212,8 @@ namespace MediaBrowser.Providers.Music
public string ReleaseId;
public string ReleaseGroupId;
public string Title;
+ public string Overview;
+ public int? Year;
public static List Parse(XmlDocument doc, int? limit = null)
{
@@ -237,7 +246,9 @@ namespace MediaBrowser.Providers.Music
{
ReleaseId = releaseId,
ReleaseGroupId = releaseGroupId,
- Title = GetTitleFromReleaseNode(node)
+ Title = GetValueFromReleaseNode(node, "title"),
+ Overview = GetValueFromReleaseNode(node, "annotation"),
+ Year = GetYearFromReleaseNode(node, "date")
});
if (limit.HasValue && list.Count >= limit.Value)
@@ -251,14 +262,37 @@ namespace MediaBrowser.Providers.Music
return list;
}
- private static string GetTitleFromReleaseNode(XmlNode node)
+ private static int? GetYearFromReleaseNode(XmlNode node, string name)
{
var subNodes = node.ChildNodes;
if (subNodes != null)
{
foreach (var subNode in subNodes.Cast())
{
- if (string.Equals(subNode.Name, "title", StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(subNode.Name, name, StringComparison.OrdinalIgnoreCase))
+ {
+ DateTime date;
+ if (DateTime.TryParse(subNode.InnerText, out date))
+ {
+ return date.Year;
+ }
+
+ return null;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private static string GetValueFromReleaseNode(XmlNode node, string name)
+ {
+ var subNodes = node.ChildNodes;
+ if (subNodes != null)
+ {
+ foreach (var subNode in subNodes.Cast())
+ {
+ if (string.Equals(subNode.Name, name, StringComparison.OrdinalIgnoreCase))
{
return subNode.InnerText;
}
diff --git a/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs
index 88635bf06c..88128bdc7a 100644
--- a/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs
+++ b/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs
@@ -86,7 +86,7 @@ namespace MediaBrowser.Providers.Music
if (node.Attributes != null)
{
string name = null;
-
+ string overview = null;
string mbzId = node.Attributes["id"].Value;
foreach (var child in node.ChildNodes.Cast())
@@ -94,7 +94,10 @@ namespace MediaBrowser.Providers.Music
if (string.Equals(child.Name, "name", StringComparison.OrdinalIgnoreCase))
{
name = child.InnerText;
- break;
+ }
+ if (string.Equals(child.Name, "annotation", StringComparison.OrdinalIgnoreCase))
+ {
+ overview = child.InnerText;
}
}
@@ -102,7 +105,8 @@ namespace MediaBrowser.Providers.Music
{
var result = new RemoteSearchResult
{
- Name = name
+ Name = name,
+ Overview = overview
};
result.SetProviderId(MetadataProviders.MusicBrainzArtist, mbzId);
@@ -135,6 +139,7 @@ namespace MediaBrowser.Providers.Music
{
musicBrainzId = singleResult.GetProviderId(MetadataProviders.MusicBrainzArtist);
//result.Item.Name = singleResult.Name;
+ result.Item.Overview = singleResult.Overview;
}
}
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index ae204c892a..47c1d83320 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1432,6 +1432,12 @@ namespace MediaBrowser.Server.Implementations.Dto
SetBookProperties(dto, book);
}
+ var movie = item as Movie;
+ if (movie != null)
+ {
+ dto.ProductionLocations = new string[] { };
+ }
+
var photo = item as Photo;
if (photo != null)
{
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 8275b01b00..77e2c36e20 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -742,7 +742,15 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.Id;
_saveItemCommand.GetParameter(index++).Value = item.GetType().FullName;
- _saveItemCommand.GetParameter(index++).Value = _jsonSerializer.SerializeToBytes(item, _memoryStreamProvider);
+
+ if (TypeRequiresDeserialization(item.GetType()))
+ {
+ _saveItemCommand.GetParameter(index++).Value = _jsonSerializer.SerializeToBytes(item, _memoryStreamProvider);
+ }
+ else
+ {
+ _saveItemCommand.GetParameter(index++).Value = null;
+ }
_saveItemCommand.GetParameter(index++).Value = item.Path;