#download #youtube #automatic #album #metadata #scrape #discogs

bin+lib ytmdl

Downloads albums from YouTube and automatically fills them with metadata from Discogs

6 releases

0.3.4 Oct 21, 2023
0.3.3 Oct 15, 2023
0.2.2 Oct 4, 2023

#5 in #discogs

24 downloads per month

Custom license

54KB
1.5K SLoC

ytmdl

Crates.io docs.rs GitHub license

Usage

Just run the executable and it should bring up the GUI. I recommend running it from a console for logging.

The first screen prompts for a YouTube playlist link and a Discogs release link.

Hitting the "Scrape" button will scrape the data then bring you to the screen where you can modify information. Discogs escapes some characters (e.g. & becomes &) so you might want to change that, and if there are multiple artists with the same name it'll show up as something like "Artist (3)".

Hitting the "Download" button here will start the downloads. It won't respond while doing this, but will continue to log to the console (hence why I recommend running it from the console). This step took ~20s for a 6 track album for me, but sometimes it can take longer (I believe sometimes YouTube can be throttled if it detects suspicious behaviour).

Environment variables

  • RUST_LOG: see env_logger (if unset I've made it default to ytmdl, which will just print all logs from this module)
  • YTMDL_OUT_DIR: directory that the final mp3s will be (defaults to your downloads_directory/ytmdl/)
  • YTMDL_OVERWRITE: whether should overwrite or not (defaults to true)

Requirements

Installation

Releases

See GitHub releases

Build from source

cargo install ytmdl

or

cargo install --git https://github.com/Breadinator/ytmdl

Todo

  • Automatically get the specific Discogs release page from the master page if provided
  • If it fails to scrape discogs, just procede with empty data
  • Scrape Discogs for data on specific songs (e.g. composers)
  • Scrape the full album date (not in the JSON block currently parsed but is present on the site)

Dependencies

~32–53MB
~1M SLoC