intro-skipper/IntroSkipper/Data/QueuedEpisode.cs
rlauuzo a1d634b66e
Switch from XML Files to SQLite DB (#365)
Co-authored-by: rlauu <46294892+rlauu@users.noreply.github.com>
Co-authored-by: Kilian von Pflugk <github@jumoog.io>
2024-11-02 17:17:22 +00:00

96 lines
2.7 KiB
C#

// Copyright (C) 2024 Intro-Skipper contributors <intro-skipper.org>
// SPDX-License-Identifier: GPL-3.0-only.
using System;
using System.Collections.Generic;
namespace IntroSkipper.Data;
/// <summary>
/// Episode queued for analysis.
/// </summary>
public class QueuedEpisode
{
private readonly Dictionary<AnalysisMode, bool> _isAnalyzed = [];
/// <summary>
/// Gets or sets the series name.
/// </summary>
public string SeriesName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the season number.
/// </summary>
public int SeasonNumber { get; set; }
/// <summary>
/// Gets or sets the episode id.
/// </summary>
public Guid EpisodeId { get; set; }
/// <summary>
/// Gets or sets the series id.
/// </summary>
public Guid SeriesId { get; set; }
/// <summary>
/// Gets a value indicating whether this media has been already analyzed.
/// </summary>
public IReadOnlyDictionary<AnalysisMode, bool> IsAnalyzed => _isAnalyzed;
/// <summary>
/// Gets or sets the full path to episode.
/// </summary>
public string Path { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the name of the episode.
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// Gets or sets a value indicating whether an episode is Anime.
/// </summary>
public bool IsAnime { get; set; }
/// <summary>
/// Gets or sets a value indicating whether an item is a movie.
/// </summary>
public bool IsMovie { get; set; }
/// <summary>
/// Gets or sets the timestamp (in seconds) to stop searching for an introduction at.
/// </summary>
public int IntroFingerprintEnd { get; set; }
/// <summary>
/// Gets or sets the timestamp (in seconds) to start looking for end credits at.
/// </summary>
public int CreditsFingerprintStart { get; set; }
/// <summary>
/// Gets or sets the total duration of this media file (in seconds).
/// </summary>
public int Duration { get; set; }
/// <summary>
/// Sets a value indicating whether this media has been already analyzed.
/// </summary>
/// <param name="mode">Analysis mode.</param>
/// <param name="value">Value to set.</param>
public void SetAnalyzed(AnalysisMode mode, bool value)
{
_isAnalyzed[mode] = value;
}
/// <summary>
/// Sets a value indicating whether this media has been already analyzed.
/// </summary>
/// <param name="mode">Analysis mode.</param>
/// <returns>Value of the analyzed mode.</returns>
public bool GetAnalyzed(AnalysisMode mode)
{
return _isAnalyzed.TryGetValue(mode, out var value) && value;
}
}