Muzlib is a Python script that allows you to create your own music library. Music is downloaded from YouTube, and music tags are constructed using data from YouTube, Lrclib, NetEase.
Ensure that you have installed FFmpeg.
python -m venv .venv
source .venv/bin/activate
pip install muzlibYou can simply download discography of artist (YouTube API by default).

This script creates a simple database (.muzlib/db.json) to track downloaded tracks, allowing you to update an artist's discography without re-downloading existing tracks.
There is only one (for now ) classe that can be used:
muzlib(library_path: str, skip_downloaded=False): library class that uses YouTube Music metadata (100% accuracy, but sometimes poor quality metadata)
Muzlib.download_artist_discography(artist_name: str, download_top_result=False)
artist_name: Name of artist as a string.download_top_result: If set to True, choose the first matching artist automatically. By default (False), it will prompt you to confirm if the match is correct.
Muzlib.download_album_by_name(search_term: str, download_top_result=False)
search_term: The search query as a string. It is recommended to use the format: "artist1, artist2 - album_name".download_top_result: If set to True, downloads the first matching result automatically. By default (False), it will prompt you to confirm if the match is correct.
Muzlib.download_track_by_name(search_term: str, download_top_result=False)
search_term: The search query as a string. It is recommended to use the format: "artist1, artist2 - track_name".download_top_result: If set to True, downloads the first matching result automatically. By default (False), it will prompt you to confirm if the match is correct.
Muzlib.backup_library() -> str
This function creates backup of library (even with user-changed tags).
Creates file .muzlib/muzlib_backup_***.json and returns path to it.
This function downloads track and set metadata from bacup file.
Muzlib.backup_library(backup_filepath: str)
backup_filepath: path of the file created byMuzlib.backup_library().
You can use Muzlib/`` class in source code this way
import muzlib
ml = muzlib.Muzlib("Music")
ml.download_track_by_name("Ludwig Göransson - Can You Hear The Music")
ml.download_track_by_name("Ludwig Göransson - Destroyer Of Worlds", download_top_result=True)
# ml.download_artist_discography("Ludwig Göransson")
backup_path = ml.backup_library()
ml2 = muzlib.Muzlib("Music2")
ml2.restore_library(backup_path)After running this code, the Music and Music2 folders will be identical, each containing two tracks by Ludwig Göransson.
Warning
If you encounter issues with yt-dlp, you can replace default cookies at assets/cookies.txt as described at this guide.