Compare commits

..

8 Commits

3 changed files with 39 additions and 7 deletions

View File

@@ -1,9 +1,9 @@
[package]
name = "youtube-dl-gtk"
description = "a simple frontend for youtube-dl"
version = "0.1.2"
name = "media-downloader-gtk"
description = "a simple frontend for youtube-dlc"
version = "0.1.5"
authors = ["Max Bradbury <max@tinybird.info>"]
repository = "https://tinybird.dev/max/youtube-dl-gtk"
repository = "https://tinybird.dev/max/media-downloader"
license = "MIT"
edition = "2018"

29
README.md Normal file
View File

@@ -0,0 +1,29 @@
# media-downloader
a simple graphical frontend for the `youtube-dl` media downloader.
`youtube-dl` must be installed and in your PATH.
really just an experiment in creating my first desktop program, so don't expect too much.
uses `gtk-rs`. released under the MIT license.
## features
download from any media source that `youtube-dl` supports (e.g. soundcloud, mixcloud, etc.)
extract audio and convert to mp3
## known problems
no validation for URL bar
no user feedback
will hang after clicking "go!" due to `youtube-dl` being executed in the same thread.
there is no user feedback so this basically looks like the program crashing.
TODO: investigate using https://crates.io/crates/gtk-future-executor
would it be possible to add progress bars for in-progress downloads somehow?
notifications for when downloads finish?

View File

@@ -1,6 +1,8 @@
#![windows_subsystem = "windows"]
use gio::prelude::*;
use gtk::prelude::*;
use gtk::Orientation;
use gtk::{Orientation, InputPurpose};
use std::env::args;
use std::process::Command;
@@ -9,7 +11,7 @@ const SPACING: i32 = 16;
fn build_ui(application: &gtk::Application) {
let window = gtk::ApplicationWindow::new(application);
window.set_title("youtube-dl");
window.set_title("media downloader");
window.set_border_width(SPACING as u32);
window.set_position(gtk::WindowPosition::Center);
window.set_default_size(400, 100);
@@ -21,6 +23,7 @@ fn build_ui(application: &gtk::Application) {
let button = gtk::Button::with_label("Go!");
input_url.set_placeholder_text(Some("Enter URL here"));
input_url.set_input_purpose(InputPurpose::Url);
horizontal.set_homogeneous(true);
@@ -57,7 +60,7 @@ fn build_ui(application: &gtk::Application) {
fn main() {
let application = gtk::Application::new(
Some("dev.tinybird.max.youtube-dl-gtk"),
Some("dev.tinybird.max.media-downloader"),
Default::default()
).expect("Initialization failed...");