Duncan Tourolle c1f7981ed7
All checks were successful
🏗️ Build Plugin / build (push) Successful in 1m59s
🧪 Test Plugin / test (push) Successful in 56s
🚀 Release Plugin / build-and-release (push) Successful in 1m56s
Add progress and complettion indication
2025-12-14 11:11:26 +01:00

105 lines
2.7 KiB
C#

using System;
namespace Jellyfin.Plugin.Jellypod.Models;
/// <summary>
/// Represents a podcast episode.
/// </summary>
public class Episode
{
/// <summary>
/// Gets or sets the unique identifier for this episode.
/// </summary>
public Guid Id { get; set; } = Guid.NewGuid();
/// <summary>
/// Gets or sets the ID of the parent podcast.
/// </summary>
public Guid PodcastId { get; set; }
/// <summary>
/// Gets or sets the episode title.
/// </summary>
public string Title { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the episode description.
/// </summary>
public string? Description { get; set; }
/// <summary>
/// Gets or sets the URL to the audio file.
/// </summary>
public string AudioUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the local file path where the episode is stored.
/// </summary>
public string? LocalFilePath { get; set; }
/// <summary>
/// Gets or sets the file size in bytes.
/// </summary>
public long? FileSizeBytes { get; set; }
/// <summary>
/// Gets or sets the episode duration.
/// </summary>
public TimeSpan? Duration { get; set; }
/// <summary>
/// Gets or sets the publish date.
/// </summary>
public DateTime PublishedDate { get; set; }
/// <summary>
/// Gets or sets the date the episode was downloaded.
/// </summary>
public DateTime? DownloadedDate { get; set; }
/// <summary>
/// Gets or sets the download status.
/// </summary>
public EpisodeStatus Status { get; set; } = EpisodeStatus.Available;
/// <summary>
/// Gets or sets the RSS GUID for deduplication.
/// </summary>
public string? EpisodeGuid { get; set; }
/// <summary>
/// Gets or sets the season number if applicable.
/// </summary>
public int? SeasonNumber { get; set; }
/// <summary>
/// Gets or sets the episode number if applicable.
/// </summary>
public int? EpisodeNumber { get; set; }
/// <summary>
/// Gets or sets the episode-specific image URL.
/// </summary>
public string? ImageUrl { get; set; }
/// <summary>
/// Gets or sets the playback position in ticks.
/// </summary>
public long PlaybackPositionTicks { get; set; }
/// <summary>
/// Gets or sets a value indicating whether the episode has been played/completed.
/// </summary>
public bool IsPlayed { get; set; }
/// <summary>
/// Gets or sets the date the episode was last played.
/// </summary>
public DateTime? LastPlayedDate { get; set; }
/// <summary>
/// Gets or sets the number of times the episode has been played.
/// </summary>
public int PlayCount { get; set; }
}