aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-05-10 15:20:47 -0400
committerLuke <luke.pulverenti@gmail.com>2016-05-10 15:20:47 -0400
commit67d6dbadb0fe23ba27fdc51cc39f4ba14d4e8c9c (patch)
tree1726257af289d162ad324c5489b8abb0506a916d
parent486c6c3d22e81594d7d27d60ccac95f2431069fd (diff)
parent9a730263896a648b3ec7af10d591ea4113842dcb (diff)
Merge pull request #1726 from MediaBrowser/dev
Dev
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicGenre.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs29
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs21
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs31
-rw-r--r--MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs15
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs12
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs29
7 files changed, 53 insertions, 86 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
index 05870176e..77cf0cc49 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
@@ -83,7 +83,7 @@ namespace MediaBrowser.Controller.Entities.Audio
public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query)
{
query.Genres = new[] { Name };
- query.ExcludeItemTypes = new[] { typeof(MusicVideo).Name, typeof(Audio).Name, typeof(MusicAlbum).Name, typeof(MusicArtist).Name };
+ query.IncludeItemTypes = new[] { typeof(MusicVideo).Name, typeof(Audio).Name, typeof(MusicAlbum).Name, typeof(MusicArtist).Name };
return LibraryManager.GetItemList(query);
}
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 949b333d4..79cbd7bd3 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -1571,35 +1571,6 @@ namespace MediaBrowser.Controller.Entities
await Task.WhenAll(tasks).ConfigureAwait(false);
}
- /// <summary>
- /// Finds an item by path, recursively
- /// </summary>
- /// <param name="path">The path.</param>
- /// <returns>BaseItem.</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- public BaseItem FindByPath(string path)
- {
- if (string.IsNullOrEmpty(path))
- {
- throw new ArgumentNullException();
- }
-
- if (string.Equals(Path, path, StringComparison.OrdinalIgnoreCase))
- {
- return this;
- }
-
- if (PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
- {
- return this;
- }
-
- return GetRecursiveChildren(i => string.Equals(i.Path, path, StringComparison.OrdinalIgnoreCase) ||
- (!i.IsFolder && !i.IsInMixedFolder && string.Equals(i.ContainingFolderPath, path, StringComparison.OrdinalIgnoreCase)) ||
- i.PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
- .FirstOrDefault();
- }
-
public override bool IsPlayed(User user)
{
var itemsResult = GetItems(new InternalItemsQuery(user)
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 32610a6ad..312eef9bf 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -194,24 +194,13 @@ namespace MediaBrowser.Server.Implementations.Dto
private List<BaseItem> GetTaggedItems(IItemByName byName, User user)
{
- var person = byName as Person;
-
- if (person != null)
+ var items = byName.GetTaggedItems(new InternalItemsQuery(user)
{
- var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
- {
- Person = byName.Name
-
- }, new string[] { });
-
- return items.ToList();
- }
+ Recursive = true
- var itemFilter = byName.GetItemFilter();
+ }).ToList();
- return user != null ?
- user.RootFolder.GetRecursiveChildren(user, itemFilter).ToList() :
- _libraryManager.RootFolder.GetRecursiveChildren(itemFilter).ToList();
+ return items;
}
private SyncedItemProgress[] GetSyncedItemProgress(DtoOptions options)
@@ -501,7 +490,7 @@ namespace MediaBrowser.Server.Implementations.Dto
if (fields.Contains(ItemFields.CumulativeRunTimeTicks))
{
- dto.CumulativeRunTimeTicks = dto.RunTimeTicks;
+ dto.CumulativeRunTimeTicks = item.RunTimeTicks;
}
if (fields.Contains(ItemFields.DateLastMediaAdded))
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index c95b30172..0c342986f 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -306,9 +306,14 @@ namespace MediaBrowser.Server.Implementations.Library
/// <returns>Task.</returns>
private async Task UpdateSeasonZeroNames(string newName, CancellationToken cancellationToken)
{
- var seasons = RootFolder.GetRecursiveChildren(i => i is Season)
- .Cast<Season>()
- .Where(i => i.IndexNumber.HasValue && i.IndexNumber.Value == 0 && !string.Equals(i.Name, newName, StringComparison.Ordinal))
+ var seasons = GetItemList(new InternalItemsQuery
+ {
+ IncludeItemTypes = new[] { typeof(Season).Name },
+ Recursive = true,
+ IndexNumber = 0
+
+ }).Cast<Season>()
+ .Where(i => !string.Equals(i.Name, newName, StringComparison.Ordinal))
.ToList();
foreach (var season in seasons)
@@ -787,20 +792,14 @@ namespace MediaBrowser.Server.Implementations.Library
IsFolder = isFolder
};
- // Only use the database result if there's exactly one item, otherwise we run the risk of returning old data that hasn't been cleaned yet.
- var items = GetItemIds(query).Select(GetItemById).Where(i => i != null).ToArray();
-
- if (items.Length == 1)
- {
- return items[0];
- }
-
- if (items.Length == 0)
- {
- return null;
- }
+ // If this returns multiple items it could be tricky figuring out which one is correct.
+ // In most cases, the newest one will be and the others obsolete but not yet cleaned up
- return RootFolder.FindByPath(path);
+ return GetItemIds(query)
+ .Select(GetItemById)
+ .Where(i => i != null)
+ .OrderByDescending(i => i.DateCreated)
+ .FirstOrDefault();
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs b/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs
index 5fc9c3168..78107b82d 100644
--- a/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs
+++ b/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs
@@ -6,6 +6,8 @@ using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.Entities.TV;
namespace MediaBrowser.Server.Implementations.Library
{
@@ -22,10 +24,12 @@ namespace MediaBrowser.Server.Implementations.Library
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
- var items = _libraryManager.RootFolder
- .GetRecursiveChildren(i => i is IHasTrailers)
- .Cast<IHasTrailers>()
- .ToList();
+ var items = _libraryManager.GetItemList(new InternalItemsQuery
+ {
+ IncludeItemTypes = new[] { typeof(BoxSet).Name, typeof(Game).Name, typeof(Movie).Name, typeof(Series).Name },
+ Recursive = true
+
+ }).OfType<IHasTrailers>().ToList();
var trailerTypes = Enum.GetNames(typeof(TrailerType))
.Select(i => (TrailerType)Enum.Parse(typeof(TrailerType), i, true))
@@ -35,7 +39,8 @@ namespace MediaBrowser.Server.Implementations.Library
var trailers = _libraryManager.GetItemList(new InternalItemsQuery
{
IncludeItemTypes = new[] { typeof(Trailer).Name },
- TrailerTypes = trailerTypes
+ TrailerTypes = trailerTypes,
+ Recursive = true
}).ToArray();
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs b/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs
index 5ea5fb254..6a827d7a3 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs
@@ -20,16 +20,12 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
- var allYears = _libraryManager.RootFolder.GetRecursiveChildren(i => i.ProductionYear.HasValue)
- .Select(i => i.ProductionYear ?? -1)
- .Where(i => i > 0)
- .Distinct()
- .ToList();
-
- var count = allYears.Count;
+ var yearNumber = 1900;
+ var maxYear = DateTime.UtcNow.Year + 3;
+ var count = maxYear - yearNumber + 1;
var numComplete = 0;
- foreach (var yearNumber in allYears)
+ while (yearNumber < DateTime.UtcNow.Year + 3)
{
try
{
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 939781fd1..7e7dfe6eb 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -1304,6 +1304,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
{
throw new ArgumentNullException("id");
}
+ var list = new List<ChapterInfo>();
using (var cmd = _connection.CreateCommand())
{
@@ -1315,10 +1316,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
{
while (reader.Read())
{
- yield return GetChapter(reader);
+ list.Add(GetChapter(reader));
}
}
}
+
+ return list;
}
/// <summary>
@@ -1632,9 +1635,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
{
- Logger.Debug("GetItemList query time: {0}ms. Query: {1}",
- Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
- cmd.CommandText);
+ //Logger.Debug("GetItemList query time: {0}ms. Query: {1}",
+ // Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
+ // cmd.CommandText);
while (reader.Read())
{
@@ -1717,9 +1720,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
- Logger.Debug("GetItems query time: {0}ms. Query: {1}",
- Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
- cmd.CommandText);
+ //Logger.Debug("GetItems query time: {0}ms. Query: {1}",
+ // Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
+ // cmd.CommandText);
while (reader.Read())
{
@@ -2029,9 +2032,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
- Logger.Debug("GetItemIds query time: {0}ms. Query: {1}",
- Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
- cmd.CommandText);
+ //Logger.Debug("GetItemIds query time: {0}ms. Query: {1}",
+ // Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
+ // cmd.CommandText);
while (reader.Read())
{
@@ -3288,6 +3291,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
throw new ArgumentNullException("query");
}
+ var list = new List<MediaStream>();
+
using (var cmd = _connection.CreateCommand())
{
var cmdText = "select " + string.Join(",", _mediaStreamSaveColumns) + " from mediastreams where";
@@ -3315,10 +3320,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
{
while (reader.Read())
{
- yield return GetMediaStream(reader);
+ list.Add(GetMediaStream(reader));
}
}
}
+
+ return list;
}
public async Task SaveMediaStreams(Guid id, IEnumerable<MediaStream> streams, CancellationToken cancellationToken)