rolabesti


Namerolabesti JSON
Version 0.5.3 PyPI version JSON
download
home_pagehttps://github.com/kinuax/rolabesti/
SummaryCLI application to manage a music collection of mp3 tracks
upload_time2024-03-25 22:07:13
maintainerNone
docs_urlNone
authorKinuax
requires_pythonNone
licenseGPLv2
keywords mp3 id3 vlc mongo
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            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"
}
        
Elapsed time: 0.24676s