Files
ytdlp-gui/Main.cs

101 lines
3.0 KiB
C#
Raw Normal View History

2025-05-20 02:11:57 +02:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
2025-05-23 01:34:48 +02:00
using System.IO;
2025-05-20 02:11:57 +02:00
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ytdlp_gui
{
public partial class Main : Form
{
public Main()
{
2025-05-20 02:28:22 +02:00
ytdlp = new YTdlp();
2025-05-20 02:11:57 +02:00
downloads = new List<Download>();
InitializeComponent();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnDownload_Click(object sender, EventArgs e)
{
2025-05-20 02:28:22 +02:00
// Get user download folder on Windows
string user = Environment.GetEnvironmentVariable("USERNAME");
string workdir = @"C:\Users\" + user + @"\Downloads\";
2025-05-23 01:34:48 +02:00
if (checkDownloadPlaylist.Checked && checkPlaylistFolder.Checked)
{
workdir = Path.Combine(workdir, textPlaylistFolder.Text);
if (!Directory.Exists(workdir))
System.IO.Directory.CreateDirectory(workdir);
}
2025-05-20 02:28:22 +02:00
YTdlpProcess process = ytdlp.Download(
textUrl.Text,
checkAudioOnly.Checked,
2025-05-23 01:34:48 +02:00
checkDownloadPlaylist.Checked,
2025-05-20 02:28:22 +02:00
workdir
);
2025-05-20 03:59:39 +02:00
Download download = new Download(
process,
workdir,
checkConvert.Checked ? comboConvertFormat.Text : null
);
2025-05-20 02:28:22 +02:00
2025-05-20 02:11:57 +02:00
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);
}
2025-05-20 03:59:39 +02:00
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;
}
2025-05-20 02:11:57 +02:00
2025-05-23 01:34:48 +02:00
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;
}
2025-05-20 02:11:57 +02:00
protected List<Download> downloads;
2025-05-20 02:28:22 +02:00
protected YTdlp ytdlp;
2025-05-20 02:11:57 +02:00
}
}