| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | using MediaBrowser.Controller.Entities.Audio;using MediaBrowser.Controller.Providers;using MediaBrowser.Model.Configuration;using MediaBrowser.Model.Entities;using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using MediaBrowser.Model.Users;namespace MediaBrowser.Controller.Entities{    public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasProductionLocations, IHasBudget, IHasLookupInfo<MusicVideoInfo>    {        /// <summary>        /// Gets or sets the album.        /// </summary>        /// <value>The album.</value>        public string Album { get; set; }        /// <summary>        /// Gets or sets the budget.        /// </summary>        /// <value>The budget.</value>        public double? Budget { get; set; }        /// <summary>        /// Gets or sets the revenue.        /// </summary>        /// <value>The revenue.</value>        public double? Revenue { get; set; }        public List<string> ProductionLocations { get; set; }        public List<string> Artists { get; set; }        public MusicVideo()        {            ProductionLocations = new List<string>();            Artists = new List<string>();        }        [IgnoreDataMember]        public List<string> AllArtists        {            get            {                return Artists;            }        }        /// <summary>        /// TODO: Remove        /// </summary>        public string Artist        {            get { return Artists.FirstOrDefault(); }            set            {                if (!string.IsNullOrEmpty(value) && !Artists.Contains(value, StringComparer.OrdinalIgnoreCase))                {                    Artists.Add(value);                }            }        }        /// <summary>        /// Determines whether the specified name has artist.        /// </summary>        /// <param name="name">The name.</param>        /// <returns><c>true</c> if the specified name has artist; otherwise, <c>false</c>.</returns>        public bool HasArtist(string name)        {            return AllArtists.Contains(name, StringComparer.OrdinalIgnoreCase);        }                /// <summary>        /// Gets the user data key.        /// </summary>        /// <returns>System.String.</returns>        public override string GetUserDataKey()        {            return this.GetProviderId(MetadataProviders.Tmdb) ?? this.GetProviderId(MetadataProviders.Imdb) ?? base.GetUserDataKey();        }        protected override bool GetBlockUnratedValue(UserPolicy config)        {            return config.BlockUnratedItems.Contains(UnratedItem.Music);        }        public MusicVideoInfo GetLookupInfo()        {            return GetItemLookupInfo<MusicVideoInfo>();        }        public override bool BeforeMetadataRefresh()        {            var hasChanges = base.BeforeMetadataRefresh();            if (!ProductionYear.HasValue)            {                var info = LibraryManager.ParseName(Name);                var yearInName = info.Year;                if (yearInName.HasValue)                {                    ProductionYear = yearInName;                    hasChanges = true;                }                else                {                    // Try to get the year from the folder name                    if (!IsInMixedFolder)                    {                        info = LibraryManager.ParseName(System.IO.Path.GetFileName(ContainingFolderPath));                        yearInName = info.Year;                        if (yearInName.HasValue)                        {                            ProductionYear = yearInName;                            hasChanges = true;                        }                    }                }            }            return hasChanges;        }    }}
 |