techrec/README.md
boyska 49008d0e93 back to the old way of running
it's simpler for us to make logging and setup work in this way
2021-08-25 11:50:34 +02:00

69 lines
2.2 KiB
Markdown

TechRec
=======
A Python3 web application that assist radio speakers in recording their shows.
Meant to be simple to install and to maintain.
It basically takes a directory with the continuous recording and create new
files "cutting/pasting" with ffmpeg.
Features
=========
* little system dependencies: python3 and ffmpeg
* The interface is extremely simple to use
* Supports nested recording (ie: to record an interview inside of a whole
show)
* There is no user system: any user opening the website will see the complete
status of the applications. There is, also, nothing stored in cookie or
similar mechanisms. This means that recording a session does not require a
browser to remain open, or any kind of persistence client-side: server-side
does it all. It also means that authorization must be done on another layer
(for example, your webserver could add a Basic Auth)
How does it work
================
We suppose that you have a continous recording of your radio broadcasting.
What techrec does is taking files from this directory and "cutting/pasting"
parts of them. This can boil down to something like
```sh
ffmpeg -i concat:2014-20-01-00-00.mp3|2014-20-01-00-01.mp3 -acodec copy -ss 160 -t 1840 foo.mp3
```
How to run
===========
```sh
pip install .
env TECHREC_CONFIG=yourconfig.py techrec serve
```
Implementation details
======================
It is based on [fastapi](https://fastapi.tiangolo.com/), a really nice
framework. Simple APIs are offered through it, and the static site uses them
through JS.
Jobs are not dispatched using stuff like celery, but just using
[`BackgroundTasks`](https://fastapi.tiangolo.com/tutorial/background-tasks/),
in order to keep the installation as simple as possible.
The encoding part is delegated to `ffmpeg`, but the code is really modular so
changing this is a breeze. To be quicker and avoid the quality issues related
to reencoding, the codec "copy" is used: this means that input and output must
have the same format.
testing
-----------
unit tests can be run with `python setup.py test`
screenshots
--------------
See screenshots at
[https://boyska.degenerazione.xyz/proj/techrec/](https://boyska.degenerazione.xyz/proj/techrec/)