#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<MusicVideoInfo> { public MusicVideo() { Artists = Array.Empty<string>(); } /// <inheritdoc /> [JsonIgnore] public IReadOnlyList<string> Artists { get; set; } public override UnratedItem GetBlockUnratedType() { return UnratedItem.Music; } public MusicVideoInfo GetLookupInfo() { var info = GetItemLookupInfo<MusicVideoInfo>(); 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; } } }