Skip to content
/ YTMASC Public

Your offline music library with YouTube as it's backend!

License

Notifications You must be signed in to change notification settings

Egezenn/YTMASC

Repository files navigation

YTMASC

horrible orange triangle

YTMASC(YouTube Music Audio Scraper & synChronizer) is a wrapper around tools such as yt-dlp and ffmpeg that allows you to create fast&reproducible offline music libraries. Features are:

  • Downloading, converting and tagging (in parallel!)
  • Maintaining a data file for your music for an easily reproducible collection
  • Lyric downloads
  • Metadata fetching from YouTube
  • More to be restored & implemented!

Important

You need yt-dlp, ffmpeg and magick binaries on your path.

CLI TLDR

Description Command
Show the help ytmasc
ytmasc -h
ytmasc --help
Process the entire library ytmasc run
ytmasc run -w ./data/downloads/ --db ./data/library.json -f opus --download-extras "cover,lyric" --embed-extras "cover"
Process the entire library (in parallel) ytmasc run --workers 5
Download a single track ytmasc download <id>
ytmasc download <id> -w ./data/downloads/ --download-extras "cover,lyric"
Convert a single track ytmasc convert <id>
ytmasc convert <id> -w ./data/downloads/ -f opus
Tag a single track ytmasc tag <id>
ytmasc tag <id> -w ./data/downloads/ --db ./data/library.json --embed-extras "cover"
run download
convert tag

Special thanks to

  • the artists whom pushed me to preserve what I like when services fumbled to do so
  • the devs of the many dependencies!

Dependencies

Binaries

Package Usage License
Python ~=3.12 Core language PSFL
yt-dlp Downloading files off of YouTube Unlicense
FFmpeg Required for the conversion of audio files LGPLv2.1
ImageMagick Required for the conversion of image files Custom

Python packages

Package Usage License
click CLI interface BSD-3-Clause
mutagen Tagging audio files GPL-2.0
pyinstaller Compilation GPLv2
requests Making requests Apache-2.0
rich_click Prettified CLI interface MIT
ytmusicapi Metadata fetching MIT

Disclaimer

This project is not in any way, shape or form affiliated with YouTube, Google or any of their subsidiaries and affiliates.