Command-line application to manage a music collection of mp3 tracks
Project description
Motivation
The main motivation is to answer a question that music fans, DJs, bartenders and melomaniacs with tons of audio files may face: ‘What music do I play?’ That is, ‘what genre do I want now?’ or ‘which random songs can fill up the time I am able to listen?’ are the type of questions that rolabesti replies.
Description
rolabesti is a command-line 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 environment.
Python 3.3+. A virtual environment is recommended.
MongoDB instance.
vlc player. When selecting shell player, only the libvlc library is required.
Installation
$ 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, 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 between two consecutive tracks, corresponding to the OVERLAP_LENGTH argument; minimum is 0, maximum is 30, default is 3.
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 path to the track has one of these patterns. <place>, <genre>, <artist>, <album>, <side> and <title> are placeholders of any length and character. The square brackets denote optional.
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>/Albums/<album>/[<side>/]<title>.mp3
MUSIC_DIR/Places/<place>/<artist>/<album>/[<side>/]<title>.mp3
MUSIC_DIR/Places/<place>/<artist>/<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
The database is loaded with tracks metadata running the load subcommand.
$ 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
$ rolabesti [-h] SUBCOMMAND [ARGUMENTS]
You can check the arguments for each subcommand with:
$ 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:
$ 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:
$ rolabesti play -g rap -l 60 -p Iceland --min 2 -s asc
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
Built Distribution
Hashes for rolabesti-0.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7e0bb0732daa78a627fcba2c7ac45914ade494131960d05c766181741286352 |
|
MD5 | 5bb534e2e0ffdf753b4c30b2280892da |
|
BLAKE2b-256 | b8c37760b47f1abd813c0591d9df15486bd672c641307ff60d79a72775249f14 |