aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
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
parent91416cb8a83eadde908e810afea981b6e4bed234 (diff)
add option to merge metadata and IBN paths
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Devices/CameraImageUploadInfo.cs10
-rw-r--r--MediaBrowser.Controller/Devices/IDeviceManager.cs5
-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
-rw-r--r--MediaBrowser.Controller/Library/IMusicManager.cs17
-rw-r--r--MediaBrowser.Controller/Library/IUserViewManager.cs4
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj2
-rw-r--r--MediaBrowser.Controller/Playlists/Playlist.cs29
13 files changed, 70 insertions, 174 deletions
diff --git a/MediaBrowser.Controller/Devices/CameraImageUploadInfo.cs b/MediaBrowser.Controller/Devices/CameraImageUploadInfo.cs
new file mode 100644
index 0000000000..b3f3bb9025
--- /dev/null
+++ b/MediaBrowser.Controller/Devices/CameraImageUploadInfo.cs
@@ -0,0 +1,10 @@
+using MediaBrowser.Model.Devices;
+
+namespace MediaBrowser.Controller.Devices
+{
+ public class CameraImageUploadInfo
+ {
+ public LocalFileInfo FileInfo { get; set; }
+ public DeviceInfo Device { get; set; }
+ }
+}
diff --git a/MediaBrowser.Controller/Devices/IDeviceManager.cs b/MediaBrowser.Controller/Devices/IDeviceManager.cs
index f5010bb455..78eebd9942 100644
--- a/MediaBrowser.Controller/Devices/IDeviceManager.cs
+++ b/MediaBrowser.Controller/Devices/IDeviceManager.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Model.Events;
using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Session;
using System;
-using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
@@ -15,6 +14,10 @@ namespace MediaBrowser.Controller.Devices
/// Occurs when [device options updated].
/// </summary>
event EventHandler<GenericEventArgs<DeviceInfo>> DeviceOptionsUpdated;
+ /// <summary>
+ /// Occurs when [camera image uploaded].
+ /// </summary>
+ event EventHandler<GenericEventArgs<CameraImageUploadInfo>> CameraImageUploaded;
/// <summary>
/// Registers the device.
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)
{
diff --git a/MediaBrowser.Controller/Library/IMusicManager.cs b/MediaBrowser.Controller/Library/IMusicManager.cs
index f66f18401d..0ce0687cc1 100644
--- a/MediaBrowser.Controller/Library/IMusicManager.cs
+++ b/MediaBrowser.Controller/Library/IMusicManager.cs
@@ -1,6 +1,5 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Playlists;
using System.Collections.Generic;
namespace MediaBrowser.Controller.Library
@@ -13,7 +12,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="item">The item.</param>
/// <param name="user">The user.</param>
/// <returns>IEnumerable{Audio}.</returns>
- IEnumerable<Audio> GetInstantMixFromSong(Audio item, User user);
+ IEnumerable<Audio> GetInstantMixFromItem(BaseItem item, User user);
/// <summary>
/// Gets the instant mix from artist.
/// </summary>
@@ -22,20 +21,6 @@ namespace MediaBrowser.Controller.Library
/// <returns>IEnumerable{Audio}.</returns>
IEnumerable<Audio> GetInstantMixFromArtist(string name, User user);
/// <summary>
- /// Gets the instant mix from album.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="user">The user.</param>
- /// <returns>IEnumerable{Audio}.</returns>
- IEnumerable<Audio> GetInstantMixFromAlbum(MusicAlbum item, User user);
- /// <summary>
- /// Gets the instant mix from playlist.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="user">The user.</param>
- /// <returns>IEnumerable&lt;Audio&gt;.</returns>
- IEnumerable<Audio> GetInstantMixFromPlaylist(Playlist item, User user);
- /// <summary>
/// Gets the instant mix from genre.
/// </summary>
/// <param name="genres">The genres.</param>
diff --git a/MediaBrowser.Controller/Library/IUserViewManager.cs b/MediaBrowser.Controller/Library/IUserViewManager.cs
index 727ccd00a6..f55c179248 100644
--- a/MediaBrowser.Controller/Library/IUserViewManager.cs
+++ b/MediaBrowser.Controller/Library/IUserViewManager.cs
@@ -1,5 +1,7 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Library;
+using MediaBrowser.Model.Querying;
+using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@@ -16,5 +18,7 @@ namespace MediaBrowser.Controller.Library
Task<UserView> GetUserView(string type, string sortName, CancellationToken cancellationToken);
Task<UserView> GetUserView(string category, string type, User user, string sortName, CancellationToken cancellationToken);
+
+ List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request);
}
}
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 0667730fdd..867d9b0c54 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -101,6 +101,7 @@
<Compile Include="Collections\ICollectionManager.cs" />
<Compile Include="Connect\IConnectManager.cs" />
<Compile Include="Connect\UserLinkResult.cs" />
+ <Compile Include="Devices\CameraImageUploadInfo.cs" />
<Compile Include="Devices\IDeviceManager.cs" />
<Compile Include="Devices\IDeviceRepository.cs" />
<Compile Include="Dlna\ControlRequest.cs" />
@@ -117,7 +118,6 @@
<Compile Include="Drawing\ImageStream.cs" />
<Compile Include="Dto\DtoOptions.cs" />
<Compile Include="Dto\IDtoService.cs" />
- <Compile Include="Entities\AdultVideo.cs" />
<Compile Include="Entities\Audio\IHasAlbumArtist.cs" />
<Compile Include="Entities\Audio\IHasMusicGenres.cs" />
<Compile Include="Entities\Book.cs" />
diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs
index 071a9bf934..0f0c6a97ed 100644
--- a/MediaBrowser.Controller/Playlists/Playlist.cs
+++ b/MediaBrowser.Controller/Playlists/Playlist.cs
@@ -113,38 +113,17 @@ namespace MediaBrowser.Controller.Playlists
return LibraryManager.Sort(items, user, new[] { ItemSortBy.AlbumArtist, ItemSortBy.Album, ItemSortBy.SortName }, SortOrder.Ascending);
}
- // Grab these explicitly to avoid the sorting that will happen below
- var collection = item as BoxSet;
- if (collection != null)
- {
- var items = user == null
- ? collection.Children
- : collection.GetChildren(user, true);
-
- return items
- .Where(m => !m.IsFolder);
- }
-
- // Grab these explicitly to avoid the sorting that will happen below
- var season = item as Season;
- if (season != null)
- {
- var items = user == null
- ? season.Children
- : season.GetChildren(user, true);
-
- return items
- .Where(m => !m.IsFolder);
- }
-
var folder = item as Folder;
-
if (folder != null)
{
var items = user == null
? folder.GetRecursiveChildren(m => !m.IsFolder)
: folder.GetRecursiveChildren(user, m => !m.IsFolder);
+ if (folder.IsPreSorted)
+ {
+ return items;
+ }
return LibraryManager.Sort(items, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending);
}