Skip to main content

A Django-based readonly web music library application.

Project description

========
Exordium
========

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 <http://jplayer.org/>`_ 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 <http://apocalyptech.com/exordium>`_, or
`exordium.readthedocs.io <http://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 <https://pypi.python.org/pypi/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
http://apocalyptech.com/exordium/.

Exordium sourcecode is hosted at `GitHub <https://github.com/apocalyptech/exordium/>`_,
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.1.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

django_exordium-1.3.1-py3-none-any.whl (395.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django-exordium-1.3.1.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/38.2.5 requests-toolbelt/0.8.0 tqdm/4.19.5 CPython/3.6.5

File hashes

Hashes for django-exordium-1.3.1.tar.gz
Algorithm Hash digest
SHA256 fa0f858e95ab8219b83371dccb099b40b636cef44413b045e4ccb1b4f3028ae2
MD5 42c301ef6ed9b20ee56c9db27b34769e
BLAKE2b-256 ec09e9bb035b5ad3ed104a989b6cf16d6be05ce028f2d300d2edeb14aed769bb

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for django_exordium-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 43f798907be9e306240629a552158055795b4f3f09123e947227e059d0bb79cc
MD5 c6991e8fcdd91ea8e2466bde53321032
BLAKE2b-256 8e4c958d5828a6d3159b2dd3ebac84ef7345891a85db7756665c2d6438e7663e

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