Record into a Jellyfin library by default; configurable recording location
🏗️ Build Plugin / build (push) Successful in 12m31s
Nightly Build / nightly-build (push) Successful in 2m44s
🧪 Test Plugin / test (push) Successful in 11m14s
🚀 Release Plugin / build-and-release (push) Successful in 12m33s

When no custom directory is set, recordings go to an "SRF Recordings" folder
in the chosen library, or the first TV Shows library, so they show up without
adding a library by hand. The settings page gets a library picker, a check
that the directory is writable, and help for sandboxed systemd services.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-26 19:35:55 -04:00
co-authored by Claude Opus 5.5
parent 9467cb28c7
commit aa47de9912
6 changed files with 229 additions and 12 deletions
@@ -0,0 +1,39 @@
using System.Text.Json.Serialization;
namespace Jellyfin.Plugin.SRFPlay.Api.Models;
/// <summary>
/// Where recordings will be written and whether the server can write there.
/// </summary>
public class RecordingOutputInfo
{
/// <summary>
/// Gets or sets the resolved output directory.
/// </summary>
[JsonPropertyName("path")]
public string Path { get; set; } = string.Empty;
/// <summary>
/// Gets or sets how the directory was chosen: "custom", "library", "tvLibrary" or "fallback".
/// </summary>
[JsonPropertyName("source")]
public string Source { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the name of the library the directory belongs to, if any.
/// </summary>
[JsonPropertyName("libraryName")]
public string? LibraryName { get; set; }
/// <summary>
/// Gets or sets a value indicating whether the directory could be created and written to.
/// </summary>
[JsonPropertyName("writable")]
public bool Writable { get; set; }
/// <summary>
/// Gets or sets the error from the write test, if it failed.
/// </summary>
[JsonPropertyName("error")]
public string? Error { get; set; }
}