diff options
| author | Claus Vium <cvium@users.noreply.github.com> | 2020-11-08 11:32:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-08 11:32:53 +0100 |
| commit | 96dcd9c87e2eb4b14004368856949e9fde2db261 (patch) | |
| tree | 507b46f6a5777dd218dea1f7a63f1a55b1f38b9f /Jellyfin.Api | |
| parent | 61f8e5f3c1df4f97bfcf219c622347bb2d74a17c (diff) | |
| parent | 38185f832688a3329045ee1bb26a38445c7777b2 (diff) | |
Merge pull request #3086 from redSpoutnik/api-upload-subtitle
Add Post subtitle in API
Diffstat (limited to 'Jellyfin.Api')
| -rw-r--r-- | Jellyfin.Api/Controllers/SubtitleController.cs | 28 | ||||
| -rw-r--r-- | Jellyfin.Api/Models/SubtitleDtos/UploadSubtitleDto.cs | 34 |
2 files changed, 62 insertions, 0 deletions
diff --git a/Jellyfin.Api/Controllers/SubtitleController.cs b/Jellyfin.Api/Controllers/SubtitleController.cs index cc682ed542..b423f1ee88 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; @@ -320,6 +321,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> diff --git a/Jellyfin.Api/Models/SubtitleDtos/UploadSubtitleDto.cs b/Jellyfin.Api/Models/SubtitleDtos/UploadSubtitleDto.cs new file mode 100644 index 0000000000..30473255e8 --- /dev/null +++ b/Jellyfin.Api/Models/SubtitleDtos/UploadSubtitleDto.cs @@ -0,0 +1,34 @@ +using System.ComponentModel.DataAnnotations; + +namespace Jellyfin.Api.Models.SubtitleDtos +{ + /// <summary> + /// Upload subtitles dto. + /// </summary> + public class UploadSubtitleDto + { + /// <summary> + /// Gets or sets the subtitle language. + /// </summary> + [Required] + public string Language { get; set; } = string.Empty; + + /// <summary> + /// Gets or sets the subtitle format. + /// </summary> + [Required] + public string Format { get; set; } = string.Empty; + + /// <summary> + /// Gets or sets a value indicating whether the subtitle is forced. + /// </summary> + [Required] + public bool IsForced { get; set; } + + /// <summary> + /// Gets or sets the subtitle data. + /// </summary> + [Required] + public string Data { get; set; } = string.Empty; + } +}
\ No newline at end of file |
