2020-12-30 14:17:50 +01:00
|
|
|
# libretime-analyzer
|
|
|
|
|
|
|
|
libretime-analyzer is a daemon that processes LibreTime file uploads as background jobs.
|
|
|
|
|
|
|
|
It performs metadata extraction using Mutagen and moves uploads into LibreTime's
|
|
|
|
music library directory (stor/imported).
|
|
|
|
|
|
|
|
libretime-analyzer uses process isolation to make it resilient to crashes and runs in
|
|
|
|
a multi-tenant environment with no modifications.
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
```bash
|
|
|
|
python setup.py install
|
|
|
|
```
|
|
|
|
|
|
|
|
You will need to allow the "airtime" RabbitMQ user to access all exchanges and queues within the /airtime vhost:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
rabbitmqctl set_permissions -p /airtime airtime .\* .\* .\*
|
|
|
|
```
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
This program must run as a user with permissions to write to your Airtime music library
|
2022-07-06 16:21:40 +02:00
|
|
|
directory. For standard Airtime installations, run it as the libretime user:
|
2020-12-30 14:17:50 +01:00
|
|
|
|
|
|
|
```bash
|
2022-07-06 16:21:40 +02:00
|
|
|
sudo -u libretime libretime-analyzer --daemon
|
2020-12-30 14:17:50 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
Or during development, add the --debug flag for more verbose output:
|
|
|
|
|
|
|
|
```bash
|
2022-07-06 16:21:40 +02:00
|
|
|
sudo -u libretime libretime-analyzer --debug
|
2020-12-30 14:17:50 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
To print usage instructions, run:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
libretime-analyzer --help
|
|
|
|
```
|
|
|
|
|
|
|
|
This application can be run as a daemon by running:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
libretime-analyzer -d
|
|
|
|
```
|
|
|
|
|
|
|
|
# Developers
|
|
|
|
|
|
|
|
For development, you want to install libretime-analyzer system-wide but with everything symlinked back to the source
|
|
|
|
directory for convenience. This is super easy to do, just run:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
pip install -r requirements-dev.txt
|
|
|
|
pip install --editable .
|
|
|
|
```
|
|
|
|
|
|
|
|
To send an test message to libretime-analyzer, you can use the message_sender.php script in the tools directory.
|
|
|
|
For example, run:
|
|
|
|
|
|
|
|
```bash
|
2022-02-16 09:48:01 +01:00
|
|
|
php tools/message_sender.php '{ "tmp_file_path" : "foo.mp3", "final_directory" : ".", "callback_url" : "http://localhost/rest/media/1", "api_key" : "YOUR_API_KEY" }'
|
2020-12-30 14:17:50 +01:00
|
|
|
|
2022-02-16 09:48:01 +01:00
|
|
|
php tools/message_sender.php '{"tmp_file_path":"foo.mp3", "import_directory":"/srv/airtime/stor/imported/1","original_filename":"foo.mp3","callback_url": "http://localhost/rest/media/1", "api_key":"YOUR_API_KEY"}'
|
2020-12-30 14:17:50 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
## Logging
|
|
|
|
|
|
|
|
By default, logs are saved to:
|
|
|
|
|
|
|
|
```
|
|
|
|
/var/log/airtime/airtime_analyzer.log
|
|
|
|
```
|
|
|
|
|
|
|
|
This application takes care of rotating logs for you.
|
|
|
|
|
|
|
|
## Unit Tests
|
|
|
|
|
|
|
|
To run the unit tests, execute:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
nosetests
|
|
|
|
```
|
|
|
|
|
|
|
|
If you care about seeing console output (stdout), like when you're debugging or developing
|
|
|
|
a test, run:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
nosetests -s
|
|
|
|
```
|
|
|
|
|
|
|
|
To run the unit tests and generate a code coverage report, run:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
nosetests --with-coverage --cover-package=airtime_analyzer
|
|
|
|
```
|
|
|
|
|
|
|
|
## Running in a Multi-Tenant Environment
|
|
|
|
|
|
|
|
## History and Design Motivation
|