commit
67d6dbadb0
|
@ -83,7 +83,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
||||||
{
|
{
|
||||||
query.Genres = new[] { Name };
|
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);
|
return LibraryManager.GetItemList(query);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1571,35 +1571,6 @@ namespace MediaBrowser.Controller.Entities
|
||||||
await Task.WhenAll(tasks).ConfigureAwait(false);
|
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)
|
public override bool IsPlayed(User user)
|
||||||
{
|
{
|
||||||
var itemsResult = GetItems(new InternalItemsQuery(user)
|
var itemsResult = GetItems(new InternalItemsQuery(user)
|
||||||
|
|
|
@ -194,24 +194,13 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||||
|
|
||||||
private List<BaseItem> GetTaggedItems(IItemByName byName, User user)
|
private List<BaseItem> GetTaggedItems(IItemByName byName, User user)
|
||||||
{
|
{
|
||||||
var person = byName as Person;
|
var items = byName.GetTaggedItems(new InternalItemsQuery(user)
|
||||||
|
|
||||||
if (person != null)
|
|
||||||
{
|
{
|
||||||
var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
|
Recursive = true
|
||||||
{
|
|
||||||
Person = byName.Name
|
|
||||||
|
|
||||||
}, new string[] { });
|
}).ToList();
|
||||||
|
|
||||||
return items.ToList();
|
return items;
|
||||||
}
|
|
||||||
|
|
||||||
var itemFilter = byName.GetItemFilter();
|
|
||||||
|
|
||||||
return user != null ?
|
|
||||||
user.RootFolder.GetRecursiveChildren(user, itemFilter).ToList() :
|
|
||||||
_libraryManager.RootFolder.GetRecursiveChildren(itemFilter).ToList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private SyncedItemProgress[] GetSyncedItemProgress(DtoOptions options)
|
private SyncedItemProgress[] GetSyncedItemProgress(DtoOptions options)
|
||||||
|
@ -501,7 +490,7 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||||
|
|
||||||
if (fields.Contains(ItemFields.CumulativeRunTimeTicks))
|
if (fields.Contains(ItemFields.CumulativeRunTimeTicks))
|
||||||
{
|
{
|
||||||
dto.CumulativeRunTimeTicks = dto.RunTimeTicks;
|
dto.CumulativeRunTimeTicks = item.RunTimeTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(ItemFields.DateLastMediaAdded))
|
if (fields.Contains(ItemFields.DateLastMediaAdded))
|
||||||
|
|
|
@ -306,9 +306,14 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
private async Task UpdateSeasonZeroNames(string newName, CancellationToken cancellationToken)
|
private async Task UpdateSeasonZeroNames(string newName, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var seasons = RootFolder.GetRecursiveChildren(i => i is Season)
|
var seasons = GetItemList(new InternalItemsQuery
|
||||||
.Cast<Season>()
|
{
|
||||||
.Where(i => i.IndexNumber.HasValue && i.IndexNumber.Value == 0 && !string.Equals(i.Name, newName, StringComparison.Ordinal))
|
IncludeItemTypes = new[] { typeof(Season).Name },
|
||||||
|
Recursive = true,
|
||||||
|
IndexNumber = 0
|
||||||
|
|
||||||
|
}).Cast<Season>()
|
||||||
|
.Where(i => !string.Equals(i.Name, newName, StringComparison.Ordinal))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
foreach (var season in seasons)
|
foreach (var season in seasons)
|
||||||
|
@ -787,20 +792,14 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
IsFolder = isFolder
|
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.
|
// If this returns multiple items it could be tricky figuring out which one is correct.
|
||||||
var items = GetItemIds(query).Select(GetItemById).Where(i => i != null).ToArray();
|
// In most cases, the newest one will be and the others obsolete but not yet cleaned up
|
||||||
|
|
||||||
if (items.Length == 1)
|
return GetItemIds(query)
|
||||||
{
|
.Select(GetItemById)
|
||||||
return items[0];
|
.Where(i => i != null)
|
||||||
}
|
.OrderByDescending(i => i.DateCreated)
|
||||||
|
.FirstOrDefault();
|
||||||
if (items.Length == 0)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return RootFolder.FindByPath(path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -6,6 +6,8 @@ using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
|
|
||||||
namespace MediaBrowser.Server.Implementations.Library
|
namespace MediaBrowser.Server.Implementations.Library
|
||||||
{
|
{
|
||||||
|
@ -22,10 +24,12 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
|
|
||||||
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
|
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var items = _libraryManager.RootFolder
|
var items = _libraryManager.GetItemList(new InternalItemsQuery
|
||||||
.GetRecursiveChildren(i => i is IHasTrailers)
|
{
|
||||||
.Cast<IHasTrailers>()
|
IncludeItemTypes = new[] { typeof(BoxSet).Name, typeof(Game).Name, typeof(Movie).Name, typeof(Series).Name },
|
||||||
.ToList();
|
Recursive = true
|
||||||
|
|
||||||
|
}).OfType<IHasTrailers>().ToList();
|
||||||
|
|
||||||
var trailerTypes = Enum.GetNames(typeof(TrailerType))
|
var trailerTypes = Enum.GetNames(typeof(TrailerType))
|
||||||
.Select(i => (TrailerType)Enum.Parse(typeof(TrailerType), i, true))
|
.Select(i => (TrailerType)Enum.Parse(typeof(TrailerType), i, true))
|
||||||
|
@ -35,7 +39,8 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
var trailers = _libraryManager.GetItemList(new InternalItemsQuery
|
var trailers = _libraryManager.GetItemList(new InternalItemsQuery
|
||||||
{
|
{
|
||||||
IncludeItemTypes = new[] { typeof(Trailer).Name },
|
IncludeItemTypes = new[] { typeof(Trailer).Name },
|
||||||
TrailerTypes = trailerTypes
|
TrailerTypes = trailerTypes,
|
||||||
|
Recursive = true
|
||||||
|
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
|
|
||||||
|
|
|
@ -20,16 +20,12 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
|
||||||
|
|
||||||
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
|
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var allYears = _libraryManager.RootFolder.GetRecursiveChildren(i => i.ProductionYear.HasValue)
|
var yearNumber = 1900;
|
||||||
.Select(i => i.ProductionYear ?? -1)
|
var maxYear = DateTime.UtcNow.Year + 3;
|
||||||
.Where(i => i > 0)
|
var count = maxYear - yearNumber + 1;
|
||||||
.Distinct()
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
var count = allYears.Count;
|
|
||||||
var numComplete = 0;
|
var numComplete = 0;
|
||||||
|
|
||||||
foreach (var yearNumber in allYears)
|
while (yearNumber < DateTime.UtcNow.Year + 3)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -1304,6 +1304,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("id");
|
throw new ArgumentNullException("id");
|
||||||
}
|
}
|
||||||
|
var list = new List<ChapterInfo>();
|
||||||
|
|
||||||
using (var cmd = _connection.CreateCommand())
|
using (var cmd = _connection.CreateCommand())
|
||||||
{
|
{
|
||||||
|
@ -1315,10 +1316,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
yield return GetChapter(reader);
|
list.Add(GetChapter(reader));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1632,9 +1635,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
|
|
||||||
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
|
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
|
||||||
{
|
{
|
||||||
Logger.Debug("GetItemList query time: {0}ms. Query: {1}",
|
//Logger.Debug("GetItemList query time: {0}ms. Query: {1}",
|
||||||
Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
|
// Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
|
||||||
cmd.CommandText);
|
// cmd.CommandText);
|
||||||
|
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
|
@ -1717,9 +1720,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
|
|
||||||
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
|
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
|
||||||
{
|
{
|
||||||
Logger.Debug("GetItems query time: {0}ms. Query: {1}",
|
//Logger.Debug("GetItems query time: {0}ms. Query: {1}",
|
||||||
Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
|
// Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
|
||||||
cmd.CommandText);
|
// cmd.CommandText);
|
||||||
|
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
|
@ -2029,9 +2032,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
|
|
||||||
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
|
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
|
||||||
{
|
{
|
||||||
Logger.Debug("GetItemIds query time: {0}ms. Query: {1}",
|
//Logger.Debug("GetItemIds query time: {0}ms. Query: {1}",
|
||||||
Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
|
// Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
|
||||||
cmd.CommandText);
|
// cmd.CommandText);
|
||||||
|
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
|
@ -3288,6 +3291,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
throw new ArgumentNullException("query");
|
throw new ArgumentNullException("query");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var list = new List<MediaStream>();
|
||||||
|
|
||||||
using (var cmd = _connection.CreateCommand())
|
using (var cmd = _connection.CreateCommand())
|
||||||
{
|
{
|
||||||
var cmdText = "select " + string.Join(",", _mediaStreamSaveColumns) + " from mediastreams where";
|
var cmdText = "select " + string.Join(",", _mediaStreamSaveColumns) + " from mediastreams where";
|
||||||
|
@ -3315,10 +3320,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
yield return GetMediaStream(reader);
|
list.Add(GetMediaStream(reader));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SaveMediaStreams(Guid id, IEnumerable<MediaStream> streams, CancellationToken cancellationToken)
|
public async Task SaveMediaStreams(Guid id, IEnumerable<MediaStream> streams, CancellationToken cancellationToken)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user