aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs3
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs10
-rw-r--r--MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs100
-rw-r--r--MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs3
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs2
-rw-r--r--MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj3
6 files changed, 68 insertions, 53 deletions
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs
index 66fe1cc75..78a974bf7 100644
--- a/MediaBrowser.Controller/Entities/TV/Season.cs
+++ b/MediaBrowser.Controller/Entities/TV/Season.cs
@@ -170,10 +170,13 @@ namespace MediaBrowser.Controller.Entities.TV
Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager);
+ Logger.Debug("Season.GetItemsInternal entering GetEpisodes");
var items = GetEpisodes(user).Where(filter);
+ Logger.Debug("Season.GetItemsInternal entering PostFilterAndSort");
var result = PostFilterAndSort(items, query);
+ Logger.Debug("Season.GetItemsInternal complete");
return Task.FromResult(result);
}
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index 02ac42b2a..30c06b244 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -379,13 +379,19 @@ namespace MediaBrowser.Controller.Entities.TV
private IEnumerable<Episode> GetAllEpisodes(User user)
{
- return LibraryManager.GetItemList(new InternalItemsQuery(user)
+ Logger.Debug("Series.GetAllEpisodes entering GetItemList");
+
+ var result = LibraryManager.GetItemList(new InternalItemsQuery(user)
{
AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(this),
IncludeItemTypes = new[] { typeof(Episode).Name },
SortBy = new[] { ItemSortBy.SortName }
- }).Cast<Episode>();
+ }).Cast<Episode>().ToList();
+
+ Logger.Debug("Series.GetAllEpisodes returning {0} episodes", result.Count);
+
+ return result;
}
public IEnumerable<Episode> GetSeasonEpisodes(User user, Season parentSeason, bool includeMissingEpisodes, bool includeVirtualUnairedEpisodes)
diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
index 1710ec2b0..a0ce80610 100644
--- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
+++ b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
@@ -81,46 +81,24 @@ namespace MediaBrowser.Providers.Music
private IEnumerable<RemoteSearchResult> GetResultsFromResponse(XmlDocument doc)
{
- var ns = new XmlNamespaceManager(doc.NameTable);
- ns.AddNamespace("mb", MusicBrainzBaseUrl + "/ns/mmd-2.0#");
-
- var list = new List<RemoteSearchResult>();
-
- var nodes = doc.SelectNodes("//mb:release-list/mb:release", ns);
-
- if (nodes != null)
+ return ReleaseResult.Parse(doc).Select(i =>
{
- foreach (var node in nodes.Cast<XmlNode>())
+ var result = new RemoteSearchResult
{
- if (node.Attributes != null)
- {
- string name = null;
-
- string mbzId = node.Attributes["id"].Value;
-
- var nameNode = node.SelectSingleNode("//mb:title", ns);
-
- if (nameNode != null)
- {
- name = nameNode.InnerText;
- }
-
- if (!string.IsNullOrWhiteSpace(mbzId) && !string.IsNullOrWhiteSpace(name))
- {
- var result = new RemoteSearchResult
- {
- Name = name
- };
-
- result.SetProviderId(MetadataProviders.MusicBrainzAlbum, mbzId);
+ Name = i.Title
+ };
- list.Add(result);
- }
- }
+ if (!string.IsNullOrWhiteSpace(i.ReleaseId))
+ {
+ result.SetProviderId(MetadataProviders.MusicBrainzAlbum, i.ReleaseId);
+ }
+ if (!string.IsNullOrWhiteSpace(i.ReleaseGroupId))
+ {
+ result.SetProviderId(MetadataProviders.MusicBrainzAlbum, i.ReleaseGroupId);
}
- }
- return list;
+ return result;
+ });
}
public async Task<MetadataResult<MusicAlbum>> GetMetadata(AlbumInfo id, CancellationToken cancellationToken)
@@ -208,7 +186,7 @@ namespace MediaBrowser.Providers.Music
var doc = await GetMusicBrainzResponse(url, true, cancellationToken).ConfigureAwait(false);
- return ReleaseResult.Parse(doc);
+ return ReleaseResult.Parse(doc, 1).FirstOrDefault();
}
private async Task<ReleaseResult> GetReleaseResultByArtistName(string albumName, string artistName, CancellationToken cancellationToken)
@@ -219,32 +197,32 @@ namespace MediaBrowser.Providers.Music
var doc = await GetMusicBrainzResponse(url, true, cancellationToken).ConfigureAwait(false);
- return ReleaseResult.Parse(doc);
+ return ReleaseResult.Parse(doc, 1).FirstOrDefault();
}
private class ReleaseResult
{
public string ReleaseId;
public string ReleaseGroupId;
+ public string Title;
- public static ReleaseResult Parse(XmlDocument doc)
+ public static List<ReleaseResult> Parse(XmlDocument doc, int? limit = null)
{
var docElem = doc.DocumentElement;
+ var list = new List<ReleaseResult>();
if (docElem == null)
{
- return new ReleaseResult();
+ return list;
}
var releaseList = docElem.FirstChild;
if (releaseList == null)
{
- return new ReleaseResult();
+ return list;
}
var nodes = releaseList.ChildNodes;
- string releaseId = null;
- string releaseGroupId = null;
if (nodes != null)
{
@@ -252,18 +230,42 @@ namespace MediaBrowser.Providers.Music
{
if (string.Equals(node.Name, "release", StringComparison.OrdinalIgnoreCase))
{
- releaseId = node.Attributes["id"].Value;
- releaseGroupId = GetReleaseGroupIdFromReleaseNode(node);
- break;
+ var releaseId = node.Attributes["id"].Value;
+ var releaseGroupId = GetReleaseGroupIdFromReleaseNode(node);
+
+ list.Add(new ReleaseResult
+ {
+ ReleaseId = releaseId,
+ ReleaseGroupId = releaseGroupId,
+ Title = GetTitleFromReleaseNode(node)
+ });
+
+ if (limit.HasValue && list.Count >= limit.Value)
+ {
+ break;
+ }
}
}
}
- return new ReleaseResult
+ return list;
+ }
+
+ private static string GetTitleFromReleaseNode(XmlNode node)
+ {
+ var subNodes = node.ChildNodes;
+ if (subNodes != null)
{
- ReleaseId = releaseId,
- ReleaseGroupId = releaseGroupId
- };
+ foreach (var subNode in subNodes.Cast<XmlNode>())
+ {
+ if (string.Equals(subNode.Name, "title", StringComparison.OrdinalIgnoreCase))
+ {
+ return subNode.InnerText;
+ }
+ }
+ }
+
+ return null;
}
private static string GetReleaseGroupIdFromReleaseNode(XmlNode node)
diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
index dea0a978b..ea9e58ee4 100644
--- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
+++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
@@ -52,7 +52,8 @@ namespace MediaBrowser.Server.Implementations.IO
".db",
// bts sync files
- ".bts"
+ ".bts",
+ ".sync"
};
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
index 5b83e7cbe..5c508aacd 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
@@ -136,7 +136,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
RequiresOpening = false,
RequiresClosing = false,
- ReadAtNativeFramerate = true
+ ReadAtNativeFramerate = false
};
return new List<MediaSourceInfo> { mediaSource };
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index 50e1cfbbe..61facf8ec 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -173,6 +173,9 @@
<Content Include="dashboard-ui\components\remotecontrolautoplay.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\components\syncjoblist\syncjoblist.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\components\tvproviders\xmltv.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>