/// <summary> /// Gets the input argument. /// </summary> /// <param name="state">The state.</param> /// <returns>System.String.</returns> protected virtual string GetInputArgument(StreamState state) { var protocol = state.InputProtocol; var inputPath = new[] { state.MediaPath }; if (state.IsInputVideo) { if (!(state.VideoType == VideoType.Iso && state.IsoMount == null)) { inputPath = MediaEncoderHelpers.GetInputArgument(state.MediaPath, state.InputProtocol, state.IsoMount, state.PlayableStreamFileNames); } } return MediaEncoder.GetInputArgument(inputPath, protocol); }
/// <summary> /// Finds an index folder based on an Id and userId /// </summary> /// <param name="id">The id.</param> /// <param name="userId">The user id.</param> /// <param name="userManager">The user manager.</param> /// <param name="libraryManager">The library manager.</param> /// <returns>BaseItem.</returns> private static BaseItem GetIndexFolder(string id, Guid userId, IUserManager userManager, ILibraryManager libraryManager) { var user = userManager.GetUserById(userId); var stringSeparators = new[] { IndexFolderDelimeter }; // Split using the delimeter var values = id.Split(stringSeparators, StringSplitOptions.None).ToList(); // Get the top folder normally using the first id var folder = GetItemByClientId(values[0], userManager, libraryManager, userId) as Folder; values.RemoveAt(0); // Get indexed folders using the remaining values in the id string return GetIndexFolder(values, folder, user); }
private string GetInputPathArgument(StreamState state) { var protocol = state.InputProtocol; var mediaPath = state.MediaPath ?? string.Empty; var inputPath = new[] { mediaPath }; if (state.IsInputVideo) { if (!(state.VideoType == VideoType.Iso && state.IsoMount == null)) { inputPath = MediaEncoderHelpers.GetInputArgument(FileSystem, mediaPath, state.InputProtocol, state.IsoMount, state.PlayableStreamFileNames); } } return MediaEncoder.GetInputArgument(inputPath, protocol); }
/// <summary> /// Gets the Recordings async /// </summary> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{IEnumerable{RecordingInfo}}</returns> public async Task<IEnumerable<RecordingInfo>> GetRecordingsAsync(CancellationToken cancellationToken) { _logger.Info("[NextPvr] Start GetRecordings Async, retrieve all 'Pending', 'Inprogress' and 'Completed' recordings "); await EnsureConnectionAsync(cancellationToken).ConfigureAwait(false); var baseUrl = Plugin.Instance.Configuration.WebServiceUrl; var options = new HttpRequestOptions { CancellationToken = cancellationToken, Url = string.Format("{0}/public/ManageService/Get/SortedFilteredList?sid={1}", baseUrl, Sid) }; var filterOptions = new { resultLimit = -1, datetimeSortSeq = 0, channelSortSeq = 0, titleSortSeq = 0, statusSortSeq = 0, datetimeDecending = false, channelDecending = false, titleDecending = false, statusDecending = false, All = false, None = false, Pending = false, InProgress = true, Completed = true, Failed = true, Conflict = false, Recurring = false, Deleted = false, FilterByName = false, NameFilter = (string)null, NameFilterCaseSensative = false }; var postContent = _jsonSerializer.SerializeToString(filterOptions); options.RequestContent = postContent; options.RequestContentType = "application/json"; var response = await _httpClient.Post(options).ConfigureAwait(false); using (var stream = response.Content) { return new RecordingResponse(baseUrl).GetRecordings(stream, _jsonSerializer, _logger); } }
/// <summary> /// Get the recurrent recordings /// </summary> /// <param name="cancellationToken">The CancellationToken</param> /// <returns></returns> public async Task<IEnumerable<SeriesTimerInfo>> GetSeriesTimersAsync(CancellationToken cancellationToken) { _logger.Info("[NextPvr] Start GetSeriesTimer Async, retrieve the recurring recordings"); await EnsureConnectionAsync(cancellationToken).ConfigureAwait(false); var baseUrl = Plugin.Instance.Configuration.WebServiceUrl; var options = new HttpRequestOptions { CancellationToken = cancellationToken, Url = string.Format("{0}/public/ManageService/Get/SortedFilteredList?sid={1}", baseUrl, Sid) }; var filterOptions = new { resultLimit = -1, All = false, None = false, Pending = false, InProgress = false, Completed = false, Failed = false, Conflict = false, Recurring = true, Deleted = false }; var postContent = _jsonSerializer.SerializeToString(filterOptions); options.RequestContent = postContent; options.RequestContentType = "application/json"; var response = await _httpClient.Post(options).ConfigureAwait(false); using (var stream = response.Content) { return new RecordingResponse(baseUrl).GetSeriesTimers(stream, _jsonSerializer, _logger); } }
/// <summary> /// Gets the input argument. /// </summary> /// <param name="state">The state.</param> /// <returns>System.String.</returns> protected string GetInputArgument(StreamState state) { var type = InputType.AudioFile; var inputPath = new[] { state.MediaPath }; if (state.IsInputVideo) { if (!(state.VideoType == VideoType.Iso && state.IsoMount == null)) { inputPath = MediaEncoderHelpers.GetInputArgument(state.MediaPath, state.IsRemote, state.VideoType, state.IsoType, state.IsoMount, state.PlayableStreamFileNames, out type); } } return MediaEncoder.GetInputArgument(inputPath, type); }
/// <summary> /// Gets the input argument. /// </summary> /// <param name="transcodingJobId">The transcoding job identifier.</param> /// <param name="state">The state.</param> /// <returns>System.String.</returns> protected string GetInputArgument(string transcodingJobId, StreamState state) { if (state.InputProtocol == MediaProtocol.File && state.RunTimeTicks.HasValue && state.VideoType == VideoType.VideoFile && !string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) { if (state.RunTimeTicks.Value >= TimeSpan.FromMinutes(5).Ticks && state.IsInputVideo) { if (SupportsThrottleWithStream) { var url = "http://localhost:" + ServerConfigurationManager.Configuration.HttpServerPortNumber.ToString(UsCulture) + "/mediabrowser/videos/" + state.Request.Id + "/stream?static=true&Throttle=true&mediaSourceId=" + state.Request.MediaSourceId; url += "&transcodingJobId=" + transcodingJobId; return string.Format("\"{0}\"", url); } } } var protocol = state.InputProtocol; var inputPath = new[] { state.MediaPath }; if (state.IsInputVideo) { if (!(state.VideoType == VideoType.Iso && state.IsoMount == null)) { inputPath = MediaEncoderHelpers.GetInputArgument(state.MediaPath, state.InputProtocol, state.IsoMount, state.PlayableStreamFileNames); } } return MediaEncoder.GetInputArgument(inputPath, protocol); }
/// <summary> /// Gets the input argument. /// </summary> /// <param name="item">The item.</param> /// <param name="isoMount">The iso mount.</param> /// <returns>System.String.</returns> protected string GetInputArgument(BaseItem item, IIsoMount isoMount) { var type = InputType.AudioFile; var inputPath = new[] { item.Path }; var video = item as Video; if (video != null) { if (!(video.VideoType == VideoType.Iso && isoMount == null)) { inputPath = MediaEncoderHelpers.GetInputArgument(video, isoMount, out type); } } return MediaEncoder.GetInputArgument(inputPath, type); }
private void AddPeople(BaseItem item, XmlElement element) { var types = new[] { PersonType.Director, PersonType.Writer, PersonType.Producer, PersonType.Composer, "Creator" }; foreach (var actor in item.People) { var type = types.FirstOrDefault(i => string.Equals(i, actor.Type, StringComparison.OrdinalIgnoreCase) || string.Equals(i, actor.Role, StringComparison.OrdinalIgnoreCase)) ?? PersonType.Actor; AddValue(element, "upnp", type.ToLower(), actor.Name, NS_UPNP); } }
private async Task<SubtitleResponse> GetSubtitlesInternal(string id, CancellationToken cancellationToken) { if (string.IsNullOrWhiteSpace(id)) { throw new ArgumentNullException("id"); } if (_dailyDownloadCount >= MaxDownloadsPerDay && !_config.Configuration.SubtitleOptions.IsOpenSubtitleVipAccount) { throw new InvalidOperationException("Open Subtitle's daily download limit has been exceeded. Please try again tomorrow."); } var idParts = id.Split(new[] { '-' }, 3); var format = idParts[0]; var language = idParts[1]; var ossId = idParts[2]; var downloadsList = new[] { int.Parse(ossId, _usCulture) }; await Login(cancellationToken).ConfigureAwait(false); var resultDownLoad = await OpenSubtitles.DownloadSubtitlesAsync(downloadsList, cancellationToken).ConfigureAwait(false); if (!(resultDownLoad is MethodResponseSubtitleDownload)) { throw new ApplicationException("Invalid response type"); } var results = ((MethodResponseSubtitleDownload)resultDownLoad).Results; if (results.Count == 0) { var msg = string.Format("Subtitle with Id {0} was not found. Name: {1}. Status: {2}. Message: {3}", ossId, resultDownLoad.Name ?? string.Empty, resultDownLoad.Message ?? string.Empty, resultDownLoad.Status ?? string.Empty); throw new ResourceNotFoundException(msg); } var data = Convert.FromBase64String(results.First().Data); return new SubtitleResponse { Format = format, Language = language, Stream = new MemoryStream(Utilities.Decompress(new MemoryStream(data))) }; }