Skip to main content

The ultimate tool for managing your music library.

Project description

Moe is our resident Music-Organizer-Extraordinaire who’s sole purpose is to give you full control over your music library by streamlining the process between downloading/ripping music to your filesystem and listening to it with your favorite music player.

In short, Moe maintains a database of your music library that can be updated with various metadata sources, queried, edited, etc. through either an API or command-line interface. All of these features, and more, are made available by a highly extensible plugin ecosystem.

Usage

Moe comes with a command-line interface which is how most users will take advantage of the library management features. Below is a screenshot of Moe importing an album from the filesystem and adding it to the underlying database all while fixing tags, relocating the files, and anything else you can imagine.

_static/import_example.png

Alternatively, because all the core functionality is available via an API, the underlying music management system can be incorporated into any existing program or other user interface.

Finally, although a lot of Moe’s functionality exists around the idea of operating on a library database of your music, the database is entirely optional. In this case, Moe provides a convenient set of tools and functionality for handling music in a general sense. For example, below is a standalone python script that takes an album directory and Musicbrainz release ID from the command-line, and then updates the underlying files’ tags with any changes from Musicbrainz.

#!/usr/bin/env python3

import argparse
import pathlib

import moe.plugins.musicbrainz as moe_mb
from moe.config import Config, ConfigValidationError
from moe.library import Album
from moe.plugins.write import write_tags


def main():
    try:
        Config(init_db=False)
    except ConfigValidationError as err:
        raise SystemExit(1) from err

    parser = argparse.ArgumentParser(
        description="Update an album with musicbrainz tags."
    )
    parser.add_argument("path", help="dir of the album to update")
    parser.add_argument("mb_id", help="musicbrainz id of the album to fetch")
    args = parser.parse_args()

    album = Album.from_dir(pathlib.Path(args.path))

    album.merge(moe_mb.get_album_by_id(args.mb_id), overwrite=True)

    for track in album.tracks:
        write_tags(track)


if __name__ == "__main__":
    main()

This is just a small taste of what Moe is capable of and how it can make your life easier when dealing with music in Python. Stop re-inventing the wheel; use Moe.

If you want to learn more, check out the Getting Started docs.

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

moe-1.5.0.tar.gz (53.7 kB view details)

Uploaded Source

Built Distribution

moe-1.5.0-py3-none-any.whl (79.1 kB view details)

Uploaded Python 3

File details

Details for the file moe-1.5.0.tar.gz.

File metadata

  • Download URL: moe-1.5.0.tar.gz
  • Upload date:
  • Size: 53.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1022-azure

File hashes

Hashes for moe-1.5.0.tar.gz
Algorithm Hash digest
SHA256 843ead1566f6f03130fd801a2ffcbede0f235466ff9d68c4643969dd7f190f78
MD5 62d4deade9781178d13f524750c335c7
BLAKE2b-256 348e6eb61d363d6aea6ef4a5cf3614ba82e77587731b486fd92b9ae9030d9eef

See more details on using hashes here.

Provenance

File details

Details for the file moe-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: moe-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 79.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1022-azure

File hashes

Hashes for moe-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c24a77d0349d1455e35a724c89df0fd455f91ae1971180c26d46e7b05bdf5ab7
MD5 a7361cbbd4ecd0c3100443f99cd3050c
BLAKE2b-256 faf5a335e2b97d4472e60e16b472ef0370e4ea43c7bd05ee337d9c5dc54acda3

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page