Files
2026-01-25 17:17:31 -05:00

48 lines
1.7 KiB
C#

namespace Harmonia.Core.Models;
public class Song
{
public required string FileName { get; set; }
public ulong Size { get; set; }
public DateTime? LastModified { get; set; }
public string? Title { get; set; }
public string? Album { get; set; }
public string? ImageName { get; set; }
public string? ImageHash { get; set; }
public List<string> Artists { get; set; } = [];
public List<string> AlbumArtists { get; set; } = [];
public byte? TrackNumber { get; set; }
public byte? DiscNumber { get; set; }
public TimeSpan Length { get; set; }
public ushort? Year { get; set; }
public string? Genre { get; set; }
public uint BitRate { get; set; }
public uint SampleRate { get; set; }
public string? FilePath => Path.GetDirectoryName(FileName);
public string? FileDirectory => Directory.GetParent(FileName)?.Name;
public string? FileType => Path.GetExtension(FileName)?.Replace(".", "").ToUpper();
public string ShortFileName => Path.GetFileNameWithoutExtension(FileName);
public void Update(Song song)
{
if (string.Equals(song.FileName, FileName, StringComparison.OrdinalIgnoreCase) == false)
return;
Size = song.Size;
LastModified = song.LastModified;
Title = song.Title;
Album = song.Album;
Artists = song.Artists;
AlbumArtists = song.AlbumArtists;
DiscNumber = song.DiscNumber;
TrackNumber = song.TrackNumber;
Length = song.Length;
Year = song.Year;
Genre = song.Genre;
BitRate = song.BitRate;
SampleRate = song.SampleRate;
ImageName = song?.ImageName;
ImageHash = song?.ImageHash;
}
}