• Если вы испытываете проблемы с пополнением баланса, свяжитесь с @WOLF SPIRIT.

Инструкция Скачать видео с ютуба

Northdead

SWAG SEASON
38 (89%)
16 Фев 2024
2,110
8
160
243
Наверное некоторые сталкивались с такой штукой что надо видосы с ютуба скачать а сайты по типу ssyoutube не работают или качают 360п парашу, так вот..
Первая версия программы которая скачивает видео с ютуба в нормальном качестве. Так же вы можете скачать только звук или только видео

Чтобы использовать программу более удобно создайте папку на рабочем столе и туда закиньте прогу, видео качаются в ту же папку где и прога. (Если вы закинете ее на рабочий стол то и видео будет там и нужная штука для работы самой проги)

Если нужно могу залить ее сурсы, работает в России.

Не бейте палками, это первое творение, делал для себя
 

Вложения

  • ZovTubeDownloader.exe
    33.5 MB · Просмотры: 4
Не устраивает то что ты поставил мне без причины клоуна и зачем-то написал тут это.
Потому что как есть уже проекты которые обновляются и работают отлично, в частности я про yt-dl.
Это просто красивые GUI к ним, которые перед запуском чекают обновы ffmpeg и yt-dl.

А то что ты скинул я ваще впервые вижу, та и зачем оно мне если своя прога есть
Всегда относился скептически к коcтылям от ноунеймов, когда есть нормальное рабочее решение ;)
Да еще и без сорцов к этому ПО.
 
Потому что как есть уже проекты которые обновляются и работают отлично, в частности я про yt-dl.
Как же похуй.
Это просто красивые GUI к ним, которые перед запуском чекают обновы ffmpeg и yt-dl.
Очень нужен GUI для того чтобы скачать видос, а так моя прога работает по похожему принципу
Всегда относился скептически к коcтылям от ноунеймов, когда есть нормальное рабочее решение ;)
Выше отвел
Да еще и без сорцов к этому ПО.
Чего-чего?)
 
Всегда относился скептически к коcтылям от ноунеймов, когда есть нормальное рабочее решение ;)
Если ты зашел только высрать в эту тему, то пожалуйста, более не заходи в мои темы <3
 
Раз похуй, че такая агрессивная реакция на клоуна? :) Тебе ж похуй :)
Похуй именно на то "Потому что как есть уже проекты которые обновляются и работают отлично, в частности я про yt-dl."
Ну я что-то в теме не вижу ссылку на гит с сорцами, или архив)
Сорцами?)
 
Ты разработчик или что? :)

Сорцы, source, source code, исходники, буковки и циферки на языке программирования.
Ничего что это читается как сурсы а не сорцы?
Особо умный, пришел тут насрал и сидит важный
 
Ничего что это читается как сурсы а не сорцы?
На "сленге", всегда было сорцами :)

Особо умный, пришел тут насрал и сидит важный
Насрал это ты.
Ладно бы твой софт был бы чем то лучше того что уже есть на просторах.
Более понятливый, дружелюбный интерфейс?
Возможность выбора только видео / только аудио?
Возможность выбора какой вариант видео скачать? 720 или 1080?

Я понимаю и поддерживаю когда люди улучшают что-то или пишут своё но лучше. Что условно можно даже и своей бабушке поставить.

Что лучше GUI в которых объяснил тыкай сюда, сюда и сюда и у тебя будет видео вот тут.

Или в твоём случае
Запусти софт с такими то параметрами, потом введи текстом ссылку, вводи все текстом, а потом у тебя это все еще и развалиться с ошибкой потому что аргумент не тот)


К тому же, ты же не vi писал это прогу, а в классном редакторе с подсветкой синтаксиса.
Очень нужен GUI для того чтобы скачать видос, а так моя прога работает по похожему принципу
К тому же, ты же не vi писал это прогу, а в классном редакторе с подсветкой синтаксиса ;)
 
