#nullable disable #pragma warning disable CS1591 using System; using System.Collections.Generic; using System.Text.Json.Serialization; using Jellyfin.Data.Enums; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Providers; namespace MediaBrowser.Controller.Entities { public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasLookupInfo { public MusicVideo() { Artists = Array.Empty(); } /// [JsonIgnore] public IReadOnlyList Artists { get; set; } public override UnratedItem GetBlockUnratedType() { return UnratedItem.Music; } public MusicVideoInfo GetLookupInfo() { var info = GetItemLookupInfo(); info.Artists = Artists; return info; } public override bool BeforeMetadataRefresh(bool replaceAllMetadata) { var hasChanges = base.BeforeMetadataRefresh(replaceAllMetadata); 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; } } }