private Result <string> RetrieveJsonVideoInformation(MediaMetadataJob request) { var commandlineArguments = new List <string> { $"\"{request.DownloadLink}\"", "--skip-download", "--print-json", }; if (_vidloadConfiguration.NetworkConfiguration.UseProxy) { commandlineArguments.Add($"--proxy \"{_vidloadConfiguration.NetworkConfiguration.Proxy}\""); } return(_shellCommandExecutor .Execute("youtube-dl", commandlineArguments, TimeSpan.FromSeconds(5))); }
public Task <Result> Enqueue(MediaMetadataJob mediaMetadataJob) { try { var serialized = JsonConvert.SerializeObject(mediaMetadataJob); var encoded = Encoding.UTF8.GetBytes(serialized); _rabbitMqChannel.BasicPublish( string.Empty, _vidloadConfiguration.JobQueueConfiguration.MediaMetadataJobQueueName, null, encoded ); return(Task.FromResult(Result.Success())); } catch { return(Task.FromResult(Result.Failure("Could not enqueue Job"))); } }
public Task <Result <MediaMetadata> > HandleVideoInformationRequest(MediaMetadataJob request) { if (!Uri.TryCreate(request.DownloadLink, UriKind.Absolute, out _)) { return(Task.FromResult(Result.Failure <MediaMetadata>("The URL is not valid"))); } var videoInformation = RetrieveJsonVideoInformation(request) .Bind(DeserializeFromJson) .Bind(ToVideoInfo); if (videoInformation.IsSuccess) { videoInformation.Value.VideoSource = request.DownloadLink; } return(Task.FromResult(videoInformation)); }
private async Task HandleVideoInformationRequest(MediaMetadataJob metadataRequest) { await _videoLoader.HandleVideoInformationRequest(metadataRequest) .Bind(vi => _vidloadCache.SetMetadata(metadataRequest.DownloadLink, vi)); }