Skip to main content

A Django-based readonly web music library application.

Project description

Exordium is a read-only web-based music library system for Django. Exordium will read mp3 and ogg files from the host filesystem and provide an online interface to browse, download (as zipfiles or otherwise), and stream.

The HTML5 media player jPlayer is used to provide arbitrary streaming of music.

Exordium was built with a very specific set of operational goals and does not attempt to be a generic library suitable for widespread use. There are, in fact, no configuration options beyond those to define the file paths/URLs necessary for basic usage. Patches to add/change functionality will be happily received so long as they don’t interfere with or disable the current functionality by default, but there is no internal development goal to make Exordium a generic solution.

Detailed information about what Exordium expects from your library, and its assumptions and limitations, can be found either in the docs/ directory, Exordium’s Website, or exordium.readthedocs.io. It’s highly recommended to at least glance through these to get a feel for how Exordium will function.

The name “Exordium” comes from the fictional technology of the same name in Alastair Reynolds’ “Revelation Space” novels. It’s not a perfect name for the app, given that the Revelation Space Exordium would make a pretty lousy music library, but at least there’s some element of data storage and retrieval. Exordium the web-based music library, as opposed to its fictional counterpart, is only capable of retrieving music which has been imported to it in the past. I’ll be sure to contact all the major news organizations if I figure out a way to get it to retrieve music stored in the future.

Requirements

Exordium requires at least Python 3.4 (tested in 3.4, 3.5, and 3.6), and Django 1.11 or 2.0. Has not yet been tested with Django 2.1 or Python 3.7.

Exordium requires the following additional third-party modules:

  • mutagen (built on 1.39)

  • Pillow (built on 4.3.0)

  • django-tables2 (built on 1.17.1)

    • the 2.x line of django-tables2 currently doesn’t fully work, though the problems are entirely cosmetic

  • django-dynamic-preferences (built on 1.5), which in turn requires:

    • six (built on 1.11.0)

    • persisting-theory (built on 0.2.1)

Getting Exordium

Exordium is available to install on PyPI via pip install django-exordium. PyPI also hosts Python packages for Exordium in both source and Wheel formats, at https://pypi.python.org/pypi/django-exordium/. Source and Wheel downloads of all released versions can also be found at Exordium’s hompeage at https://apocalyptech.com/exordium/.

Exordium sourcecode is hosted at GitHub, and sourcecode archives of released versions can be found there at https://github.com/apocalyptech/exordium/releases

Installation

These instructions assume that you already have a Django project up and running.

  1. Install Exordium via pip install django-exordium

    • If Exordium hasn’t been installed via pip or some other method which automatically installs dependencies, install its dependencies:

      pip install -r requirements.txt
  2. Add exordium, django_tables2, and dynamic_preferences to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
        ...
        'exordium',
        'django_tables2',
        'dynamic_preferences',
        'dynamic_preferences.users.apps.UserPreferencesConfig',
    ]
  3. Include the exordium URLconf in your project urls.py like this:

    url(r'^exordium/', include('exordium.urls')),
  4. Run python manage.py migrate exordium to create the Exordium models.

  5. Run python manage.py migrate dynamic_preferences to create the Dynamic Preferences models, if this wasn’t already configured on your Django install.

  6. Run python manage.py loaddata --app exordium initial_data to load some initial data into the database. (This is not actually strictly speaking necessary - the app will create the necessary data automatically if it’s not found.)

  7. If running this from a “real” webserver, ensure that it’s configured to serve Django static files. Then run python manage.py collectstatic to get Exordium’s static files in place.

  8. Either start the development server with python manage.py runserver or bring up your existing server. Also ensure that you have a webserver configured to allow access directly to your music library files, and optionally to the zipfile downloads Exordium will create.

  9. Visit the administrative area in Dynamic Preferences > Global preferences and set the values for the following:

    • Exordium Library Base Path: This is what defines where your music library can be found on disk.

    • Exordium Media URL: This is the base URL which provides direct access to the files in your library. Omit the trailing slash, though things will probably work fine even if it’s in there. Without this set properly, song download links will be broken and the streaming player will not work properly.

    • Exordium Zip File Generation Path: Path on the filesystem to store zipfile album downloads. This is the one location in which the user running Django needs write access.

    • Exordium Zip File Retrieval URL: This is the base URL providing web access to that zipfile directory.

    Without the last two options, Exordium will still function fine, but the album-download button will not be rendered. Exordium will also function without the “Exordium Media URL” option being set properly, though with the caveats mentioned above.

  10. If Zipfile downloads are configured, a process should be put into place to delete the zipfiles after a period of time. I personally use a cronjob to do this:

    0 2 * * * /usr/bin/find /var/audio/exordiumzips -type f -name "*.zip" -mtime +2 -print -exec unzip -v {} \; -exec rm {} \;
  11. Visit the Library Upkeep link from the Exordium main page and click on “Start Process” to begin the initial import into Exordium!

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

django-exordium-1.3.4.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

django_exordium-1.3.4-py3-none-any.whl (411.6 kB view details)

Uploaded Python 3

File details

Details for the file django-exordium-1.3.4.tar.gz.

File metadata

  • Download URL: django-exordium-1.3.4.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.5 CPython/3.6.8

File hashes

Hashes for django-exordium-1.3.4.tar.gz
Algorithm Hash digest
SHA256 f71b50e0889184c79db1a90a6c09e3483572fe800d8e801fa1b10578d6b1153c
MD5 30dba8a1aafe5a48b5f2135ad6b0da94
BLAKE2b-256 f6ae56c2aff28fb1c0f5ac4e06d28cb1b509432d2863fd4ca2d21177eeafc7f9

See more details on using hashes here.

File details

Details for the file django_exordium-1.3.4-py3-none-any.whl.

File metadata

  • Download URL: django_exordium-1.3.4-py3-none-any.whl
  • Upload date:
  • Size: 411.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.5 CPython/3.6.8

File hashes

Hashes for django_exordium-1.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1e989991536932f491ceff31d6b86dacbe556d35ac23755b2033d10d1c09961a
MD5 8b658b343b7af65f7231b7ef5718e684
BLAKE2b-256 62c3f1052f24f93796b6e9804d580b23e07f7f626262d0187c445fa9f55a9206

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