Skip to main content

[mus]escore [d]own[l]oader, ported from TypeScript

Project description

musdl

logo

Code style: black PyPI - Downloads PyPI - License PyPI PyPI - Python Version Lines of code

NOTE

The author of musdl does NOT condone piracy in any way, and is not responsible for anything that happens as a result of piracy arising from the use of musdl.

musdl (musscore downloader) is a downloader for Musescore, written in Python.

The easiest way to download the score is through the CLI:

musdl (musescore url)

To convert to another format, use -f/--format:

# export as midi
musdl -f mid (musescore url)

For a complete list of formats, run musdl --help. If you want to export in any format besides mscz, you need to install musescore first.

It can also be imported and used as a module:

from musdl import Score, OnlineScore

my_score = OnlineScore("musescore_url")

# Read the score's metadata,
name = my_score["workTitle"]
# or save the whole score...
my_score.export("mscz", "my_score.mscz")

# ...and then load it again.
my_score = Score.from_file("my_score.mscz")

For API documentation, see here.

How it works

I just copied over the IPNS-specific constants and used them to download the score file from Xmader's dataset.

Other approaches were considered:

  • Create a native Python interpreter just to decode the musescore js (like Js2py). (Will problably break with every API change.)
  • Use a headless JS browser with Selenium. (Resource-heavy, not really cross-platform.)
  • Run a JS engine like PyMiniRacer/PyQt5. (Better speed, but needs C extensions.)

So I decided to roll with the IPNS dataset.

takedown request, et tu

Take a look at this issue in the same repo.

Hacking

All my python projects now use flit to build and publish. So you need to python3 -m pip install flit first.

flit build

Install

(python3 -m) pip install musdl

Optionally, to export the score in other formats (midi, mp3, etc.) install musescore. musdl relies on its command-line tool mscore to export scores:

# Linux
sudo (package manager/snap) install musescore
# Windows
scoop bucket add extras  # add the extras bucket if you haven't
scoop install musescore

License

MIT.

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

musdl-3.1.5.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

musdl-3.1.5-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file musdl-3.1.5.tar.gz.

File metadata

  • Download URL: musdl-3.1.5.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for musdl-3.1.5.tar.gz
Algorithm Hash digest
SHA256 ec7e3d6dc4c7b729b79d2209448847bbdecf5ee8c1ba8dc1e049e392fd443d2e
MD5 895d04d9ea2e37a6d9baf00313a859f8
BLAKE2b-256 0a200a5f763633f2ee0559462d3c1602cb66d659e74c82c303cfe497e0cd3871

See more details on using hashes here.

File details

Details for the file musdl-3.1.5-py3-none-any.whl.

File metadata

  • Download URL: musdl-3.1.5-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for musdl-3.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 49c1faf23cde4685efbaf22e4080a0405705bfd654192fb722ecfcfca47e32b5
MD5 78c8d4bb6626a45fdc6825c21e6137db
BLAKE2b-256 27f9af75177338d914143fdfd4e797221ccd8d61d46a80853ca47911ec14f3bb

See more details on using hashes here.

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