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
@@ -6,6 +6,7 @@ using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Plugin.SRFPlay.Api.Models;
using Jellyfin.Plugin.SRFPlay.Services.Interfaces;
using MediaBrowser.Common.Api;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@@ -238,4 +239,16 @@ public class RecordingController : ControllerBase
{
return _recordingService.DeleteRecording(id, deleteFile) ? Ok() : NotFound();
}
/// <summary>
/// Shows where recordings will be written and whether the server can write there.
/// </summary>
/// <returns>The resolved output directory and write-test result.</returns>
[HttpGet("OutputInfo")]
[Authorize(Policy = Policies.RequiresElevation)]
[ProducesResponseType(StatusCodes.Status200OK)]
public ActionResult<RecordingOutputInfo> GetOutputInfo()
{
return Ok(_recordingService.GetOutputInfo());
}
}