diff options
| author | crobibero <cody@robibe.ro> | 2020-09-11 16:08:49 -0600 |
|---|---|---|
| committer | crobibero <cody@robibe.ro> | 2020-09-11 16:08:49 -0600 |
| commit | e3fb7f426c969c0316b53fe3348367c949f71c66 (patch) | |
| tree | 95f34c77a6fe741f5115ebe55ae1e401e128b196 /Jellyfin.Api/Controllers/SubtitleController.cs | |
| parent | f13b87afa3e81e7fa2710caec58a7d6cb20f7635 (diff) | |
Migrate subtitle upload to Jellyfin.Api
Diffstat (limited to 'Jellyfin.Api/Controllers/SubtitleController.cs')
| -rw-r--r-- | Jellyfin.Api/Controllers/SubtitleController.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Jellyfin.Api/Controllers/SubtitleController.cs b/Jellyfin.Api/Controllers/SubtitleController.cs index 78c9d4398..944da237b 100644 --- a/Jellyfin.Api/Controllers/SubtitleController.cs +++ b/Jellyfin.Api/Controllers/SubtitleController.cs @@ -11,6 +11,7 @@ using System.Threading; using System.Threading.Tasks; using Jellyfin.Api.Attributes; using Jellyfin.Api.Constants; +using Jellyfin.Api.Models.SubtitleDtos; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; @@ -318,6 +319,33 @@ namespace Jellyfin.Api.Controllers } /// <summary> + /// Upload an external subtitle file. + /// </summary> + /// <param name="itemId">The item the subtitle belongs to.</param> + /// <param name="body">The request body.</param> + /// <response code="204">Subtitle uploaded.</response> + /// <returns>A <see cref="NoContentResult"/>.</returns> + [HttpPost("Videos/{itemId}/Subtitles")] + public async Task<ActionResult> UploadSubtitle( + [FromRoute, Required] Guid itemId, + [FromBody, Required] UploadSubtitleDto body) + { + var video = (Video)_libraryManager.GetItemById(itemId); + var data = Convert.FromBase64String(body.Data); + await using var memoryStream = new MemoryStream(data); + await _subtitleManager.UploadSubtitle( + video, + new SubtitleResponse + { + Format = body.Format, + Language = body.Language, + IsForced = body.IsForced, + Stream = memoryStream + }).ConfigureAwait(false); + return NoContent(); + } + + /// <summary> /// Encodes a subtitle in the specified format. /// </summary> /// <param name="id">The media id.</param> |
