mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	
						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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user