rolabesti
=========
.. image:: https://img.shields.io/pypi/v/rolabesti.svg
:target: https://pypi.org/project/rolabesti/
.. image:: https://img.shields.io/pypi/pyversions/rolabesti.svg
:target: https://pypi.org/project/rolabesti/
.. image:: https://img.shields.io/pypi/wheel/rolabesti.svg
:target: https://pypi.org/project/rolabesti/
.. image:: https://circleci.com/gh/kinuax/rolabesti.svg?style=shield
:target: https://circleci.com/gh/kinuax/rolabesti
.. image:: https://img.shields.io/pypi/l/rolabesti.svg
:target: https://pypi.org/project/rolabesti/
- `Motivation <#motivation>`__
- `Description <#description>`__
- `Requirements <#requirements>`__
- `Installation <#installation>`__
- `Configuration <#configuration>`__
- `Usage <#usage>`__
Motivation
----------
The main motivation is to solve the scenario where some music fan, DJ, bartender, or melomaniac may face: 'Considering these tons of mp3 files around, what music do I play?'. For instance, 'what genre would I want to listen?' and 'which random songs can fill up the available time that I have?' are the type of questions that **rolabesti** answers.
Description
-----------
**rolabesti** is a CLI application to manage a music library, performing the following actions on mp3 files: loading to database, parsing, searching, playing, enqueueing, copying, and tagging.
Requirements
------------
- Linux platform.
- Python 3.7+. A virtual environment is highly recommended.
- MongoDB instance.
- vlc player.
Installation
------------
.. code-block:: bash
$ pip install rolabesti
Configuration
-------------
The default settings can be overriden in ``~/.config/rolabesti/rolabesti.conf``. This configuration file has INI syntax with a unique section named ``[rolabesti]``.
- ``MUSIC_DIR``: path where the mp3 files are located, default is ``~/Music``.
- ``MAX_TRACK_LENGTH``: maximum track length in minutes, corresponding to the ``MAX`` argument, default is ``10``.
- ``MIN_TRACK_LENGTH``: minimum track length in minutes, corresponding to the ``MIN`` argument, default is ``0``.
- ``MAX_TRACKLIST_LENGTH``: maximum tracklist length in minutes, corresponding to the ``MAX_TRACKLIST_LENGTH`` argument - ``0`` denotes no tracklist length limit, default is ``60``.
- ``SORTING``: tracklist sorting by trackpath, corresponding to the ``SORTING`` argument - choices are ``asc`` (ascending), ``desc`` (descending) and ``random``, default is ``random``.
- ``PLAYER``: player to play and enqueue tracks, corresponding to the ``PLAYER`` argument - choices are ``shell`` (play tracks directly in the shell) and ``vlc`` (play tracks in the vlc player, opening it if necessary), default is ``vlc``.
- ``OVERLAP_LENGTH``: when selecting ``shell`` player, overlap length in seconds of two consecutive tracks, corresponding to the ``OVERLAP_LENGTH`` argument - minimum is ``0``, maximum is ``30``, default is ``3``. The overlap length determines the period where the last seconds of the previous track and the first seconds of the next track are playing simultaneously.
- ``MONGO_HOST``: MongoDB host, default is ``localhost``.
- ``MONGO_PORT``: MongoDB port, default is ``27017``.
- ``MONGO_DBNAME``: MongoDB database name, default is ``rolabesti``.
- ``MONGO_COLNAME``: MongoDB collection name, default is ``tracks``.
Before running the application, locating the mp3 files in ``MUSIC_DIR`` is enough. Besides, the searching results become more accurate when the track path has one of following patterns.
- ``MUSIC_DIR/Places/<place>/Genres/<genre>/Albums/<album>/[<side>/]<title>.mp3``
- ``MUSIC_DIR/Places/<place>/Genres/<genre>/<artist>/<album>/[<side>/]<title>.mp3``
- ``MUSIC_DIR/Places/<place>/Genres/<genre>/<artist>/<title>.mp3``
- ``MUSIC_DIR/Places/<place>/Genres/<genre>/`<title>.mp3``
- ``MUSIC_DIR/Places/<place>/Albums/<album>/[<side>/]<title>.mp3``
- ``MUSIC_DIR/Places/<place>/<artist>/<album>/[<side>/]<title>.mp3``
- ``MUSIC_DIR/Places/<place>/<artist>/<title>.mp3``
- ``MUSIC_DIR/Places/<place>/<title>.mp3``
- ``MUSIC_DIR/Genres/<genre>/Albums/<album>/[<side>/]<title>.mp3``
- ``MUSIC_DIR/Genres/<genre>/<artist>/<album>/[<side>/]<title>.mp3``
- ``MUSIC_DIR/Genres/<genre>/<artist>/<title>.mp3``
- ``MUSIC_DIR/Genres/<genre>/<title>.mp3``
- ``MUSIC_DIR/Artists/<artist>/<album>/[<side>/]<title>.mp3``
- ``MUSIC_DIR/Artists/<artist>/<title>.mp3``
- ``MUSIC_DIR/Albums/<album>/[<side>/]<title>.mp3``
- ``MUSIC_DIR/[some/path/]<title>.mp3``
``<place>``, ``<genre>``, ``<artist>``, ``<album>``, ``<side>`` and ``<title>`` are placeholders of any length and character. The square brackets denote optional.
The database is loaded with tracks metadata running the ``load`` subcommand.
.. code-block:: bash
$ rolabesti load
When selecting ``vlc`` player, unique running instance configuration is recommended.
- Tools/Preferences/Interface/Playlist and Instances
- Allow only one instance: ``checked``
- Enqueue items into playlist in one instance mode: ``checked``
Usage
-----
.. code-block:: bash
$ rolabesti [-h] SUBCOMMAND [ARGUMENTS]
You can check the arguments for each subcommand with:
.. code-block:: bash
$ rolabesti SUBCOMMAND -h
Let's see a couple of examples.
To play two hours of rock music, limiting the track length to 10 minutes, with random sorting:
.. code-block:: bash
$ rolabesti play -g rock -l 120 --max 10 -s random
To play an hour of rap music from Iceland, skipping intro and outro tracks (less than 2 minutes length), with ascending sorting:
.. code-block:: bash
$ rolabesti play -g rap -l 60 -p Iceland --min 2 -s asc
Raw data
{
"_id": null,
"home_page": "https://github.com/kinuax/rolabesti/",
"name": "rolabesti",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "mp3 id3 vlc mongo",
"author": "Kinuax",
"author_email": "kinuax@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/b9/d5/9f2943daa28f3fd180dd9a2a39b0b31354e69ec3d6ba114cd64f106e86ef/rolabesti-0.5.3.tar.gz",
"platform": null,
"description": "rolabesti\n=========\n\n.. image:: https://img.shields.io/pypi/v/rolabesti.svg\n :target: https://pypi.org/project/rolabesti/\n\n.. image:: https://img.shields.io/pypi/pyversions/rolabesti.svg\n :target: https://pypi.org/project/rolabesti/\n\n.. image:: https://img.shields.io/pypi/wheel/rolabesti.svg\n :target: https://pypi.org/project/rolabesti/\n\n.. image:: https://circleci.com/gh/kinuax/rolabesti.svg?style=shield\n :target: https://circleci.com/gh/kinuax/rolabesti\n\n.. image:: https://img.shields.io/pypi/l/rolabesti.svg\n :target: https://pypi.org/project/rolabesti/\n\n- `Motivation <#motivation>`__\n- `Description <#description>`__\n- `Requirements <#requirements>`__\n- `Installation <#installation>`__\n- `Configuration <#configuration>`__\n- `Usage <#usage>`__\n\nMotivation\n----------\n\nThe main motivation is to solve the scenario where some music fan, DJ, bartender, or melomaniac may face: 'Considering these tons of mp3 files around, what music do I play?'. For instance, 'what genre would I want to listen?' and 'which random songs can fill up the available time that I have?' are the type of questions that **rolabesti** answers.\n\nDescription\n-----------\n\n**rolabesti** is a CLI application to manage a music library, performing the following actions on mp3 files: loading to database, parsing, searching, playing, enqueueing, copying, and tagging.\n\nRequirements\n------------\n\n- Linux platform.\n- Python 3.7+. A virtual environment is highly recommended.\n- MongoDB instance.\n- vlc player.\n\nInstallation\n------------\n\n.. code-block:: bash\n\n $ pip install rolabesti\n\nConfiguration\n-------------\n\nThe default settings can be overriden in ``~/.config/rolabesti/rolabesti.conf``. This configuration file has INI syntax with a unique section named ``[rolabesti]``.\n\n- ``MUSIC_DIR``: path where the mp3 files are located, default is ``~/Music``.\n- ``MAX_TRACK_LENGTH``: maximum track length in minutes, corresponding to the ``MAX`` argument, default is ``10``.\n- ``MIN_TRACK_LENGTH``: minimum track length in minutes, corresponding to the ``MIN`` argument, default is ``0``.\n- ``MAX_TRACKLIST_LENGTH``: maximum tracklist length in minutes, corresponding to the ``MAX_TRACKLIST_LENGTH`` argument - ``0`` denotes no tracklist length limit, default is ``60``.\n- ``SORTING``: tracklist sorting by trackpath, corresponding to the ``SORTING`` argument - choices are ``asc`` (ascending), ``desc`` (descending) and ``random``, default is ``random``.\n- ``PLAYER``: player to play and enqueue tracks, corresponding to the ``PLAYER`` argument - choices are ``shell`` (play tracks directly in the shell) and ``vlc`` (play tracks in the vlc player, opening it if necessary), default is ``vlc``.\n- ``OVERLAP_LENGTH``: when selecting ``shell`` player, overlap length in seconds of two consecutive tracks, corresponding to the ``OVERLAP_LENGTH`` argument - minimum is ``0``, maximum is ``30``, default is ``3``. The overlap length determines the period where the last seconds of the previous track and the first seconds of the next track are playing simultaneously.\n- ``MONGO_HOST``: MongoDB host, default is ``localhost``.\n- ``MONGO_PORT``: MongoDB port, default is ``27017``.\n- ``MONGO_DBNAME``: MongoDB database name, default is ``rolabesti``.\n- ``MONGO_COLNAME``: MongoDB collection name, default is ``tracks``.\n\nBefore running the application, locating the mp3 files in ``MUSIC_DIR`` is enough. Besides, the searching results become more accurate when the track path has one of following patterns.\n\n- ``MUSIC_DIR/Places/<place>/Genres/<genre>/Albums/<album>/[<side>/]<title>.mp3``\n- ``MUSIC_DIR/Places/<place>/Genres/<genre>/<artist>/<album>/[<side>/]<title>.mp3``\n- ``MUSIC_DIR/Places/<place>/Genres/<genre>/<artist>/<title>.mp3``\n- ``MUSIC_DIR/Places/<place>/Genres/<genre>/`<title>.mp3``\n- ``MUSIC_DIR/Places/<place>/Albums/<album>/[<side>/]<title>.mp3``\n- ``MUSIC_DIR/Places/<place>/<artist>/<album>/[<side>/]<title>.mp3``\n- ``MUSIC_DIR/Places/<place>/<artist>/<title>.mp3``\n- ``MUSIC_DIR/Places/<place>/<title>.mp3``\n- ``MUSIC_DIR/Genres/<genre>/Albums/<album>/[<side>/]<title>.mp3``\n- ``MUSIC_DIR/Genres/<genre>/<artist>/<album>/[<side>/]<title>.mp3``\n- ``MUSIC_DIR/Genres/<genre>/<artist>/<title>.mp3``\n- ``MUSIC_DIR/Genres/<genre>/<title>.mp3``\n- ``MUSIC_DIR/Artists/<artist>/<album>/[<side>/]<title>.mp3``\n- ``MUSIC_DIR/Artists/<artist>/<title>.mp3``\n- ``MUSIC_DIR/Albums/<album>/[<side>/]<title>.mp3``\n- ``MUSIC_DIR/[some/path/]<title>.mp3``\n\n``<place>``, ``<genre>``, ``<artist>``, ``<album>``, ``<side>`` and ``<title>`` are placeholders of any length and character. The square brackets denote optional.\n\nThe database is loaded with tracks metadata running the ``load`` subcommand.\n\n.. code-block:: bash\n\n $ rolabesti load\n\nWhen selecting ``vlc`` player, unique running instance configuration is recommended.\n\n- Tools/Preferences/Interface/Playlist and Instances\n - Allow only one instance: ``checked``\n - Enqueue items into playlist in one instance mode: ``checked``\n\nUsage\n-----\n\n.. code-block:: bash\n\n $ rolabesti [-h] SUBCOMMAND [ARGUMENTS]\n\nYou can check the arguments for each subcommand with:\n\n.. code-block:: bash\n\n $ rolabesti SUBCOMMAND -h\n\nLet's see a couple of examples.\n\nTo play two hours of rock music, limiting the track length to 10 minutes, with random sorting:\n\n.. code-block:: bash\n\n $ rolabesti play -g rock -l 120 --max 10 -s random\n\nTo play an hour of rap music from Iceland, skipping intro and outro tracks (less than 2 minutes length), with ascending sorting:\n\n.. code-block:: bash\n\n $ rolabesti play -g rap -l 60 -p Iceland --min 2 -s asc\n\n\n",
"bugtrack_url": null,
"license": "GPLv2",
"summary": "CLI application to manage a music collection of mp3 tracks",
"version": "0.5.3",
"project_urls": {
"Download": "https://github.com/kinuax/rolabesti/",
"Homepage": "https://github.com/kinuax/rolabesti/"
},
"split_keywords": [
"mp3",
"id3",
"vlc",
"mongo"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "09728ae5866c7a02e691281af5641ee38aeef3796a2126c9c6863a4db3150fbb",
"md5": "7ad4bcdd4295db7b3b58cec2580bcc19",
"sha256": "0b42ecbe6a36b7f40ec025b9c9dc77836bdb05fd4959a7049340deb0da1fdbd6"
},
"downloads": -1,
"filename": "rolabesti-0.5.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7ad4bcdd4295db7b3b58cec2580bcc19",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 23339,
"upload_time": "2024-03-25T22:07:10",
"upload_time_iso_8601": "2024-03-25T22:07:10.984478Z",
"url": "https://files.pythonhosted.org/packages/09/72/8ae5866c7a02e691281af5641ee38aeef3796a2126c9c6863a4db3150fbb/rolabesti-0.5.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b9d59f2943daa28f3fd180dd9a2a39b0b31354e69ec3d6ba114cd64f106e86ef",
"md5": "e50585290d0070fbc2d64acf2d3c28b6",
"sha256": "05a574b2723993e9678d424c5953bd145a7117f2bb5ae293d41ec2f669c9fdeb"
},
"downloads": -1,
"filename": "rolabesti-0.5.3.tar.gz",
"has_sig": false,
"md5_digest": "e50585290d0070fbc2d64acf2d3c28b6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13477,
"upload_time": "2024-03-25T22:07:13",
"upload_time_iso_8601": "2024-03-25T22:07:13.082505Z",
"url": "https://files.pythonhosted.org/packages/b9/d5/9f2943daa28f3fd180dd9a2a39b0b31354e69ec3d6ba114cd64f106e86ef/rolabesti-0.5.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-25 22:07:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kinuax",
"github_project": "rolabesti",
"travis_ci": true,
"coveralls": false,
"github_actions": false,
"circle": true,
"lcname": "rolabesti"
}