Files
ytdlp-gui/Main.cs
2025-05-23 01:34:48 +02:00

101 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ytdlp_gui
{
public partial class Main : Form
{
public Main()
{
ytdlp = new YTdlp();
downloads = new List<Download>();
InitializeComponent();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnDownload_Click(object sender, EventArgs e)
{
// Get user download folder on Windows
string user = Environment.GetEnvironmentVariable("USERNAME");
string workdir = @"C:\Users\" + user + @"\Downloads\";
if (checkDownloadPlaylist.Checked && checkPlaylistFolder.Checked)
{
workdir = Path.Combine(workdir, textPlaylistFolder.Text);
if (!Directory.Exists(workdir))
System.IO.Directory.CreateDirectory(workdir);
}
YTdlpProcess process = ytdlp.Download(
textUrl.Text,
checkAudioOnly.Checked,
checkDownloadPlaylist.Checked,
workdir
);
Download download = new Download(
process,
workdir,
checkConvert.Checked ? comboConvertFormat.Text : null
);
download.Show();
downloads.Add(download);
download.FormClosed += (_sender, _e) => {
downloads.Remove(download);
};
}
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
if (downloads.Count == 0)
return;
var window = MessageBox.Show(
"Close the window?\nClosing current window will cancel current downloads!",
"Are you sure?",
MessageBoxButtons.YesNo
);
e.Cancel = (window == DialogResult.No);
}
private void checkAudioOnly_CheckedChanged(object sender, EventArgs e)
{
if (checkAudioOnly.Checked)
comboConvertFormat.Text = "mp3";
else
comboConvertFormat.Text = "mp4";
}
private void checkConvert_CheckedChanged(object sender, EventArgs e)
{
comboConvertFormat.Enabled = checkConvert.Checked;
}
private void checkDownloadPlaylist_CheckedChanged(object sender, EventArgs e)
{
groupPlaylist.Enabled = checkDownloadPlaylist.Checked;
}
private void checkPlaylistFolder_CheckedChanged(object sender, EventArgs e)
{
textPlaylistFolder.Enabled = checkPlaylistFolder.Checked;
lblPlaylistFolder.Enabled = checkPlaylistFolder.Checked;
}
protected List<Download> downloads;
protected YTdlp ytdlp;
}
}