Music database and web interface.
Project description
========
MishMash
========
|Build Status| |License| |PyPI| |Python versions| |Coverage| |Status|
Music database and web interface.
Features
--------
* MishMash is a music database using `Python`_ and `SQLAlchemy`_.
* A command-line tool for building and managing a music database.
* Web browser interface (using `Pyramid`_) for browsing your music library.
* Uses `eyeD3`_ for reading MP3s and ID3 metadata.
* Support and tested with Python 3.6 and Postgresql. SQLite is periodically
tested with, but future features may not be supported (e.g. full text
search).
* Free software: GNU GPL v3.0 license
.. _Python: https://www.python.org/
.. _SQLAlchemy: http://www.sqlalchemy.org/
.. _eyeD3: http://eyeD3.nicfit.net/
.. _Pyramid: https://trypyramid.com/
Getting Started
----------------
::
$ mishmash info
/\/\_____ .__ .__ _____ .__ /\/\
\(\( \ |__| _____| |__ / \ _____ _____| |__\(\(
/ \ / \| |/ ___/ | \ / \ / \\__ \ / ___/ | \
/ Y \ |\___ \| Y \/ Y \/ __ \_\___ \| Y \
\____|__ /__/____ >___| /\____|__ (____ /____ >___| /
\/ \/ \/ \/ \/ \/ \/
Version : 0.3
Database URL : sqlite:////~/mishmash.db
Database version : 0.3
Last sync : Never
Configuration files : <default>
=== Music library ===
0 music tracks
0 music artists
0 music albums
0 music tags
Surprise, you now have an empty sqlite database in the current directory.
Let's leave it here for now, it can be located elsewhere or use a different
database using command line arguments and/or environment variables. Pretty
useless without any music.::
$ mishmash sync ~/Music/Melvins
Syncing library 'Music': paths=['~/Music/Melvins/']
Syncing directory: ~/Music/Melvins/
Syncing directory: ~/Music/Melvins/1984 - Mangled Demos
Adding artist: Melvins
Syncing directory: ~/Music/Melvins/1986 - 10 Songs
Adding album: 10 Songs
Adding track: ~/Music/Melvins/1986 - 10 Songs/Melvins - 01 - Easy As It Was.mp3
Updating album: 10 Songs
...
== Library 'Music' sync'd [ 8.73s time (45.9 files/s) ] ==
401 files sync'd
401 tracks added
0 tracks modified
0 orphaned tracks deleted
0 orphaned artists deleted
0 orphaned albums deleted
Use your database as you wish. Browse it with `mishmash web`, or use one of its
management commands.
Check out the `Unsonic`_ project for streaming capabilities.
.. _Unsonic: https://github.com/redshodan/unsonic
.. |Build Status| image:: https://travis-ci.org/nicfit/MishMash.svg?branch=master
:target: https://travis-ci.org/nicfit/MishMash
:alt: Build Status
.. |PyPI| image:: https://img.shields.io/pypi/v/MishMash.svg
:target: https://pypi.python.org/pypi/MishMash/
:alt: Latest Version
.. |Python versions| image:: https://img.shields.io/pypi/pyversions/MishMash.svg
:target: https://pypi.python.org/pypi/MishMash/
:alt: Supported Python versions
.. |License| image:: https://img.shields.io/pypi/l/MishMash.svg
:target: https://pypi.python.org/pypi/MishMash/
:alt: License
.. |Status| image:: https://img.shields.io/pypi/status/MishMash.svg
:target: https://pypi.python.org/pypi/MishMash/
:alt: Project Status
.. |Coverage| image:: https://coveralls.io/repos/nicfit/MishMash/badge.svg
:target: https://coveralls.io/r/nicfit/MishMash
:alt: Coverage Status
Release History
===============
v0.3b12 (2019-01-12)
------------------------
New
~~~
- `mishmash web`: Image HTTP cache headers
- `mishmash web`: Added --port arg.
- Added gevent and gunicorn to `web` requirements (and docker image) to allow
for SSL etc.
Changes
~~~~~~~
- Default sqlite database is now $CWD/mishmash.db.
Fix
~~~
- Pyaml >= 4.2b1 for security alert.
- Don't override web port from config file.
v0.3b11 (2018-12-16)
------------------------
- Run unsonic from `mishmash server`
- Venv-less docker.
v0.3b10 (2018-12-15)
------------------------
New
~~~~~
- `mishmash server`
- Bootstrap4 update.
Fix
~~~
- Fix album sorts for missing dates.
- Various artist support.
v0.3b9 (2018-12-15)
------------------------
Fix
~~~
- Fix album sorts for missing dates.
- Various artist support.
v0.3b9 (2018-12-02)
------------------------
New
~~~
- Split-artist docs.
- `mishmash web` albums view.
- `mishmash web` artist filters.
Fix
~~~
- Database URL obfuscation is more reliable.
v0.3b8 (2018-11-28)
------------------------
New
~~~
- Added `MishMash(ConfigClass=clazz)` keyword argument.
v0.3b7 (2018-06-18)
------------------------
New
~~~
- More multi-lib supoort (merge, split, info)
Fix
~~~
- Return resolved album when a sync does not occur.
- Recent inotify uses Unicode natively, remove conversions to bytes.
- Pick up new image files when rescanning and no audio files changed.
Other
~~~~~
- Run make test targets thru tox. Travis-CI will do this in a future
commit.
v0.3b6 (2018-02-18)
--------------------
New
~~~
- Mishmash info -L/--library and --artists.
Changes
~~~~~~~
- Reduced sync stats precision.
- Nicfit.py 0.8 Command changes.
Fix
~~~
- Fix container fail to start issue (#242) <me@benschumacher.com>
- Added check for osx to avoid monitor mode (#260) <redshodan@gmail.com>
- Nicfit.py 0.8 config_env_var changes.
- Removed no-arg (nicfit.py) main test, test is done upstream.
v0.3b5 (2017-11-26) : I Need a Miracle
---------------------------------------
New
~~~
- Mishmash_cmd session-scoped fixture.
- Library 'excludes' option. Fixes #202.
- orm length limit constants
- More ORM limit tests, truncation, validation.
- Use mishmash.util.safeDbUrl for displayed/logged password obfuscation.
- Add Track.metadata_format and Track.METADATA_FORMATS.
Changes
~~~~~~~
- Moved VARIOUS_TYPE detection info _albumTypeHint.
less noise about lp->various conversion
- Close DB connections after commands.
- Better logging for debugging VARIOUS_TYPE coersion.
- Moved limit constants to each ORM class.
- Docker updates.
Fix
~~~
- PServeCommand requires .ini extension.
- Show used config files.
- Some (not all) truncation for colomn limits and \x00 handling.
- Make docker-publish.
- Dup config section error.
v0.3b4 (2017-05-14) : Triumph Of Death
-----------------------------------------
New
~~~
- Init(scope=False), for wrapped SessionMaker with
sqlalchemy.orm.scoped_session.
- Mishmash.web is optional, and packaged as extra [web] install.
- Mishmash.VARIOUS_ARTISTS_NAME == gettext("Various Artists")
Changes
~~~~~~~
- Removed various artist config and started gettext.
Fix
~~~
- Mishmash.web working again.
Other
~~~~~
- Update eyed3 from 0.8.0b1 to 0.8 (#108) <github-bot@pyup.io>
- Pin pyramid to latest version 1.8.3 (#94) <github-bot@pyup.io>
v0.3b3 (2017-04-09) : Prayers for Rain
---------------------------------------
New
~~~
- UTC sync times and per lib last_sync. Fixes #6, #7.
- Db test fixtures, etc.
Changes
~~~~~~~
- mishmash.data.init now returns the 3-tuple (engine, SessionMaker, connection).
Previously a 2-tuple, sans connection, was returned.
The new mishmash.database.DatebaseInfo namedtuple is the actual return type,
if you prefer not to unpack the return value.
v0.3b2 (2017-03-12) : Nine Patriotic Hymns For Children
-------------------------------------------------------
Fix
~~~
- Protect against not being the first to call
multiprocessing.set_start_method.
v0.3b1 (2017-03-12) : Nine Patriotic Hymns For Children
-------------------------------------------------------
New
~~~
- Mismash sync --monitor (using inotify)
- Test beginnings.
Changes
~~~~~~~
- Label_id renamed tag_id. Fixes #65.
- Mishmash.database.init accepts the DB URL as its first arguments, NO
LONGER a Config object.
Fix
~~~
- Postgres service on Travis-CI.
- Restored gitchangelog fork.
v0.3b0 (2017-02-26)
-------------------------
* Initial release
MishMash
========
|Build Status| |License| |PyPI| |Python versions| |Coverage| |Status|
Music database and web interface.
Features
--------
* MishMash is a music database using `Python`_ and `SQLAlchemy`_.
* A command-line tool for building and managing a music database.
* Web browser interface (using `Pyramid`_) for browsing your music library.
* Uses `eyeD3`_ for reading MP3s and ID3 metadata.
* Support and tested with Python 3.6 and Postgresql. SQLite is periodically
tested with, but future features may not be supported (e.g. full text
search).
* Free software: GNU GPL v3.0 license
.. _Python: https://www.python.org/
.. _SQLAlchemy: http://www.sqlalchemy.org/
.. _eyeD3: http://eyeD3.nicfit.net/
.. _Pyramid: https://trypyramid.com/
Getting Started
----------------
::
$ mishmash info
/\/\_____ .__ .__ _____ .__ /\/\
\(\( \ |__| _____| |__ / \ _____ _____| |__\(\(
/ \ / \| |/ ___/ | \ / \ / \\__ \ / ___/ | \
/ Y \ |\___ \| Y \/ Y \/ __ \_\___ \| Y \
\____|__ /__/____ >___| /\____|__ (____ /____ >___| /
\/ \/ \/ \/ \/ \/ \/
Version : 0.3
Database URL : sqlite:////~/mishmash.db
Database version : 0.3
Last sync : Never
Configuration files : <default>
=== Music library ===
0 music tracks
0 music artists
0 music albums
0 music tags
Surprise, you now have an empty sqlite database in the current directory.
Let's leave it here for now, it can be located elsewhere or use a different
database using command line arguments and/or environment variables. Pretty
useless without any music.::
$ mishmash sync ~/Music/Melvins
Syncing library 'Music': paths=['~/Music/Melvins/']
Syncing directory: ~/Music/Melvins/
Syncing directory: ~/Music/Melvins/1984 - Mangled Demos
Adding artist: Melvins
Syncing directory: ~/Music/Melvins/1986 - 10 Songs
Adding album: 10 Songs
Adding track: ~/Music/Melvins/1986 - 10 Songs/Melvins - 01 - Easy As It Was.mp3
Updating album: 10 Songs
...
== Library 'Music' sync'd [ 8.73s time (45.9 files/s) ] ==
401 files sync'd
401 tracks added
0 tracks modified
0 orphaned tracks deleted
0 orphaned artists deleted
0 orphaned albums deleted
Use your database as you wish. Browse it with `mishmash web`, or use one of its
management commands.
Check out the `Unsonic`_ project for streaming capabilities.
.. _Unsonic: https://github.com/redshodan/unsonic
.. |Build Status| image:: https://travis-ci.org/nicfit/MishMash.svg?branch=master
:target: https://travis-ci.org/nicfit/MishMash
:alt: Build Status
.. |PyPI| image:: https://img.shields.io/pypi/v/MishMash.svg
:target: https://pypi.python.org/pypi/MishMash/
:alt: Latest Version
.. |Python versions| image:: https://img.shields.io/pypi/pyversions/MishMash.svg
:target: https://pypi.python.org/pypi/MishMash/
:alt: Supported Python versions
.. |License| image:: https://img.shields.io/pypi/l/MishMash.svg
:target: https://pypi.python.org/pypi/MishMash/
:alt: License
.. |Status| image:: https://img.shields.io/pypi/status/MishMash.svg
:target: https://pypi.python.org/pypi/MishMash/
:alt: Project Status
.. |Coverage| image:: https://coveralls.io/repos/nicfit/MishMash/badge.svg
:target: https://coveralls.io/r/nicfit/MishMash
:alt: Coverage Status
Release History
===============
v0.3b12 (2019-01-12)
------------------------
New
~~~
- `mishmash web`: Image HTTP cache headers
- `mishmash web`: Added --port arg.
- Added gevent and gunicorn to `web` requirements (and docker image) to allow
for SSL etc.
Changes
~~~~~~~
- Default sqlite database is now $CWD/mishmash.db.
Fix
~~~
- Pyaml >= 4.2b1 for security alert.
- Don't override web port from config file.
v0.3b11 (2018-12-16)
------------------------
- Run unsonic from `mishmash server`
- Venv-less docker.
v0.3b10 (2018-12-15)
------------------------
New
~~~~~
- `mishmash server`
- Bootstrap4 update.
Fix
~~~
- Fix album sorts for missing dates.
- Various artist support.
v0.3b9 (2018-12-15)
------------------------
Fix
~~~
- Fix album sorts for missing dates.
- Various artist support.
v0.3b9 (2018-12-02)
------------------------
New
~~~
- Split-artist docs.
- `mishmash web` albums view.
- `mishmash web` artist filters.
Fix
~~~
- Database URL obfuscation is more reliable.
v0.3b8 (2018-11-28)
------------------------
New
~~~
- Added `MishMash(ConfigClass=clazz)` keyword argument.
v0.3b7 (2018-06-18)
------------------------
New
~~~
- More multi-lib supoort (merge, split, info)
Fix
~~~
- Return resolved album when a sync does not occur.
- Recent inotify uses Unicode natively, remove conversions to bytes.
- Pick up new image files when rescanning and no audio files changed.
Other
~~~~~
- Run make test targets thru tox. Travis-CI will do this in a future
commit.
v0.3b6 (2018-02-18)
--------------------
New
~~~
- Mishmash info -L/--library and --artists.
Changes
~~~~~~~
- Reduced sync stats precision.
- Nicfit.py 0.8 Command changes.
Fix
~~~
- Fix container fail to start issue (#242) <me@benschumacher.com>
- Added check for osx to avoid monitor mode (#260) <redshodan@gmail.com>
- Nicfit.py 0.8 config_env_var changes.
- Removed no-arg (nicfit.py) main test, test is done upstream.
v0.3b5 (2017-11-26) : I Need a Miracle
---------------------------------------
New
~~~
- Mishmash_cmd session-scoped fixture.
- Library 'excludes' option. Fixes #202.
- orm length limit constants
- More ORM limit tests, truncation, validation.
- Use mishmash.util.safeDbUrl for displayed/logged password obfuscation.
- Add Track.metadata_format and Track.METADATA_FORMATS.
Changes
~~~~~~~
- Moved VARIOUS_TYPE detection info _albumTypeHint.
less noise about lp->various conversion
- Close DB connections after commands.
- Better logging for debugging VARIOUS_TYPE coersion.
- Moved limit constants to each ORM class.
- Docker updates.
Fix
~~~
- PServeCommand requires .ini extension.
- Show used config files.
- Some (not all) truncation for colomn limits and \x00 handling.
- Make docker-publish.
- Dup config section error.
v0.3b4 (2017-05-14) : Triumph Of Death
-----------------------------------------
New
~~~
- Init(scope=False), for wrapped SessionMaker with
sqlalchemy.orm.scoped_session.
- Mishmash.web is optional, and packaged as extra [web] install.
- Mishmash.VARIOUS_ARTISTS_NAME == gettext("Various Artists")
Changes
~~~~~~~
- Removed various artist config and started gettext.
Fix
~~~
- Mishmash.web working again.
Other
~~~~~
- Update eyed3 from 0.8.0b1 to 0.8 (#108) <github-bot@pyup.io>
- Pin pyramid to latest version 1.8.3 (#94) <github-bot@pyup.io>
v0.3b3 (2017-04-09) : Prayers for Rain
---------------------------------------
New
~~~
- UTC sync times and per lib last_sync. Fixes #6, #7.
- Db test fixtures, etc.
Changes
~~~~~~~
- mishmash.data.init now returns the 3-tuple (engine, SessionMaker, connection).
Previously a 2-tuple, sans connection, was returned.
The new mishmash.database.DatebaseInfo namedtuple is the actual return type,
if you prefer not to unpack the return value.
v0.3b2 (2017-03-12) : Nine Patriotic Hymns For Children
-------------------------------------------------------
Fix
~~~
- Protect against not being the first to call
multiprocessing.set_start_method.
v0.3b1 (2017-03-12) : Nine Patriotic Hymns For Children
-------------------------------------------------------
New
~~~
- Mismash sync --monitor (using inotify)
- Test beginnings.
Changes
~~~~~~~
- Label_id renamed tag_id. Fixes #65.
- Mishmash.database.init accepts the DB URL as its first arguments, NO
LONGER a Config object.
Fix
~~~
- Postgres service on Travis-CI.
- Restored gitchangelog fork.
v0.3b0 (2017-02-26)
-------------------------
* Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
MishMash-0.3b12.tar.gz
(177.6 kB
view hashes)
Built Distributions
MishMash-0.3b12-py3.7.egg
(199.2 kB
view hashes)
MishMash-0.3b12-py3-none-any.whl
(158.9 kB
view hashes)
Close
Hashes for MishMash-0.3b12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7650f72105cf5cae8e6503ce910c4d477ccbfe81ce307920d484ee9078a32d46 |
|
MD5 | 84c1d6ad9d9437cae402e02e90966a27 |
|
BLAKE2b-256 | 4932fdb03527a97919c9ebc68c599c08460b577b3a5860b192feef0848e26c35 |