Răsfoiți Sursa

Add ability to upload (and save) SDH subtitles (#10036)

MBR-0001 1 an în urmă
părinte
comite
9564248b10

+ 3 - 2
Jellyfin.Api/Controllers/SubtitleController.cs

@@ -90,7 +90,7 @@ public class SubtitleController : BaseJellyfinApiController
     [Authorize(Policy = Policies.RequiresElevation)]
     [ProducesResponseType(StatusCodes.Status204NoContent)]
     [ProducesResponseType(StatusCodes.Status404NotFound)]
-    public ActionResult<Task> DeleteSubtitle(
+    public async Task<ActionResult> DeleteSubtitle(
         [FromRoute, Required] Guid itemId,
         [FromRoute, Required] int index)
     {
@@ -101,7 +101,7 @@ public class SubtitleController : BaseJellyfinApiController
             return NotFound();
         }
 
-        _subtitleManager.DeleteSubtitles(item, index);
+        await _subtitleManager.DeleteSubtitles(item, index).ConfigureAwait(false);
         return NoContent();
     }
 
@@ -416,6 +416,7 @@ public class SubtitleController : BaseJellyfinApiController
                     Format = body.Format,
                     Language = body.Language,
                     IsForced = body.IsForced,
+                    IsHearingImpaired = body.IsHearingImpaired,
                     Stream = memoryStream
                 }).ConfigureAwait(false);
             _providerManager.QueueRefresh(video.Id, new MetadataRefreshOptions(new DirectoryService(_fileSystem)), RefreshPriority.High);

+ 6 - 0
Jellyfin.Api/Models/SubtitleDtos/UploadSubtitleDto.cs

@@ -25,6 +25,12 @@ public class UploadSubtitleDto
     [Required]
     public bool IsForced { get; set; }
 
+    /// <summary>
+    /// Gets or sets a value indicating whether the subtitle is for hearing impaired.
+    /// </summary>
+    [Required]
+    public bool IsHearingImpaired { get; set; }
+
     /// <summary>
     /// Gets or sets the subtitle data.
     /// </summary>

+ 2 - 0
MediaBrowser.Controller/Subtitles/SubtitleResponse.cs

@@ -14,6 +14,8 @@ namespace MediaBrowser.Controller.Subtitles
 
         public bool IsForced { get; set; }
 
+        public bool IsHearingImpaired { get; set; }
+
         public Stream Stream { get; set; }
     }
 }

+ 5 - 0
MediaBrowser.Providers/Subtitles/SubtitleManager.cs

@@ -200,6 +200,11 @@ namespace MediaBrowser.Providers.Subtitles
                     saveFileName += ".forced";
                 }
 
+                if (response.IsHearingImpaired)
+                {
+                    saveFileName += ".sdh";
+                }
+
                 saveFileName += "." + response.Format.ToLowerInvariant();
 
                 if (saveInMediaFolder)