Ладно бы твой софт был бы чем то лучше того что уже есть на просторах.
Какая мне разница до этого
Более понятливый, дружелюбный интерфейс?
Там его вообще нет, обычная консолька
Возможность выбора только видео / только аудио?
Есть
Или в твоём случае
Запусти софт с такими то параметрами, потом введи текстом ссылку, вводи все текстом, а потом у тебя это все еще и развалиться с ошибкой потому что аргумент не тот)
Наркоман? Какими параметрами, обычно открыл закинул ссылку и скачалось видео
К тому же, ты же не vi писал это прогу, а в классном редакторе с подсветкой синтаксиса ;)
Писал его я, помогал чат гпт
 
Ну так исходные коды сего творения будут? :)
C#:
using System;
using System.Diagnostics;
using System.IO;
using System.Net;

class Program
{
    static string ytDlpUrl = "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe";
    static string ffmpegUrl = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip";
    static string ytDlpPath = "yt-dlp.exe";
    static string ffmpegFolder = "ffmpeg";
    static string ffmpegExe = "ffmpeg/ffmpeg.exe";

    static void Main()
    {
        Console.WriteLine("Проверка необходимых файлов...");

        if (!File.Exists(ytDlpPath))
        {
            Console.WriteLine("Устанавливаем нужный файл (1/2).");
            Console.WriteLine("Устанавливаем нужный файл (1/2)..");
            Console.WriteLine("Устанавливаем нужный файл (1/2)...");
            Console.WriteLine("Готово!");
            DownloadFile(ytDlpUrl, ytDlpPath);
        }

        if (!File.Exists(ffmpegExe))
        {
            Console.WriteLine("Устанавливаем нужный файл (2/2).");
            Console.WriteLine("Устанавливаем нужный файл (2/2)..");
            Console.WriteLine("Устанавливаем нужный файл (2/2)...");
            Console.WriteLine("Готово!");
            DownloadAndExtractFfmpeg();
        }

        Console.WriteLine("Готово! Все нужные файлы находятся в одной папке с данной программой.");
        Console.Write("Введите URL видео с YouTube: ");
        string videoUrl = Console.ReadLine();

        Console.WriteLine("Выберите, что скачать:");
        Console.WriteLine("1 - Видео со звуком");
        Console.WriteLine("2 - Только видео (без звука)");
        Console.WriteLine("3 - Только звук");
        Console.Write("Ваш выбор: ");
        string choice = Console.ReadLine();

        string arguments = choice switch
        {
            "1" => $"-f \"mp4\" {videoUrl}",
            "2" => $"-f bestvideo --merge-output-format mp4 {videoUrl}",
            "3" => $"-f bestaudio --extract-audio --audio-format mp3 {videoUrl}",
            _ => throw new ArgumentException("Некорректный выбор!")
        };

        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = ytDlpPath,
            Arguments = arguments,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };

        Process process = new Process { StartInfo = psi };
        process.OutputDataReceived += (sender, e) => Console.WriteLine(e.Data);
        process.ErrorDataReceived += (sender, e) => Console.WriteLine(e.Data);

        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();

        Console.WriteLine("Загрузка завершена, файл находится в папке с программой.");
    }

    static void DownloadFile(string url, string outputPath)
    {
        using (WebClient client = new WebClient())
        {
            client.DownloadFile(url, outputPath);
        }
    }

    static void DownloadAndExtractFfmpeg()
    {
        string zipPath = "ffmpeg.zip";
        DownloadFile(ffmpegUrl, zipPath);

        System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, ffmpegFolder);
        File.Delete(zipPath);

        string[] files = Directory.GetFiles(ffmpegFolder, "ffmpeg.exe", SearchOption.AllDirectories);
        if (files.Length > 0)
        {
            File.Move(files[0], ffmpegExe);
        }
    }
}
 
о_О Это как ты так смог 100 строк кода в консольном приложении раздуть до 33.5 мегабайт.
Не я понимаю, 2025 год, мегабайт ничего не стоит.
Но бля, 33 метра из 100 строк кода в консольном приложении...

