aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-01-26 11:47:15 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-01-26 11:47:15 -0500
commit63f3cf97dada179fc6e9e3a177504d3e7b36321c (patch)
treeb6810d34b9bc46d61e8565ec4fc0f0c178cd0b35 /MediaBrowser.Controller/Entities
parent91416cb8a83eadde908e810afea981b6e4bed234 (diff)
add option to merge metadata and IBN paths
Diffstat (limited to 'MediaBrowser.Controller/Entities')
-rw-r--r--MediaBrowser.Controller/Entities/AdultVideo.cs19
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs8
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicArtist.cs59
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs34
-rw-r--r--MediaBrowser.Controller/Entities/Movies/BoxSet.cs33
-rw-r--r--MediaBrowser.Controller/Entities/UserView.cs3
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs21
7 files changed, 46 insertions, 131 deletions
diff --git a/MediaBrowser.Controller/Entities/AdultVideo.cs b/MediaBrowser.Controller/Entities/AdultVideo.cs
deleted file mode 100644
index 6c3f7851ea..0000000000
--- a/MediaBrowser.Controller/Entities/AdultVideo.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Controller.Entities
-{
- [Obsolete]
- public class AdultVideo : Video, IHasProductionLocations, IHasTaglines
- {
- public List<string> ProductionLocations { get; set; }
-
- public List<string> Taglines { get; set; }
-
- public AdultVideo()
- {
- Taglines = new List<string>();
- ProductionLocations = new List<string>();
- }
- }
-}
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
index 00a7e8b672..b9a38d594e 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
@@ -1,11 +1,11 @@
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Users;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
-using MediaBrowser.Model.Users;
namespace MediaBrowser.Controller.Entities.Audio
{
@@ -181,10 +181,4 @@ namespace MediaBrowser.Controller.Entities.Audio
return id;
}
}
-
- [Obsolete]
- public class MusicAlbumDisc : Folder
- {
-
- }
}
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
index 5cca91202f..4cc3f18927 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
@@ -129,43 +129,20 @@ namespace MediaBrowser.Controller.Entities.Audio
var others = items.Except(songs).ToList();
var totalItems = songs.Count + others.Count;
- var percentages = new Dictionary<Guid, double>(totalItems);
-
- var tasks = new List<Task>();
+ var numComplete = 0;
// Refresh songs
foreach (var item in songs)
{
- if (tasks.Count >= 2)
- {
- await Task.WhenAll(tasks).ConfigureAwait(false);
- tasks.Clear();
- }
-
cancellationToken.ThrowIfCancellationRequested();
- var innerProgress = new ActionableProgress<double>();
- // Avoid implicitly captured closure
- var currentChild = item;
- innerProgress.RegisterAction(p =>
- {
- lock (percentages)
- {
- percentages[currentChild.Id] = p / 100;
-
- var percent = percentages.Values.Sum();
- percent /= totalItems;
- percent *= 100;
- progress.Report(percent);
- }
- });
-
- var taskChild = item;
- tasks.Add(Task.Run(async () => await RefreshItem(taskChild, refreshOptions, innerProgress, cancellationToken).ConfigureAwait(false), cancellationToken));
- }
+ await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
- await Task.WhenAll(tasks).ConfigureAwait(false);
- tasks.Clear();
+ numComplete++;
+ double percent = numComplete;
+ percent /= totalItems;
+ progress.Report(percent * 100);
+ }
// Refresh current item
await RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
@@ -175,31 +152,17 @@ namespace MediaBrowser.Controller.Entities.Audio
{
cancellationToken.ThrowIfCancellationRequested();
- // Avoid implicitly captured closure
- var currentChild = item;
-
await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
- lock (percentages)
- {
- percentages[currentChild.Id] = 1;
- var percent = percentages.Values.Sum();
- percent /= totalItems;
- percent *= 100;
- progress.Report(percent);
- }
+ numComplete++;
+ double percent = numComplete;
+ percent /= totalItems;
+ progress.Report(percent * 100);
}
progress.Report(100);
}
- private async Task RefreshItem(BaseItem item, MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken)
- {
- await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
-
- progress.Report(100);
- }
-
public ArtistInfo GetLookupInfo()
{
var info = GetItemLookupInfo<ArtistInfo>();
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 9cc320095a..8c13c7e66e 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -283,7 +283,17 @@ namespace MediaBrowser.Controller.Entities
{
get
{
- return _children ?? (_children = LoadChildrenInternal());
+ if (_children == null)
+ {
+ lock (_childrenSyncLock)
+ {
+ if (_children == null)
+ {
+ _children = LoadChildrenInternal();
+ }
+ }
+ }
+ return _children;
}
}
@@ -749,28 +759,6 @@ namespace MediaBrowser.Controller.Entities
return childrenItems;
}
- /// <summary>
- /// Retrieves the child.
- /// </summary>
- /// <param name="child">The child.</param>
- /// <returns>BaseItem.</returns>
- private BaseItem RetrieveChild(Guid child)
- {
- var item = LibraryManager.GetItemById(child);
-
- if (item != null)
- {
- if (item is IByReferenceItem)
- {
- return LibraryManager.GetOrAddByReferenceItem(item);
- }
-
- item.Parent = this;
- }
-
- return item;
- }
-
private BaseItem RetrieveChild(BaseItem child)
{
if (child.Id == Guid.Empty)
diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
index e08d88b028..dea97aed48 100644
--- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
+++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
@@ -143,31 +143,19 @@ namespace MediaBrowser.Controller.Entities.Movies
var items = GetRecursiveChildren().ToList();
var totalItems = items.Count;
- var percentages = new Dictionary<Guid, double>(totalItems);
+ var numComplete = 0;
// Refresh songs
foreach (var item in items)
{
cancellationToken.ThrowIfCancellationRequested();
- var innerProgress = new ActionableProgress<double>();
- // Avoid implicitly captured closure
- var currentChild = item;
- innerProgress.RegisterAction(p =>
- {
- lock (percentages)
- {
- percentages[currentChild.Id] = p / 100;
-
- var percent = percentages.Values.Sum();
- percent /= totalItems;
- percent *= 100;
- progress.Report(percent);
- }
- });
-
- // Avoid implicitly captured closure
- await RefreshItem(item, refreshOptions, innerProgress, cancellationToken).ConfigureAwait(false);
+ await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
+
+ numComplete++;
+ double percent = numComplete;
+ percent /= totalItems;
+ progress.Report(percent * 100);
}
// Refresh current item
@@ -176,13 +164,6 @@ namespace MediaBrowser.Controller.Entities.Movies
progress.Report(100);
}
- private async Task RefreshItem(BaseItem item, MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken)
- {
- await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
-
- progress.Report(100);
- }
-
public override bool IsVisible(User user)
{
if (base.IsVisible(user))
diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs
index f1436d45e7..cd179eb428 100644
--- a/MediaBrowser.Controller/Entities/UserView.cs
+++ b/MediaBrowser.Controller/Entities/UserView.cs
@@ -64,8 +64,7 @@ namespace MediaBrowser.Controller.Entities
{
CollectionType.Books,
CollectionType.HomeVideos,
- CollectionType.Photos,
- string.Empty
+ CollectionType.Photos
};
var collectionFolder = folder as ICollectionFolder;
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index 1572c1af04..a24a42535b 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -409,12 +409,21 @@ namespace MediaBrowser.Controller.Entities
private QueryResult<BaseItem> GetMusicLatest(Folder parent, User user, InternalItemsQuery query)
{
- query.SortBy = new[] { ItemSortBy.DateCreated, ItemSortBy.SortName };
- query.SortOrder = SortOrder.Descending;
+ var items = _userViewManager.GetLatestItems(new LatestItemsQuery
+ {
+ UserId = user.Id.ToString("N"),
+ Limit = GetSpecialItemsLimit(),
+ IncludeItemTypes = new[] { typeof(Audio.Audio).Name },
+ ParentId = (parent == null ? null : parent.Id.ToString("N")),
+ GroupItems = true
- var items = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }, i => i is MusicVideo || i is Audio.Audio && FilterItem(i, query));
+ }).Select(i => i.Item1);
- return PostFilterAndSort(items, parent, GetSpecialItemsLimit(), query);
+ query.SortBy = new string[] { };
+
+ //var items = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }, i => i is MusicVideo || i is Audio.Audio && FilterItem(i, query));
+
+ return PostFilterAndSort(items, parent, null, query);
}
private async Task<QueryResult<BaseItem>> GetMovieFolders(Folder parent, User user, InternalItemsQuery query)
@@ -741,7 +750,7 @@ namespace MediaBrowser.Controller.Entities
private async Task<QueryResult<BaseItem>> GetGameGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query)
{
- var items = GetRecursiveChildren(queryParent, user, new[] {CollectionType.Games},
+ var items = GetRecursiveChildren(queryParent, user, new[] { CollectionType.Games },
i => i is Game && i.Genres.Contains(displayParent.Name, StringComparer.OrdinalIgnoreCase));
return GetResult(items, queryParent, query);
@@ -1686,7 +1695,7 @@ namespace MediaBrowser.Controller.Entities
return parent.GetRecursiveChildren(user);
}
- private IEnumerable<BaseItem> GetRecursiveChildren(Folder parent, User user, IEnumerable<string> viewTypes, Func<BaseItem,bool> filter)
+ private IEnumerable<BaseItem> GetRecursiveChildren(Folder parent, User user, IEnumerable<string> viewTypes, Func<BaseItem, bool> filter)
{
if (parent == null || parent is UserView)
{