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 ``` This continous recording needs to be configured so that: - It can be split in multiple directories, but the granularity of this must be below one directory per day. - The filename must be fully informative, without looking at the parent directories. 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 ----------- ``` gitlab-runner exec docker test ``` (or, `pytest-3`, assuming you have a properly configured system) screenshots -------------- See screenshots at [https://boyska.degenerazione.xyz/proj/techrec/](https://boyska.degenerazione.xyz/proj/techrec/)