public async Task <object> Get(GetSubtitle request) { if (string.Equals(request.Format, "js", StringComparison.OrdinalIgnoreCase)) { request.Format = "json"; } if (string.IsNullOrEmpty(request.Format)) { var item = (Video)_libraryManager.GetItemById(new Guid(request.Id)); var mediaSource = _mediaSourceManager.GetStaticMediaSources(item, false, null) .First(i => string.Equals(i.Id, request.MediaSourceId ?? request.Id)); var subtitleStream = mediaSource.MediaStreams .First(i => i.Type == MediaStreamType.Subtitle && i.Index == request.Index); return(await ResultFactory.GetStaticFileResult(Request, subtitleStream.Path).ConfigureAwait(false)); } using (var stream = await GetSubtitles(request).ConfigureAwait(false)) { using (var reader = new StreamReader(stream)) { var text = reader.ReadToEnd(); if (string.Equals(request.Format, "vtt", StringComparison.OrdinalIgnoreCase) && request.AddVttTimeMap) { text = text.Replace("WEBVTT", "WEBVTT\nX-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000"); } return(ResultFactory.GetResult(text, MimeTypes.GetMimeType("file." + request.Format))); } } }
private async Task <Stream> GetSubtitles(GetSubtitle request) { return(await _subtitleEncoder.GetSubtitles(request.Id, request.MediaSourceId, request.Index, request.Format, request.StartPositionTicks, request.EndPositionTicks, CancellationToken.None).ConfigureAwait(false)); }
private Task <Stream> GetSubtitles(GetSubtitle request) { return(_subtitleEncoder.GetSubtitles(request.Id, request.MediaSourceId, request.Index, request.Format, request.StartPositionTicks, request.EndPositionTicks, request.CopyTimestamps, CancellationToken.None)); }
private Task <Stream> GetSubtitles(GetSubtitle request) { var item = _libraryManager.GetItemById(request.Id); return(_subtitleEncoder.GetSubtitles(item, request.MediaSourceId, request.Index, request.Format, request.StartPositionTicks, request.EndPositionTicks ?? 0, request.CopyTimestamps, CancellationToken.None)); }
public object Get(GetSubtitle request) { if (string.IsNullOrEmpty(request.Format)) { var item = (Video)_libraryManager.GetItemById(new Guid(request.Id)); var mediaSource = item.GetMediaSources(false) .First(i => string.Equals(i.Id, request.MediaSourceId ?? request.Id)); var subtitleStream = mediaSource.MediaStreams .First(i => i.Type == MediaStreamType.Subtitle && i.Index == request.Index); return(ToStaticFileResult(subtitleStream.Path)); } var stream = GetSubtitles(request).Result; return(ResultFactory.GetResult(stream, Common.Net.MimeTypes.GetMimeType("file." + request.Format))); }
public object Get(GetSubtitle request) { if (string.Equals(request.Format, "js", StringComparison.OrdinalIgnoreCase)) { request.Format = "json"; } if (string.IsNullOrEmpty(request.Format)) { var item = (Video)_libraryManager.GetItemById(new Guid(request.Id)); var mediaSource = _mediaSourceManager.GetStaticMediaSources(item, false, null) .First(i => string.Equals(i.Id, request.MediaSourceId ?? request.Id)); var subtitleStream = mediaSource.MediaStreams .First(i => i.Type == MediaStreamType.Subtitle && i.Index == request.Index); return(ToStaticFileResult(subtitleStream.Path)); } var stream = GetSubtitles(request).Result; return(ResultFactory.GetResult(stream, MimeTypes.GetMimeType("file." + request.Format))); }