А это я отставший от жизни и не пишу на NET Core, которое после "публикации" рожает из 100 строк консольного приложения бинарник на 30 метров...
Пишу мелкие приложухи на NET Fraemwork)

Я уж ненароком подумал что ты все внутри держишь и скачиватель и остальное, а ларчик оказался просто открывался)

И опять же минус, ты качаешь yt-dl один раз, а он имеет свойство ломаться ;)
И его нужно обновлять время от времени.

Код под NET Fraemwork 4.8
Nuget пакеты Costura.Fody, System.IO.Compression.ZipFile, Fody (зависимость Costura).
На выходе получаем
1739892007790.png

:) Те же 100 строк кода, ну почти...
Код:
using System;
using System.Diagnostics;
using System.IO;
using System.Net;

class Program
{
    static string ytDlpUrl = "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe";
    static string ffmpegUrl = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip";
    static string ytDlpPath = "yt-dlp.exe";
    static string ffmpegFolder = "ffmpeg";
    static string ffmpegExe = "ffmpeg/ffmpeg.exe";

    static void Main()
    {
        Console.WriteLine("Проверка необходимых файлов...");

        if (!File.Exists(ytDlpPath))
        {
            Console.WriteLine("Устанавливаем нужный файл (1/2).");
            DownloadFile(ytDlpUrl, ytDlpPath);
            Console.WriteLine("Готово!");
        }

        if (!File.Exists(ffmpegExe))
        {
            Console.WriteLine("Устанавливаем нужный файл (2/2)");
            DownloadAndExtractFfmpeg();
            Console.WriteLine("Готово!");
        }

        Console.WriteLine("Готово! Все нужные файлы находятся в одной папке с данной программой.");
        Console.Write("Введите URL видео с YouTube: ");
        string videoUrl = Console.ReadLine();

        Console.WriteLine("Выберите, что скачать:");
        Console.WriteLine("1 - Видео со звуком");
        Console.WriteLine("2 - Только видео (без звука)");
        Console.WriteLine("3 - Только звук");
        Console.Write("Ваш выбор: ");
        string choice = Console.ReadLine();

        string arguments = string.Empty;
        switch (choice)
        {
            case "1": arguments = $"-f \"mp4\" {videoUrl}"; break;
            case "2": arguments = $"-f bestvideo --merge-output-format mp4 {videoUrl}"; break;
            case "3": arguments = $"-f bestaudio --extract-audio --audio-format mp3 {videoUrl}"; break;
        }

        if (string.IsNullOrEmpty(arguments))
        {
            throw new ArgumentException("Некорректный выбор!");
        }

        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = ytDlpPath,
            Arguments = arguments,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };

        Process process = new Process { StartInfo = psi };
        process.OutputDataReceived += (sender, e) => Console.WriteLine(e.Data);
        process.ErrorDataReceived += (sender, e) => Console.WriteLine(e.Data);

        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();

        Console.WriteLine("Загрузка завершена, файл находится в папке с программой.");
    }

    static void DownloadFile(string url, string outputPath)
    {
        using (WebClient client = new WebClient())
        {
            client.DownloadFile(url, outputPath);
        }
    }

    static void DownloadAndExtractFfmpeg()
    {
        string zipPath = "ffmpeg.zip";
        DownloadFile(ffmpegUrl, zipPath);

        System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, ffmpegFolder);
        File.Delete(zipPath);

        string[] files = Directory.GetFiles(ffmpegFolder, "ffmpeg.exe", SearchOption.AllDirectories);
        if (files.Length > 0)
        {
            File.Move(files[0], ffmpegExe);
        }
    }
}
 
о_О Это как ты так смог 100 строк кода в консольном приложении раздуть до 33.5 мегабайт.
Не я понимаю, 2025 год, мегабайт ничего не стоит.
Но бля, 33 метра из 100 строк кода в консольном приложении...

А это я отставший от жизни и не пишу на NET Core, которое после "публикации" рожает из 100 строк консольного приложения бинарник на 30 метров...
Пишу мелкие приложухи на NET Fraemwork)

