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
|
||||
/Cargo.lock
|
||||
/.idea/
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
[package]
|
||||
name = "youtube-dl-gtk"
|
||||
version = "0.1.0"
|
||||
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/media-downloader"
|
||||
license = "MIT"
|
||||
edition = "2018"
|
||||
|
||||
# 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 gtk::prelude::*;
|
||||
use gtk::Orientation;
|
||||
use gtk::{Orientation, InputPurpose};
|
||||
use std::env::args;
|
||||
use std::process::Command;
|
||||
|
||||
@@ -9,8 +11,8 @@ const SPACING: i32 = 16;
|
||||
fn build_ui(application: >k::Application) {
|
||||
let window = gtk::ApplicationWindow::new(application);
|
||||
|
||||
window.set_title("youtube-dl");
|
||||
window.set_border_width(10);
|
||||
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,8 +23,8 @@ fn build_ui(application: >k::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_spacing(SPACING);
|
||||
horizontal.set_homogeneous(true);
|
||||
|
||||
window.add(&vertical);
|
||||
@@ -58,7 +60,7 @@ fn build_ui(application: >k::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...");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user