| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | #nullable disableusing System;using System.IO;using MediaBrowser.Controller.Entities;using MediaBrowser.Controller.Entities.Movies;using MediaBrowser.Controller.Library;using MediaBrowser.Model.Entities;namespace Emby.Server.Implementations.Library.Resolvers.Movies{    /// <summary>    /// Class BoxSetResolver.    /// </summary>    public class BoxSetResolver : GenericFolderResolver<BoxSet>    {        /// <summary>        /// Resolves the specified args.        /// </summary>        /// <param name="args">The args.</param>        /// <returns>BoxSet.</returns>        protected override BoxSet Resolve(ItemResolveArgs args)        {            // It's a boxset if all of the following conditions are met:            // Is a Directory            // Contains [boxset] in the path            if (args.IsDirectory)            {                var filename = Path.GetFileName(args.Path);                if (string.IsNullOrEmpty(filename))                {                    return null;                }                if (filename.Contains("[boxset]", StringComparison.OrdinalIgnoreCase) || args.ContainsFileSystemEntryByName("collection.xml"))                {                    return new BoxSet                    {                        Path = args.Path,                        Name = Path.GetFileName(args.Path).Replace("[boxset]", string.Empty, StringComparison.OrdinalIgnoreCase).Trim()                    };                }            }            return null;        }        /// <summary>        /// Sets the initial item values.        /// </summary>        /// <param name="item">The item.</param>        /// <param name="args">The args.</param>        protected override void SetInitialItemValues(BoxSet item, ItemResolveArgs args)        {            base.SetInitialItemValues(item, args);            SetProviderIdFromPath(item);        }        /// <summary>        /// Sets the provider id from path.        /// </summary>        /// <param name="item">The item.</param>        private static void SetProviderIdFromPath(BaseItem item)        {            // we need to only look at the name of this actual item (not parents)            var justName = Path.GetFileName(item.Path.AsSpan());            var id = justName.GetAttributeValue("tmdbid");            if (!string.IsNullOrEmpty(id))            {                item.SetProviderId(MetadataProvider.Tmdb, id);            }        }    }}
 |