Add IRecordingsManager service

This commit is contained in:
Patrick Barron
2024-02-09 13:46:28 -05:00
parent 7baf2d6c6b
commit 0370167b8d
16 changed files with 992 additions and 911 deletions

View File

@@ -171,7 +171,7 @@ namespace MediaBrowser.Controller.Entities
[JsonIgnore]
public override bool HasLocalAlternateVersions => LocalAlternateVersions.Length > 0;
public static ILiveTvManager LiveTvManager { get; set; }
public static IRecordingsManager RecordingsManager { get; set; }
[JsonIgnore]
public override SourceType SourceType
@@ -334,7 +334,7 @@ namespace MediaBrowser.Controller.Entities
protected override bool IsActiveRecording()
{
return LiveTvManager.GetActiveRecordingInfo(Path) is not null;
return RecordingsManager.GetActiveRecordingInfo(Path) is not null;
}
public override bool CanDelete()

View File

@@ -245,10 +245,6 @@ namespace MediaBrowser.Controller.LiveTv
/// <param name="user">The user.</param>
void AddChannelInfo(IReadOnlyCollection<(BaseItemDto ItemDto, LiveTvChannel Channel)> items, DtoOptions options, User user);
string GetEmbyTvActiveRecordingPath(string id);
ActiveRecordingInfo GetActiveRecordingInfo(string path);
void AddInfoToRecordingDto(BaseItem item, BaseItemDto dto, ActiveRecordingInfo activeRecordingInfo, User user = null);
Task<BaseItem[]> GetRecordingFoldersAsync(User user);

View File

@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.LiveTv;
/// <summary>
/// Service responsible for managing LiveTV recordings.
/// </summary>
public interface IRecordingsManager
{
/// <summary>
/// Gets the path for the provided timer id.
/// </summary>
/// <param name="id">The timer id.</param>
/// <returns>The recording path, or <c>null</c> if none exists.</returns>
string? GetActiveRecordingPath(string id);
/// <summary>
/// Gets the information for an active recording.
/// </summary>
/// <param name="path">The recording path.</param>
/// <returns>The <see cref="ActiveRecordingInfo"/>, or <c>null</c> if none exists.</returns>
ActiveRecordingInfo? GetActiveRecordingInfo(string path);
/// <summary>
/// Gets the recording folders.
/// </summary>
/// <returns>The <see cref="VirtualFolderInfo"/> for each recording folder.</returns>
IEnumerable<VirtualFolderInfo> GetRecordingFolders();
/// <summary>
/// Ensures that the recording folders all exist, and removes unused folders.
/// </summary>
/// <returns>Task.</returns>
Task CreateRecordingFolders();
/// <summary>
/// Cancels the recording with the provided timer id, if one is active.
/// </summary>
/// <param name="timerId">The timer id.</param>
/// <param name="timer">The timer.</param>
void CancelRecording(string timerId, TimerInfo? timer);
/// <summary>
/// Records a stream.
/// </summary>
/// <param name="recordingInfo">The recording info.</param>
/// <param name="channel">The channel associated with the recording timer.</param>
/// <param name="recordingEndDate">The time to stop recording.</param>
/// <returns>Task representing the recording process.</returns>
Task RecordStream(ActiveRecordingInfo recordingInfo, BaseItem channel, DateTime recordingEndDate);
}