Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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")));
            }
        }
Exemplo n.º 3
0
        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));
 }