diff options
Diffstat (limited to 'MediaBrowser.Api/Subtitles/SubtitleService.cs')
| -rw-r--r-- | MediaBrowser.Api/Subtitles/SubtitleService.cs | 55 |
1 files changed, 20 insertions, 35 deletions
diff --git a/MediaBrowser.Api/Subtitles/SubtitleService.cs b/MediaBrowser.Api/Subtitles/SubtitleService.cs index 4d4b4cb27..c8b0a32e9 100644 --- a/MediaBrowser.Api/Subtitles/SubtitleService.cs +++ b/MediaBrowser.Api/Subtitles/SubtitleService.cs @@ -29,7 +29,7 @@ namespace MediaBrowser.Api.Subtitles /// </summary> /// <value>The id.</value> [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public string Id { get; set; } + public Guid Id { get; set; } [ApiMember(Name = "Index", Description = "The subtitle stream index", IsRequired = true, DataType = "int", ParameterType = "path", Verb = "DELETE")] public int Index { get; set; } @@ -40,7 +40,7 @@ namespace MediaBrowser.Api.Subtitles public class SearchRemoteSubtitles : IReturn<RemoteSubtitleInfo[]> { [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public string Id { get; set; } + public Guid Id { get; set; } [ApiMember(Name = "Language", Description = "Language", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string Language { get; set; } @@ -48,20 +48,12 @@ namespace MediaBrowser.Api.Subtitles public bool? IsPerfectMatch { get; set; } } - [Route("/Items/{Id}/RemoteSearch/Subtitles/Providers", "GET")] - [Authenticated] - public class GetSubtitleProviders : IReturn<SubtitleProviderInfo[]> - { - [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public string Id { get; set; } - } - [Route("/Items/{Id}/RemoteSearch/Subtitles/{SubtitleId}", "POST")] [Authenticated] public class DownloadRemoteSubtitles : IReturnVoid { [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public string Id { get; set; } + public Guid Id { get; set; } [ApiMember(Name = "SubtitleId", Description = "SubtitleId", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] public string SubtitleId { get; set; } @@ -84,7 +76,7 @@ namespace MediaBrowser.Api.Subtitles /// </summary> /// <value>The id.</value> [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public string Id { get; set; } + public Guid Id { get; set; } [ApiMember(Name = "MediaSourceId", Description = "MediaSourceId", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string MediaSourceId { get; set; } @@ -123,7 +115,7 @@ namespace MediaBrowser.Api.Subtitles [ApiMember(Name = "Index", Description = "The subtitle stream index", IsRequired = true, DataType = "int", ParameterType = "path", Verb = "GET")] public int Index { get; set; } - [ApiMember(Name = "SegmentLength", Description = "The subtitle srgment length", IsRequired = true, DataType = "int", ParameterType = "path", Verb = "GET")] + [ApiMember(Name = "SegmentLength", Description = "The subtitle srgment length", IsRequired = true, DataType = "int", ParameterType = "query", Verb = "GET")] public int SegmentLength { get; set; } } @@ -195,7 +187,7 @@ namespace MediaBrowser.Api.Subtitles builder.AppendLine("#EXT-X-ENDLIST"); - return ResultFactory.GetResult(builder.ToString(), MimeTypes.GetMimeType("playlist.m3u8"), new Dictionary<string, string>()); + return ResultFactory.GetResult(Request, builder.ToString(), MimeTypes.GetMimeType("playlist.m3u8"), new Dictionary<string, string>()); } public async Task<object> Get(GetSubtitle request) @@ -206,10 +198,11 @@ namespace MediaBrowser.Api.Subtitles } if (string.IsNullOrEmpty(request.Format)) { - var item = (Video)_libraryManager.GetItemById(new Guid(request.Id)); + var item = (Video)_libraryManager.GetItemById(request.Id); + var idString = request.Id.ToString("N"); var mediaSource = _mediaSourceManager.GetStaticMediaSources(item, false, null) - .First(i => string.Equals(i.Id, request.MediaSourceId ?? request.Id)); + .First(i => string.Equals(i.Id, request.MediaSourceId ?? idString)); var subtitleStream = mediaSource.MediaStreams .First(i => i.Type == MediaStreamType.Subtitle && i.Index == request.Index); @@ -227,22 +220,24 @@ namespace MediaBrowser.Api.Subtitles text = text.Replace("WEBVTT", "WEBVTT\nX-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000"); - return ResultFactory.GetResult(text, MimeTypes.GetMimeType("file." + request.Format)); + return ResultFactory.GetResult(Request, text, MimeTypes.GetMimeType("file." + request.Format)); } } } - return ResultFactory.GetResult(await GetSubtitles(request).ConfigureAwait(false), MimeTypes.GetMimeType("file." + request.Format)); + return ResultFactory.GetResult(Request, await GetSubtitles(request).ConfigureAwait(false), MimeTypes.GetMimeType("file." + request.Format)); } private Task<Stream> GetSubtitles(GetSubtitle request) { - return _subtitleEncoder.GetSubtitles(request.Id, + var item = _libraryManager.GetItemById(request.Id); + + return _subtitleEncoder.GetSubtitles(item, request.MediaSourceId, request.Index, request.Format, request.StartPositionTicks, - request.EndPositionTicks, + request.EndPositionTicks ?? 0, request.CopyTimestamps, CancellationToken.None); } @@ -251,30 +246,20 @@ namespace MediaBrowser.Api.Subtitles { var video = (Video)_libraryManager.GetItemById(request.Id); - var response = await _subtitleManager.SearchSubtitles(video, request.Language, request.IsPerfectMatch, CancellationToken.None).ConfigureAwait(false); - - return ToOptimizedResult(response); - } - - public void Delete(DeleteSubtitle request) - { - var task = _subtitleManager.DeleteSubtitles(request.Id, request.Index); - - Task.WaitAll(task); + return await _subtitleManager.SearchSubtitles(video, request.Language, request.IsPerfectMatch, CancellationToken.None).ConfigureAwait(false); } - public object Get(GetSubtitleProviders request) + public Task Delete(DeleteSubtitle request) { - var result = _subtitleManager.GetProviders(request.Id); - - return ToOptimizedResult(result); + var item = _libraryManager.GetItemById(request.Id); + return _subtitleManager.DeleteSubtitles(item, request.Index); } public async Task<object> Get(GetRemoteSubtitles request) { var result = await _subtitleManager.GetRemoteSubtitles(request.Id, CancellationToken.None).ConfigureAwait(false); - return ResultFactory.GetResult(result.Stream, MimeTypes.GetMimeType("file." + result.Format)); + return ResultFactory.GetResult(Request, result.Stream, MimeTypes.GetMimeType("file." + result.Format)); } public void Post(DownloadRemoteSubtitles request) |