Я уж ненароком подумал что ты все внутри держишь и скачиватель и остальное, а ларчик оказался просто открывался)

И опять же минус, ты качаешь yt-dl один раз, а он имеет свойство ломаться ;)
И его нужно обновлять время от времени.

Код под NET Fraemwork 4.8
Nuget пакеты Costura.Fody, System.IO.Compression.ZipFile, Fody (зависимость Costura).
На выходе получаем
1739892007790.png

:) Те же 100 строк кода, ну почти...
Код:
using System;
using System.Diagnostics;
using System.IO;
using System.Net;

class Program
{
    static string ytDlpUrl = "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe";
    static string ffmpegUrl = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip";
    static string ytDlpPath = "yt-dlp.exe";
    static string ffmpegFolder = "ffmpeg";
    static string ffmpegExe = "ffmpeg/ffmpeg.exe";

    static void Main()
    {
        Console.WriteLine("Проверка необходимых файлов...");

        if (!File.Exists(ytDlpPath))
        {
            Console.WriteLine("Устанавливаем нужный файл (1/2).");
            DownloadFile(ytDlpUrl, ytDlpPath);
            Console.WriteLine("Готово!");
        }

        if (!File.Exists(ffmpegExe))
        {
            Console.WriteLine("Устанавливаем нужный файл (2/2)");
            DownloadAndExtractFfmpeg();
            Console.WriteLine("Готово!");
        }

        Console.WriteLine("Готово! Все нужные файлы находятся в одной папке с данной программой.");
        Console.Write("Введите URL видео с YouTube: ");
        string videoUrl = Console.ReadLine();

        Console.WriteLine("Выберите, что скачать:");
        Console.WriteLine("1 - Видео со звуком");
        Console.WriteLine("2 - Только видео (без звука)");
        Console.WriteLine("3 - Только звук");
        Console.Write("Ваш выбор: ");
        string choice = Console.ReadLine();

        string arguments = string.Empty;
        switch (choice)
        {
            case "1": arguments = $"-f \"mp4\" {videoUrl}"; break;
            case "2": arguments = $"-f bestvideo --merge-output-format mp4 {videoUrl}"; break;
            case "3": arguments = $"-f bestaudio --extract-audio --audio-format mp3 {videoUrl}"; break;
        }

        if (string.IsNullOrEmpty(arguments))
        {
            throw new ArgumentException("Некорректный выбор!");
        }

        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = ytDlpPath,
            Arguments = arguments,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };

        Process process = new Process { StartInfo = psi };
        process.OutputDataReceived += (sender, e) => Console.WriteLine(e.Data);
        process.ErrorDataReceived += (sender, e) => Console.WriteLine(e.Data);

        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();

        Console.WriteLine("Загрузка завершена, файл находится в папке с программой.");
    }

    static void DownloadFile(string url, string outputPath)
    {
        using (WebClient client = new WebClient())
        {
            client.DownloadFile(url, outputPath);
        }
    }

    static void DownloadAndExtractFfmpeg()
    {
        string zipPath = "ffmpeg.zip";
        DownloadFile(ffmpegUrl, zipPath);

        System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, ffmpegFolder);
        File.Delete(zipPath);

        string[] files = Directory.GetFiles(ffmpegFolder, "ffmpeg.exe", SearchOption.AllDirectories);
        if (files.Length > 0)
        {
            File.Move(files[0], ffmpegExe);
        }
    }
}
о_О Это как ты так смог 100 строк кода в консольном приложении раздуть до 33.5 мегабайт.
Не я понимаю, 2025 год, мегабайт ничего не стоит.
Но бля, 33 метра из 100 строк кода в консольном приложении...

А это я отставший от жизни и не пишу на NET Core, которое после "публикации" рожает из 100 строк консольного приложения бинарник на 30 метров...
Пишу мелкие приложухи на NET Fraemwork)

Я уж ненароком подумал что ты все внутри держишь и скачиватель и остальное, а ларчик оказался просто открывался)

И опять же минус, ты качаешь yt-dl один раз, а он имеет свойство ломаться ;)
И его нужно обновлять время от времени.

