Compare commits
15 Commits
f9e7958120
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| b34439cc9a | |||
| f851cdbc30 | |||
| 6d4c5f92dc | |||
| 09d9204ea5 | |||
| 3a7cb6c6a3 | |||
| c4424b806f | |||
| 90155796c6 | |||
| 66f06461a1 | |||
| 8736644435 | |||
| ab77d59e29 | |||
| 6ebce96d96 | |||
| f600ee3692 | |||
| 30167d0eee | |||
| 8e3e04791b | |||
| c7c23dc815 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
/target
|
/target
|
||||||
/Cargo.lock
|
/Cargo.lock
|
||||||
|
/.idea/
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "youtube-dl-gtk"
|
name = "media-downloader-gtk"
|
||||||
version = "0.1.0"
|
description = "a simple frontend for youtube-dlc"
|
||||||
|
version = "0.1.5"
|
||||||
authors = ["Max Bradbury <max@tinybird.info>"]
|
authors = ["Max Bradbury <max@tinybird.info>"]
|
||||||
|
repository = "https://tinybird.dev/max/media-downloader"
|
||||||
|
license = "MIT"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|||||||
29
README.md
Normal file
29
README.md
Normal 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?
|
||||||
12
src/main.rs
12
src/main.rs
@@ -1,6 +1,8 @@
|
|||||||
|
#![windows_subsystem = "windows"]
|
||||||
|
|
||||||
use gio::prelude::*;
|
use gio::prelude::*;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gtk::Orientation;
|
use gtk::{Orientation, InputPurpose};
|
||||||
use std::env::args;
|
use std::env::args;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
@@ -9,8 +11,8 @@ const SPACING: i32 = 16;
|
|||||||
fn build_ui(application: >k::Application) {
|
fn build_ui(application: >k::Application) {
|
||||||
let window = gtk::ApplicationWindow::new(application);
|
let window = gtk::ApplicationWindow::new(application);
|
||||||
|
|
||||||
window.set_title("youtube-dl");
|
window.set_title("media downloader");
|
||||||
window.set_border_width(10);
|
window.set_border_width(SPACING as u32);
|
||||||
window.set_position(gtk::WindowPosition::Center);
|
window.set_position(gtk::WindowPosition::Center);
|
||||||
window.set_default_size(400, 100);
|
window.set_default_size(400, 100);
|
||||||
|
|
||||||
@@ -21,8 +23,8 @@ fn build_ui(application: >k::Application) {
|
|||||||
let button = gtk::Button::with_label("Go!");
|
let button = gtk::Button::with_label("Go!");
|
||||||
|
|
||||||
input_url.set_placeholder_text(Some("Enter URL here"));
|
input_url.set_placeholder_text(Some("Enter URL here"));
|
||||||
|
input_url.set_input_purpose(InputPurpose::Url);
|
||||||
|
|
||||||
horizontal.set_spacing(SPACING);
|
|
||||||
horizontal.set_homogeneous(true);
|
horizontal.set_homogeneous(true);
|
||||||
|
|
||||||
window.add(&vertical);
|
window.add(&vertical);
|
||||||
@@ -58,7 +60,7 @@ fn build_ui(application: >k::Application) {
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let application = gtk::Application::new(
|
let application = gtk::Application::new(
|
||||||
Some("dev.tinybird.max.youtube-dl-gtk"),
|
Some("dev.tinybird.max.media-downloader"),
|
||||||
Default::default()
|
Default::default()
|
||||||
).expect("Initialization failed...");
|
).expect("Initialization failed...");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user