private async void HandleFileConversion(string filepath) { //Path.get string filename = Path.GetFileNameWithoutExtension(filepath); var job = new ConversionItem { Title = filename, }; ConversionJobs.Add(job); ConversionJobsListView.ScrollIntoView(job); // Convert job.Status = ConversionJobStatus.Converting; filename = MediaConverter.RemoveInvalidFilenameCharacters(filename); string dstFilepath = MediaConverter.EnsureUniqueFilepath($"{Settings.OutputFolder}\\{filename}.wav"); await MediaConverter.FFmpegConvertToWavAsync(filepath, dstFilepath, Settings.OutputFrequency, Settings.OutputVolumeMultiplier); // Finish job.Status = ConversionJobStatus.Done; }
private async void HandleYoutubeConversion(string videoUrl) { var job = new ConversionItem { Title = videoUrl }; ConversionJobs.Add(job); ConversionJobsListView.ScrollIntoView(job); #region New libvideo code. //// Resolve //job.Status = ConversionJobStatus.Resolving; //var queryResult = await YoutubeDownloader.QueryYoutubeVideo(link); //if(queryResult.IsError) //{ // job.Status = ConversionJobStatus.Error; // job.StatusDetails = queryResult.Error; //} //else //{ // var video = queryResult.Value; // // Download // job.Status = ConversionJobStatus.Downloading; // job.Title = $"{video.Title} ({video.Resolution.ToString()}p)"; // var downloadResult = await YoutubeDownloader.DownloadYoutubeVideo(video); // if(downloadResult.IsError) // { // job.Status = ConversionJobStatus.Error; // job.StatusDetails = downloadResult.Error; // } // else // { // var download = downloadResult.Value; // // Convert // job.Status = ConversionJobStatus.Converting; // string filename = MediaConverter.RemoveInvalidFilenameCharacters(download.Video.Title); // await MediaConverter.FFmpegConvertToWavAsync(download.Filepath, $"{Settings.OutputFolder}\\{filename}.wav", Settings.OutputBitrate, Settings.OutputVolume); // // Finish // job.Status = ConversionJobStatus.Done; // File.Delete(download.Filepath); // } //} #endregion // Resolve job.Status = ConversionJobStatus.Resolving; var queryResult = await YoutubeDownloader.GetYoutubeVideoInfo(videoUrl); if (queryResult.IsError) { job.Status = ConversionJobStatus.Error; job.StatusDetails = queryResult.Error; } else { // Download job.Status = ConversionJobStatus.Downloading; var video = queryResult.Value; var highestQualityVersion = video.Formats .Where(v => v.AudioCodec != AudioCodec.Unkown) .OrderByDescending(info => info.Resolution) .First(); job.Title = $"YouTube - {video.Title}"; var downloadResult = await YoutubeDownloader.DownloadYoutubeVideo(highestQualityVersion); if (downloadResult.IsError) { job.Status = ConversionJobStatus.Error; job.StatusDetails = downloadResult.Error; } else { // Convert job.Status = ConversionJobStatus.Converting; var download = downloadResult.Value; string filename = MediaConverter.RemoveInvalidFilenameCharacters(video.Title); string dstFilepath = MediaConverter.EnsureUniqueFilepath($"{Settings.OutputFolder}\\{filename}.wav"); await MediaConverter.FFmpegConvertToWavAsync(download.Filepath, dstFilepath, Settings.OutputFrequency, Settings.OutputVolumeMultiplier); // Finish job.Status = ConversionJobStatus.Done; File.Delete(download.Filepath); } } }