Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Наверное некоторые сталкивались с такой штукой что надо видосы с ютуба скачать а сайты по типу ssyoutube не работают или качают 360п парашу, так вот.. Первая версия программы которая скачивает видео с ютуба в нормальном качестве. Так же вы можете скачать только звук или только видео
Чтобы использовать программу более удобно создайте папку на рабочем столе и туда закиньте прогу, видео качаются в ту же папку где и прога. (Если вы закинете ее на рабочий стол то и видео будет там и нужная штука для работы самой проги)
Если нужно могу залить ее сурсы, работает в России.
Не бейте палками, это первое творение, делал для себя
Не устраивает то что ты поставил мне без причины клоуна и зачем-то написал тут это. Заняться нечем? :) А то что ты скинул я ваще впервые вижу, та и зачем оно мне если своя прога есть
Потому что как есть уже проекты которые обновляются и работают отлично, в частности я про yt-dl. Это просто красивые GUI к ним, которые перед запуском чекают обновы ffmpeg и yt-dl.
Насрал это ты. Ладно бы твой софт был бы чем то лучше того что уже есть на просторах. Более понятливый, дружелюбный интерфейс? Возможность выбора только видео / только аудио? Возможность выбора какой вариант видео скачать? 720 или 1080?
Я понимаю и поддерживаю когда люди улучшают что-то или пишут своё но лучше. Что условно можно даже и своей бабушке поставить.
Что лучше GUI в которых объяснил тыкай сюда, сюда и сюда и у тебя будет видео вот тут.
Или в твоём случае Запусти софт с такими то параметрами, потом введи текстом ссылку, вводи все текстом, а потом у тебя это все еще и развалиться с ошибкой потому что аргумент не тот)
К тому же, ты же не vi писал это прогу, а в классном редакторе с подсветкой синтаксиса.
Или в твоём случае Запусти софт с такими то параметрами, потом введи текстом ссылку, вводи все текстом, а потом у тебя это все еще и развалиться с ошибкой потому что аргумент не тот)
о_О Это как ты так смог 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). На выходе получаем
:) Те же 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). На выходе получаем
:) Те же 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). На выходе получаем
:) Те же 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`ка.
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь. Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.