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