libretime/python_apps/airtime_analyzer
jo 18f9c81b74 Add dependencies manager
Used to generate list of packages dependencies
for different distributions, and should improve
dependencies management by having them in each project.
This tools should gather the reason why a dependency is present,
so one can remove it when unused.

Rename deps script to packages

Move installer/packages to scripts and write tests

Remove packages-list make target
2021-08-31 16:07:21 +02:00
..
airtime_analyzer Fix wildcard import 2021-06-08 14:24:32 +02:00
install Fix shellcheck warnings 2021-08-17 12:23:36 +02:00
tests Generate +/- dB files 2021-08-31 11:02:12 +02:00
tools Fix shellcheck warnings 2021-08-17 12:23:36 +02:00
MANIFEST.in CC-5709 / CC-5705 : Airtime Analyzer 2014-03-05 12:15:25 -05:00
Makefile Generate analyzer fixtures using ffmpeg 2021-08-30 21:23:38 +02:00
README.md refactor(airtime_analyzer): rename to libretime-analyzer and make entrypoint pythonic 2021-01-04 10:30:27 +00:00
packages.ini Add dependencies manager 2021-08-31 16:07:21 +02:00
requirements-dev.txt Update CI to run pytest 2021-06-08 14:28:16 +02:00
setup.py install pycairo before PyGObject 2021-07-15 10:27:23 +02:00

README.md

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

python setup.py install

You will need to allow the "airtime" RabbitMQ user to access all exchanges and queues within the /airtime vhost:

rabbitmqctl set_permissions -p /airtime airtime .\* .\* .\*

Usage

This program must run as a user with permissions to write to your Airtime music library directory. For standard Airtime installations, run it as the www-data user:

sudo -u www-data libretime-analyzer --daemon

Or during development, add the --debug flag for more verbose output:

sudo -u www-data libretime-analyzer --debug

To print usage instructions, run:

libretime-analyzer --help

This application can be run as a daemon by running:

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:

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:

php tools/message_sender.php '{ "tmp_file_path" : "foo.mp3", "final_directory" : ".", "callback_url" : "http://airtime.localhost/rest/media/1", "api_key" : "YOUR_API_KEY" }'

php tools/message_sender.php '{"tmp_file_path":"foo.mp3", "import_directory":"/srv/airtime/stor/imported/1","original_filename":"foo.mp3","callback_url": "http://airtime.localhost/rest/media/1", "api_key":"YOUR_API_KEY"}'

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:

nosetests

If you care about seeing console output (stdout), like when you're debugging or developing a test, run:

nosetests -s

To run the unit tests and generate a code coverage report, run:

nosetests --with-coverage --cover-package=airtime_analyzer

Running in a Multi-Tenant Environment

History and Design Motivation