Skip to main content

Musescore file management

A CLI interface for managing Musescore files and their PNG exports. It can normalize Musescore files, export PNGs, and synchronize them to Google Drive or S3-compatible services.

Installation

Install the project and the providers you use:

uv sync --extra drive --extra s3 --group dev
make init

Google Drive uses the drive extra. S3 and S3-compatible services use the s3 extra.

Configuration

Create ~/.msm/configs:

[default]
LOCAL_MSCZ_DIRECTORY=/path/to/scores
LOCAL_PNG_DIRECTORY=/path/to/pngs
MSCORE_CMD=mscore
JOBS=4
DEFAULT_SCORES_TARGET=archive
DEFAULT_PNGS_TARGET=gallery

[target.archive]
TYPE=s3
BUCKET=my-score-bucket
PREFIX=scores
ENDPOINT_URL=https://s3.example.com

[target.gallery]
TYPE=google-drive
FOLDER_ID=<Google Drive folder ID>
CREDENTIALS_PATH=~/.config/msm/google-client.json

The [default] section is a profile. Select another profile with --profile NAME. Normal application environment variables override profile values.

Profiles can be managed interactively. With no subcommand, profiles prints its help and the current profile list:

uv run msm profiles
uv run msm profiles add work
uv run msm profiles edit work
uv run msm profiles clear work

The add and edit wizards explain each setting, allow optional settings to be skipped, and show the complete proposed profile for confirmation before changing ~/.msm/configs.

Each [target.NAME] section defines a reusable destination. Select one with --target NAME, regardless of whether it uses Google Drive or S3. Target fields can be overridden with MSM_TARGET_<NAME>_<FIELD>, with punctuation in the name replaced by underscores. For example, MSM_TARGET_ARCHIVE_BUCKET overrides BUCKET for archive.

Targets can also be created interactively:

uv run msm targets add archive

The wizard asks for the provider's required settings, offers optional settings individually, and confirms the complete target before changing ~/.msm/configs.

S3 targets support BUCKET, PREFIX, ENDPOINT_URL, ACCESS_KEY_ID, and SECRET_ACCESS_KEY. Standard AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_ENDPOINT_URL_S3 values are used as fallbacks, so the normal boto3 credential chain remains available.

Google Drive targets support FOLDER_ID, CREDENTIALS_PATH, and an optional TOKEN_PATH. By default, OAuth tokens are stored per target at ~/.msm/tokens/google-drive-<target>.json. The first use can open a browser for authorization.

Commands

Local operations use normalize and export:

uv run msm normalize scores
uv run msm normalize scores --path ./scores
uv run msm export scores --path ./scores --output ./pngs --jobs 2

Remote operations use sync:

uv run msm sync scores
uv run msm sync scores --target gallery
uv run msm sync pngs --target archive
uv run msm --dryrun sync pngs --target gallery

Score commands default to LOCAL_MSCZ_DIRECTORY; PNG commands default to LOCAL_PNG_DIRECTORY. A path can be one file or a directory. Directory scans are non-recursive.

sync is one-way and non-deleting. It creates missing remote files, updates older managed files, skips unchanged files, and leaves remote-newer or conflicting files untouched. Conflicts and remote-newer results produce a nonzero exit code. --dryrun prevents remote mutations but still reads remote state and can authorize Google Drive or refresh its token.

The former flat invocations msm normalize, msm export-pngs, msm sync-pngs, msm upload, and msm upload-scores have been removed.

Metadata

Release files for musescore-manager 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for musescore-manager 0.0.3
File Size Uploaded
musescore_manager-0.0.3.tar.gz 117.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for musescore-manager 0.0.3
File Interpreter ABI Platform
musescore_manager-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 159.5 kB

Release files / musescore_manager-0.0.3.tar.gz

Download URL musescore_manager-0.0.3.tar.gz
Size 117.7 kB
Tags Source
SHA-256 checksum
How to use checksums
751a68185db75a199f75eeffaacadab9d37c0ee88300d5a1d8f95cdbe609b777
BLAKE2b-256 checksum
How to use checksums
7ecdbbc5001ca3d50dc248952131a73985bede7a8ad890c118c5c5b43068b930
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / musescore_manager-0.0.3-py3-none-any.whl

Download URL musescore_manager-0.0.3-py3-none-any.whl
Size 41.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
92c825171b5c6882eb8cb0a66cffc1a543160e0cd24e4b943668376426ecf6de
BLAKE2b-256 checksum
How to use checksums
c20bf4c4fa09043696832a5e552bf9611ac57b81489e004ddb97092f00837130
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page