Muzlib is a Python script that allows you to create your own music library.
Project description
Muzlib
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.
Instalation
Ensure that you have installed FFmpeg.
python -m venv .venv
source .venv/bin/activate
pip install muzlib
Usage
You 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.
Available clases
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)
Available methods
Downloading artist's discography
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.
Downloading album
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.
Download track
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.
Backup library
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.
Restore library
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().
Example of use
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.
Troubleshooting
[!WARNING] If you encounter issues with yt-dlp, you can replace default cookies at
assets/cookies.txtas described at this guide.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file muzlib-0.3.1.tar.gz.
File metadata
- Download URL: muzlib-0.3.1.tar.gz
- Upload date:
- Size: 26.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7197a19021d50e936ef4a473fc9f9aa5c971d62e3f93bd377028ed45be1fa4ba
|
|
| MD5 |
f674aad06ca70bf948c6858df90c5f62
|
|
| BLAKE2b-256 |
bba859fe626a27852ab4b90c7b7e17154c768c84cdcffde3dc81a06bc4ecec2d
|
Provenance
The following attestation bundles were made for muzlib-0.3.1.tar.gz:
Publisher:
python-publish.yml on ezvezdov/muzlib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
muzlib-0.3.1.tar.gz -
Subject digest:
7197a19021d50e936ef4a473fc9f9aa5c971d62e3f93bd377028ed45be1fa4ba - Sigstore transparency entry: 1243633926
- Sigstore integration time:
-
Permalink:
ezvezdov/muzlib@4d6cf9e6faa81503a0d2072813a24a3df5d2c498 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/ezvezdov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@4d6cf9e6faa81503a0d2072813a24a3df5d2c498 -
Trigger Event:
release
-
Statement type:
File details
Details for the file muzlib-0.3.1-py3-none-any.whl.
File metadata
- Download URL: muzlib-0.3.1-py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
859392a71b0610dfbce6a4d90aad077fe3dfebbf483de37b11f73726b02295ea
|
|
| MD5 |
4bab6f2bbbb7b01ea57fb230ae9c7b1b
|
|
| BLAKE2b-256 |
55da183c50950306b83aa30e284453d71cb73e41af5f5f40547ed53e572d30d5
|
Provenance
The following attestation bundles were made for muzlib-0.3.1-py3-none-any.whl:
Publisher:
python-publish.yml on ezvezdov/muzlib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
muzlib-0.3.1-py3-none-any.whl -
Subject digest:
859392a71b0610dfbce6a4d90aad077fe3dfebbf483de37b11f73726b02295ea - Sigstore transparency entry: 1243633937
- Sigstore integration time:
-
Permalink:
ezvezdov/muzlib@4d6cf9e6faa81503a0d2072813a24a3df5d2c498 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/ezvezdov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@4d6cf9e6faa81503a0d2072813a24a3df5d2c498 -
Trigger Event:
release
-
Statement type: