Commit Graph

151 Commits

Author SHA1 Message Date
jo 1e6c5a84d3 style: format code using black 2023-02-01 11:20:32 +01:00
jo bd76971312 style: format code using black 2023-02-01 11:17:49 +01:00
jo 715144a92d chore: move isort config to pyproject.toml 2023-01-16 08:42:23 +02:00
jo 14beb885a3 chore: split test and coverage tasks 2023-01-16 08:42:23 +02:00
jo 37ba9d0986 chore: release 3.0.1 2022-12-20 16:27:29 +01:00
jo 86ceac76d8 chore: release 3.0.1 2022-12-20 16:16:30 +01:00
jo f394336efc chore: move isort config to pyproject.toml 2022-12-07 15:59:52 +02:00
jo 5738edb49c chore: split test and coverage tasks 2022-12-07 15:59:52 +02:00
Jonas L 696666475c
fix: remove systemd ProtectHome feature (#2244)
Fix #2242
2022-10-19 12:37:39 +02:00
Jonas L 959c0378d6
fix: remove systemd ProtectHome feature (#2243)
Fix #2242
2022-10-19 12:27:02 +02:00
jo 0e1dfaa9ff refactor: upgrade code to Python 3.8 2022-10-11 09:28:52 +02:00
jo ea8131ec43 feat: drop Python 3.7 support 2022-10-10 23:49:10 +02:00
jo 7d514a9306 chore: list distribution releases by release date
Old releases should be popped from the left/top and new releases should be added to the right/bottom of any distro release list.
2022-10-10 20:11:33 +02:00
jo 5eda6093f4 feat: drop Debian Buster support
Fixes #2036
2022-10-10 20:11:33 +02:00
jo d29d837d01 feat: drop Python 3.6 support 2022-10-10 20:11:33 +02:00
jo 448cff7600 feat: drop Ubuntu Bionic support
Fixes #2035
2022-10-10 20:11:33 +02:00
Jonas L 96ded62c32
chore: release 3.0.0 (#2216) 2022-10-10 17:51:15 +02:00
jo d726a097b0 test(analyzer): fix wrong bit_rate values
Mutagen >=1.46 properly compute the bit_rate for wav files.
2022-10-10 12:21:55 +02:00
renovate[bot] 019b4686ae chore(deps): update dependency mutagen to >=1.45.1,<1.47 2022-10-10 12:21:55 +02:00
jo 04490676f6 chore: release 3.0.0-beta.2 2022-10-03 12:43:38 +02:00
Jonas L c9bc3a1298
feat: extra systemd service hardening (#2197) 2022-09-27 13:17:43 +02:00
Jonas L 4c18cf5ef2
feat: systemd service hardening (#2186) 2022-09-27 11:51:17 +02:00
jo ddae3202cc chore: release 3.0.0-beta.1 2022-09-23 13:41:14 +02:00
jo bdc2e92454 chore: release 3.0.0-beta.0 2022-09-16 16:32:00 +02:00
Jonas L 45a131b668
chore: update outdated readmes (#2131) 2022-09-12 20:45:37 +02:00
jo 2afb766b41 chore: outdated python packages versions 2022-09-12 10:48:43 +02:00
Jonas L 8b5749ec98
ci: build test images for debian bookworm (#2097) 2022-09-07 23:17:46 +02:00
Jonas L 9a8011a12f
test(analyzer): analyze large audio files (#2050) 2022-09-06 13:11:19 +02:00
jo cfcfcc82e4 chore: revert pin setuptools to <64.0.0 for build backend
This reverts commit 2bde574487.
2022-08-25 09:51:36 +02:00
Jonas L 1147853c63
feat(shared): pass config data via init (#2042) 2022-08-12 15:12:39 +02:00
jo 2bde574487 chore: pin setuptools to <64.0.0 for build backend 2022-08-11 22:16:00 +02:00
jo dc30d8836b refactor(analyzer): rewrite analyze playability 2022-08-09 21:07:07 +02:00
jo 04e5a7e404 feat(analyzer): override paths using env variables
Allow overriding FFMPEG, FFPROBE, or LIQUIDSOAP paths using env variables.
2022-08-09 21:07:07 +02:00
Jonas L 1b93b7645e
refactor(analyzer): fix linting errors (#2029) 2022-08-09 20:49:04 +02:00
Jonas L b465629977
chore: disable pylint logging-fstring-interpolation format (#2033) 2022-08-09 20:30:44 +02:00
Jonas L 140cf4427b
test: enable logs when running pytest (#2008) 2022-07-31 11:23:27 +02:00
jo 22868ce158 chore: remove chdir in setup.py files 2022-07-27 15:35:57 +02:00
jo b93e1e5570 chore: install local python deps in editable mode 2022-07-27 15:35:57 +02:00
Jonas L 067b35e9bb
feat(analyzer): load callback details from config and file_id (#1993) 2022-07-26 14:19:22 +02:00
jo c395fd7f0a chore(analyzer): install missing requests types 2022-07-25 21:24:47 +02:00
jo 7bd369f20c refactor(analyzer): fix linting 2022-07-25 21:24:47 +02:00
jo 0babe0f243 chore(analyzer): clean old comments 2022-07-25 21:24:47 +02:00
jo 58230b7974 refactor(analyzer): remove unused import 2022-07-25 21:24:47 +02:00
jo fc53636c37 fix(analyzer): remove outdated urllib3 workaround 2022-07-25 21:24:47 +02:00
Jonas L 77f5c9951e
chore: improve setuptools find_packages (#1985) 2022-07-25 21:19:41 +02:00
jo b2e8fcf36b chore(analyzer): update pika version range 2022-07-17 21:25:37 +02:00
jo 30c202786f chore: update requests version range 2022-07-17 21:25:37 +02:00
jo f256f9bd10 chore: update mutagen version range 2022-07-17 21:25:37 +02:00
jo 80218f33eb chore: rewrite extract-requirements to python
Using python ast to guess requirements in the setup.py file.
2022-07-17 21:25:37 +02:00
jo 2f205544c2 feat: use dedicated 'libretime' user
BREAKING CHANGE: The default `www-data` user has been replaced by a dedicated  `libretime` user to run the services. Be sure to change the ownership of the libretime files.
2022-07-07 10:51:07 +02:00
jo be9f36dbdc feat(analyzer): move compute_md5 to shared library 2022-06-28 19:05:14 +02:00
jo 510e978952 feat: add systemd libretime.target
- add wanted by
- instantly start services in vagrant
2022-06-08 23:23:08 +02:00
jo ee98387264 feat(installer): rewrite install script
- remove unused root packages.ini
- write config to yaml file
- allow to set public_url during install
- force icecast start right after package install
- move config file in place at the end of installation

BREAKING CHANGE: The bash installer has been rewritten, the flags and
options changed, please run `./install --help` to get more details.
2022-06-08 23:23:08 +02:00
jo aed6d2f294 feat: change config dir path to /etc/libretime
BREAKING: The configuration directory changed from `/etc/airtime` to
`/etc/libretime`. Please rename your configuration directory accordingly.
2022-06-08 23:23:08 +02:00
jo 604ff20239 feat: change config filename to config.yml
BREAKING: The configuration file name changed from `airtime.conf` to
`config.yml`. Please rename your configuration file accordingly.
2022-06-08 23:23:08 +02:00
Jonas L d098671f3b
feat: replace click envar with auto_envvar_prefix (#1829) 2022-05-05 09:41:32 +02:00
jo 561ba7fbf0 test(analyzer): recent liquidsoap version do not fail playability check 2022-04-09 19:23:45 +02:00
Jonas L 74b9c61deb
chore(analyzer): move python3-pika in the python section (#1746) 2022-04-09 14:35:28 +00:00
Jonas L 5f4badcdeb
ci: build test images for ubuntu jammy (#1743) 2022-04-09 16:18:12 +02:00
Jonas L 8c96c0a094
feat: remove unused python3-venv package (#1728) 2022-04-02 05:41:43 +02:00
Jonas L d55e58e416
chore: auto generate requirements.txt (#1651)
- force LC_ALL for the sort command
2022-02-28 20:02:01 +02:00
jo f24996e144 chore(analyzer): remove unused dependency 2022-02-25 11:42:28 +02:00
jo 977b499d5e fix(analyzer): update docstring for organise_file 2022-02-20 22:11:00 +02:00
jo d4ffaf9a89 feat(analyzer): rework organise_file using pathlib
- use uuids instead of datetime
- massively using pathlib to manipulate paths
2022-02-20 22:03:59 +02:00
jo dac09869f3 test(analyzer): use pathlib for tmp paths 2022-02-20 22:03:59 +02:00
jo 8113077fd9 chore: fix broken links 2022-02-16 15:01:25 +02:00
jo 7c354f52f4 test(analyzer): set test logging level to trace 2022-02-16 10:13:00 +02:00
jo 88dcd13fc8 feat(analyzer): rework analyze_metadata step
- Upgrade mutagen to 1.45.1
- Remove custom wave data extraction
- Add .wav and ogg without extension fixtures
- Move md5 sum and mime type in there own function
- Cleanup comments
- Let analyze_cuepoints handle cuein and cueout metadata
- Remove python magic mime guessing
2022-02-16 10:13:00 +02:00
Jonas L 0106b4c6cb
fix(analyzer): remove bad attributes in shutdown handler (#1605)
Fixes #1278
2022-02-15 16:40:01 +02:00
jo 29511cfd2d test(analyzer): fix inconsistent return statement 2022-02-15 16:39:04 +02:00
jo c6124b4012 chore(analyzer): move ffmpeg and utils modules to pipeline 2022-02-15 16:39:04 +02:00
jo 8040d9a6c5 feat(analyzer): do verify ssl certs on requests
BREAKING CHANGE: Analyzer no longer ignore certificate verification when
performing a request. We recommand using Letsencrypt to get a certificat.
If you do rely on self signed certificat, please read the requests
documentation to provide a CA Bundle to verify the cert using
environement variables.
2022-02-14 12:44:17 +02:00
jo a73dacc6b5 chore(analyzer): add bandit linter to analyzer 2022-02-14 12:44:17 +02:00
Jonas L cba905e367
refactor(analyzer): improve analyzer pipeline module (#1542)
* rename steps to pipeline module

* move pipeline entrypoint to pipeline module

* rename steps test module to pipeline

* fix paths after renames

* move step protocol to pipeline

* create pipeline status enum

* use Protocol from typing extensions

* Fix linting
2022-01-28 07:09:19 +02:00
jo 32cb67806a chore: add pyupgrade pre-commit hook
- add --py3-plus flag to pyupgrade hook
- add --py36-plus flag to pyupgrade hook
2022-01-27 10:37:48 +02:00
jo 9de82bb568 chore: make linters config consistent in pyproject.toml
- remove mypy config from makefile
2022-01-26 10:15:35 +02:00
jo 7988b7467b test: allow to set python linters to fail per app 2022-01-26 10:15:35 +02:00
jo 0f8cb1a5ed chore: set python build system in pyproject.toml
- fix local package install
- local packages requirement url format
2022-01-26 10:15:35 +02:00
jo 441028a1d2 chore: make setup.py file chdir consistent 2022-01-26 10:15:35 +02:00
Jonas L 1924919e18
fix(shared): type is required for default config submodel (#1536)
We cannot load submodels values from environment variables without having the submodel type annotations.
2022-01-24 15:24:16 +02:00
jo d93fb44356 feat(analyzer): analyze cuepoint using ffmpeg
- store cue(in|out) as strings
- reraise when executable was not found

BREAKING CHANGE: The analyzer requires 'ffmpeg'. The 'silan' system dependency can be removed.
2022-01-24 12:54:31 +02:00
jo ceab19271d feat(analyzer): analyze replaygain using ffmpeg
- remove pycairo pip install
- fix py36 compatibility
- reraise when executable was not found

BREAKING CHANGE: The analyzer requires 'ffmpeg'. The 'rgain3' python package and it's system dependencies can be removed.
2022-01-24 12:54:31 +02:00
jo bf7b0d44fb test(analyzer): update fixtures
- add fixture with > 2 silences
2022-01-24 12:54:31 +02:00
jo 6a919a9805 test(analyzer): rename and remove unused imports 2022-01-24 12:54:31 +02:00
jo 522d989cab fix(analyzer): install missing steps package 2022-01-21 11:54:00 +02:00
jo aa2d1ff4c7 refactor(analyzer): simplify entrypoint
The AbstractApp only make it more complex.
2022-01-21 11:54:00 +02:00
jo 35d38df9d3 feat(analyzer): load config using shared helpers
- make rabbitmq config optional
2022-01-21 11:54:00 +02:00
Jonas L 1561353b20
feat(shared): allow cli parametrized decorators (#1527) 2022-01-20 07:30:35 +02:00
jo 2cae31a97a refactor(analyzer): redefine *_analyzer into steps
- update imports and names
- define step as a protocol
- extract analyzer function from classes
2022-01-18 11:18:19 +02:00
jo f6a52c8324 refactor(analyzer): rename analyzer files 2022-01-18 11:18:19 +02:00
Jonas L fe0b2c4a7a
feat(analyzer): enhance analyzer cli and logging (#1507)
Some initial work on modernizing the analyzer app. This replace any custom logger or `logging` based logger with the logging tools from `libretime_shared.logging` and `loguru`.

- rename cli to main
- use pathlib in setup.py
- add api-client and shared package as dev deps
- rework main entrypoint cli to use click and shared helpers
- remove unused imports
- replace logging with logger
- rework analyzer app using shared abstract app
- move analyzer log path to systemd service
- change analyzer working dir

BREAKING CHANGE: The analyzer cli has been reworked and uses new flags / environnement variables for configuration.
`--debug` flag becomes `--log-level <level>`
`--rmq-config-file` flag becomes `--config <filepath>`
`--http-retry-queue-file` flag becomes `--retry-queue-filepath`.
`retry-queue-filepath` default value changed from `/tmp/airtime_analyzer_http_retries` to `retry_queue` in the working dir.
`LIBRETIME_CONF_DIR` environnement variable replaced by `LIBRETIME_CONFIG_FILEPATH`.

BREAKING CHANGE: When running analyzer as a systemd service, the working directory is now /var/lib/libretime/analyzer.
2022-01-17 10:26:30 +02:00
Jonas L 0d25a330cf
chore: rename common section to python (#1509)
this will make the section more explicite,
in addition, this allow to exclude python deps
on docker images for example.
2022-01-13 07:12:50 +02:00
jo 02efadc3d0 chore: fixes after libretime_analyzer rename 2022-01-04 09:18:58 +02:00
jo 62476de478 chore: rename airtime_analyzer dir to libretime_analyzer 2022-01-04 09:18:58 +02:00
Jonas L 4057c88cf0
feat: debian 11 support (#1292)
* Debian 11 Support

Run api ci test on bullseye as well

* Silan does not work for mp3 on bullseye

* Liquisoap does not fail with wma files on bullseye
2021-11-09 11:21:40 +02:00
Kyle Robbertze 7182390000
feat: add support for Ubuntu Focal 20.04 (#1168)
Co-authored-by: Valerio Bozzolan <gnu@linux.it>
2021-11-04 09:55:50 +02:00
dependabot[bot] ccde6039e7
Bump php-amqplib/php-amqplib from 2.12.3 to 3.0.0 in /legacy (#1418)
* Bump php-amqplib/php-amqplib from 2.12.3 to 3.0.0 in /legacy

Bumps [php-amqplib/php-amqplib](https://github.com/php-amqplib/php-amqplib) from 2.12.3 to 3.0.0.
- [Release notes](https://github.com/php-amqplib/php-amqplib/releases)
- [Changelog](https://github.com/php-amqplib/php-amqplib/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-amqplib/php-amqplib/compare/v2.12.3...v3.0.0)

---
updated-dependencies:
- dependency-name: php-amqplib/php-amqplib
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Replace deprecated AMQPConnection with AMQPStreamConnection

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jo <ljonas@riseup.net>
2021-10-17 21:55:12 +02:00
dependabot[bot] d61fae8cfa
Bump rgain3 from 1.1.0 to 1.1.1 in /analyzer (#1411)
Bumps [rgain3](https://github.com/chaudum/rgain) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/chaudum/rgain/releases)
- [Changelog](https://github.com/chaudum/rgain3/blob/1.1.1/CHANGES.md)
- [Commits](https://github.com/chaudum/rgain/compare/1.1...1.1.1)

---
updated-dependencies:
- dependency-name: rgain3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-17 18:50:43 +02:00
Jonas L 30b3470a06
Better format enforcing (#1391)
* Add shared python format-check target

* Add .format-check to api lint target

* Format api code with makefile format target

* Add .format-check to tools lint target

* Add .format-check to analyzer lint target

* Format analyzer code with makefile format target

* Add .format-check to celery lint target

* Add .format-check to api_client lint target

* Format api_client code with makefile format target

* Add .format-check to playout lint target

* Run CI linting in parallel

* Disable isort in pre-commit
2021-10-17 16:24:37 +02:00
jo 08f13d850c Update paths after analyzer move 2021-10-17 08:02:47 +00:00