Код под NET Fraemwork 4.8
Nuget пакеты Costura.Fody, System.IO.Compression.ZipFile, Fody (зависимость Costura).
На выходе получаем
1739892007790.png

:) Те же 100 строк кода, ну почти...
Код:
using System;
using System.Diagnostics;
using System.IO;
using System.Net;

class Program
{
    static string ytDlpUrl = "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe";
    static string ffmpegUrl = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip";
    static string ytDlpPath = "yt-dlp.exe";
    static string ffmpegFolder = "ffmpeg";
    static string ffmpegExe = "ffmpeg/ffmpeg.exe";

    static void Main()
    {
        Console.WriteLine("Проверка необходимых файлов...");

        if (!File.Exists(ytDlpPath))
        {
            Console.WriteLine("Устанавливаем нужный файл (1/2).");
            DownloadFile(ytDlpUrl, ytDlpPath);
            Console.WriteLine("Готово!");
        }

        if (!File.Exists(ffmpegExe))
        {
            Console.WriteLine("Устанавливаем нужный файл (2/2)");
            DownloadAndExtractFfmpeg();
            Console.WriteLine("Готово!");
        }

        Console.WriteLine("Готово! Все нужные файлы находятся в одной папке с данной программой.");
        Console.Write("Введите URL видео с YouTube: ");
        string videoUrl = Console.ReadLine();

        Console.WriteLine("Выберите, что скачать:");
        Console.WriteLine("1 - Видео со звуком");
        Console.WriteLine("2 - Только видео (без звука)");
        Console.WriteLine("3 - Только звук");
        Console.Write("Ваш выбор: ");
        string choice = Console.ReadLine();

        string arguments = string.Empty;
        switch (choice)
        {
            case "1": arguments = $"-f \"mp4\" {videoUrl}"; break;
            case "2": arguments = $"-f bestvideo --merge-output-format mp4 {videoUrl}"; break;
            case "3": arguments = $"-f bestaudio --extract-audio --audio-format mp3 {videoUrl}"; break;
        }

        if (string.IsNullOrEmpty(arguments))
        {
            throw new ArgumentException("Некорректный выбор!");
        }

        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = ytDlpPath,
            Arguments = arguments,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };

        Process process = new Process { StartInfo = psi };
        process.OutputDataReceived += (sender, e) => Console.WriteLine(e.Data);
        process.ErrorDataReceived += (sender, e) => Console.WriteLine(e.Data);

        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();

        Console.WriteLine("Загрузка завершена, файл находится в папке с программой.");
    }

    static void DownloadFile(string url, string outputPath)
    {
        using (WebClient client = new WebClient())
        {
            client.DownloadFile(url, outputPath);
        }
    }

    static void DownloadAndExtractFfmpeg()
    {
        string zipPath = "ffmpeg.zip";
        DownloadFile(ffmpegUrl, zipPath);

        System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, ffmpegFolder);
        File.Delete(zipPath);

        string[] files = Directory.GetFiles(ffmpegFolder, "ffmpeg.exe", SearchOption.AllDirectories);
        if (files.Length > 0)
        {
            File.Move(files[0], ffmpegExe);
        }
    }
}
скорее всего юзает пакеты и либы разные под использование веб сервисов для скачивания, я не видел исходник но могу предположить
 
скорее всего юзает пакеты и либы разные под использование веб сервисов для скачивания, я не видел исходник но могу предположить
Я уж выяснил) NetCore с публикацией, публикация в моём случае вообще родила файл на 65Мб)
Если без публикации то будет в NetCore 2 файла, бинарник и dll`ка.

Я ж говорю, я отставший от жизни)
 
Я уж выяснил) NetCore с публикацией, публикация в моём случае вообще родила файл на 65Мб)
Если без публикации то будет в NetCore 2 файла, бинарник и dll`ка.

Я ж говорю, я отставший от жизни)
Хватит оффтопить в теме
 
  • Клоун
Реакции: expresss
Активность
Пока никто не печатает сообщение