Beispiel #1
0
        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));
 }
Beispiel #3
0
 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));
 }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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)));
        }