using System; // 'youtube-dl' you can find here: (https://github.com/rg3/youtube-dl/releases/latest) // For some additional options may need 'ffmpeg' and you can find it here: (https://ffmpeg.zeranoe.com/builds/) // Copy ffmpeg from the bin directory to a dir where 'youtube-dl.exe' stored public static class ClipboardFusionHelper { public static string ProcessText(string url) { // Check that url is a link to youtube if(url.Contains("youtube.com") || url.Contains("youtu.be")) { // Set your path to youtube-dl. For example (@"C:\YouTube-Download\youtube-dl.exe") var binPath = @"HERE'S_YOUR_PATH_TO_YOUTUBE-DL.EXE"; // Set your dir where the downloaded files will be saved. For example (@"C:\My YT Saved Video") var pathToFiles = @"HERE'S_YOUR_PATH_TO_THE_SAVED_FILES"; // Set format to save files see (https://github.com/rg3/youtube-dl/blob/master/README.md) for more help var fullPath = System.IO.Path.Combine(pathToFiles, "%(title)s.%(ext)s"); // Simple download 720p mp4 video does not require ffmpeg var arg = string.Format(@"-o ""{0}"" --no-playlist -q -f best {1}", fullPath, url); // If you want to use other parameters, a different quality video or audio, like a next line, // look (https://github.com/rg3/youtube-dl/blob/master/README.md) to see what option you need. // And make sure what you have 'ffmpeg' in 'youtube-dl' directory. // var arg = // string.Format(@"-o ""{0}"" --no-playlist --no-mtime -w -q -f bestvideo+bestaudio {1}", // fullPath, url); // Run youtube-dl var appId = BFS.Application.Start(binPath, arg); // Get youtube-dl window handle var hWnd = BFS.Application.GetMainWindowByAppID(appId); // Because youtube-dl is a console app, hide it's window BFS.Window.SetWindowStyle(BFS.WindowEnum.WindowStyle.WS_DISABLED, hWnd); // Wait for the application to complete if(BFS.Application.WaitForExitByAppID(appId)) { // Show message BFS.Dialog.ShowMessageInfo("Work completed"); // And\or you can show dir with downloaded files // BFS.Application.Start(pathToFiles); } } // If url not youtube link show message else BFS.Dialog.ShowMessageInfo("It's not youtube link"); return null; } }