translation

This commit is contained in:
bkfox 2022-05-21 16:37:11 +02:00
parent 8f0dd9d248
commit 478ce58c17
7 changed files with 361 additions and 271 deletions

View File

@ -2,16 +2,17 @@
Platform to manage a radio, schedules, website, and so on. We use the power of great tools like Django or Liquidsoap. Platform to manage a radio, schedules, website, and so on. We use the power of great tools like Django or Liquidsoap.
This project is distributed under GPL version 3. More information in the LICENSE file, except for some files whose license is indicated. This project is distributed under GPL version 3. More information in the LICENSE file, except for some files whose license is indicated inside source code.
## Features ## Features
* **streams**: multiple random music streams when no program is played. We also can specify a time range and frequency for each; * **streams**: multiple random music streams when no program is played. We also can specify a time range and frequency for each;
* **diffusions**: generate diffusions time slot for programs that have schedule informations. Check for conflicts and rerun. * **diffusions**: generate diffusions time slot for programs that have schedule informations. Check for conflicts and rerun.
* **liquidsoap**: create a configuration to use liquidsoap as a stream generator. Also provides interface and control to it; * **liquidsoap**: create a configuration to use liquidsoap as a stream generator. Also provides interface and control to it;
* **sounds**: each programs have a folder where sounds can be put, that will be detected by the system. Quality can be check and reported for later use. Later, we plan to have uploaders to external plateforms. Sounds can be defined as excerpts or as archives. * **sounds**: each programs have a folder for its podcast. Aircox detects updates, can run quality check, import related playlist (timestamped or position in track list). Sounds can be defined as excerpts or as archives.
* **cms**: application that can be used as basis for website;
* **log**: keep a trace of every played/loaded sounds on the stream generator. * **log**: keep a trace of every played/loaded sounds on the stream generator.
* **admin**: admin user interface.
* **cms**: content management system.
## Scripts ## Scripts
@ -27,8 +28,6 @@ and `gunicorn` in mind.
## Installation ## Installation
Later we plan to have an installation script to reduce the number of above steps.
### Dependencies ### Dependencies
For python dependencies take a peek at the `requirements.txt` file, plus For python dependencies take a peek at the `requirements.txt` file, plus
dependencies specific to Django (e.g. for database: `mysqlclient` for MySql dependencies specific to Django (e.g. for database: `mysqlclient` for MySql
@ -50,7 +49,7 @@ Development dependencies:
All scripts and files assumes that: All scripts and files assumes that:
- you have cloned aircox in `/srv/apps/` (such as `/srv/apps/aircox/README.md`) - you have cloned aircox in `/srv/apps/` (such as `/srv/apps/aircox/README.md`)
- you have a supervisor running (we have scripts for `supervisord`) - you have a supervisor running (we have scripts for `supervisord`)
- you want to use `gunicorn` as WSGI server (otherwise, you'll need to remove it from the requirement list) - you use `gunicorn` as WSGI server (otherwise, you'll need to remove it from the requirement list)
This installation process uses a virtualenv, including all provided scripts. This installation process uses a virtualenv, including all provided scripts.
@ -87,8 +86,7 @@ server from this directory:
./manage.py runserver ./manage.py runserver
``` ```
You can access to the django admin interface at `http://127.0.0.1:8000/admin` You can access to the django admin interface at `http://127.0.0.1:8000/admin`.
and to the cms interface at `http://127.0.0.1:8000/cms/`.
From the admin interface: From the admin interface:
* create a Station * create a Station
@ -96,8 +94,6 @@ From the admin interface:
* defines Outputs for the streamer (look at Liquidsoap documentation for * defines Outputs for the streamer (look at Liquidsoap documentation for
more information on how to configure it) more information on how to configure it)
TODO: cms related documentation here
Once the configuration is okay, you must start the *controllers monitor*, Once the configuration is okay, you must start the *controllers monitor*,
that creates configuration file for the audio streams using the new information that creates configuration file for the audio streams using the new information
and that runs the appropriate application (note that you dont need to restart it and that runs the appropriate application (note that you dont need to restart it
@ -107,5 +103,5 @@ If you use supervisord and our script with it, you can use the services defined
in it instead of running commands manually. in it instead of running commands manually.
## More informations ## More informations
There are extra informations in `aircox/README.md`. There are extra informations in `aircox/README.md` and `aircox_streamer/README.md`.

View File

@ -6,13 +6,11 @@ A Station contains programs that can be scheduled or streamed. A *Scheduled Prog
Each program has a directory on the server where user puts its podcasts (in **AIRCOX_PROGRAM_DIR**). It contains the directories **archives** (complete show's podcasts) and **excerpts** (partial or whatever podcasts). Each program has a directory on the server where user puts its podcasts (in **AIRCOX_PROGRAM_DIR**). It contains the directories **archives** (complete show's podcasts) and **excerpts** (partial or whatever podcasts).
## manage.py's commands ## manage.py's commands
* **diffusions**: update/create, check and clean diffusions based on programs schedules; * `diffusions`: update/create, check and clean diffusions based on programs schedules;
* **import_playlist**: import a playlist from a csv file, and associate it to a sound; * `import_playlist`: import a playlist from a csv file, and associate it to a sound;
* **sound_monitor**: check for existing and missing sounds files in programs directories and synchronize the database. It can check for the quality of file and update sound info. * `sounds_monitor`: check for existing and missing sounds files in programs directories and synchronize the database. It can check for the quality of file and update sound info.
* **sound_quality_check**: check for the quality of the file (don't update database); * `sounds_quality_check`: check for the quality of the file (don't update database);
* **streamer**: audio stream generation and control it;
## Requirements ## Requirements

File diff suppressed because it is too large Load Diff

18
aircox_streamer/README.md Normal file
View File

@ -0,0 +1,18 @@
# Aircox Streamer
This application handles interfacing Aircox with Liquidsoap:
- generate for each station liquidsoap configuration files;
- handle played diffusions, sounds files and tracks;
- launch program's diffusion from sound files;
- provide admin interface and API in order to control liquidsoap;
## Architecture
`aircox_streamer` Django application provides management command `streamer`, which
can be run in virtualenv from shell: ``./manage.py streamer``.
This application allows to:
- launch Liquidsoap;
- generate config file and playlists: regular Django template file in `scripts/station.liq`;
- monitor what is being played and what has to be played using Telnet to communicate
with Liquidsoap process;

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-31 18:34+0000\n" "POT-Creation-Date: 2022-05-21 14:30+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,91 +18,91 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: controllers.py:75 #: aircox_streamer/controllers.py:75
msgid "playing" msgid "playing"
msgstr "en cours de lecture" msgstr "en cours de lecture"
#: controllers.py:77 #: aircox_streamer/controllers.py:77
msgid "paused" msgid "paused"
msgstr "pause" msgstr "pause"
#: controllers.py:79 #: aircox_streamer/controllers.py:79
msgid "stopped" msgid "stopped"
msgstr "arrêt" msgstr "arrêt"
#: templates/aircox_streamer/source_item.html:18 #: aircox_streamer/templates/aircox_streamer/source_item.html:18
msgid "Edit related program" msgid "Edit related program"
msgstr "Éditer le programme correspondant" msgstr "Éditer le programme correspondant"
#: templates/aircox_streamer/source_item.html:27 #: aircox_streamer/templates/aircox_streamer/source_item.html:27
msgid "Synchronize source with Liquidsoap" msgid "Synchronize source with Liquidsoap"
msgstr "Synchroniser la source avec Liquidsoap" msgstr "Synchroniser la source avec Liquidsoap"
#: templates/aircox_streamer/source_item.html:31 #: aircox_streamer/templates/aircox_streamer/source_item.html:31
msgid "Synchronise" msgid "Synchronise"
msgstr "Synchroniser" msgstr "Synchroniser"
#: templates/aircox_streamer/source_item.html:34 #: aircox_streamer/templates/aircox_streamer/source_item.html:34
msgid "Restart current track" msgid "Restart current track"
msgstr "Rejouer le morceau en cours" msgstr "Rejouer le morceau en cours"
#: templates/aircox_streamer/source_item.html:38 #: aircox_streamer/templates/aircox_streamer/source_item.html:38
msgid "Restart" msgid "Restart"
msgstr "Rejouer" msgstr "Rejouer"
#: templates/aircox_streamer/source_item.html:41 #: aircox_streamer/templates/aircox_streamer/source_item.html:41
msgid "Skip current file" msgid "Skip current file"
msgstr "Passer le fichier actuel" msgstr "Passer le fichier actuel"
#: templates/aircox_streamer/source_item.html:42 #: aircox_streamer/templates/aircox_streamer/source_item.html:42
msgid "Skip" msgid "Skip"
msgstr "Passer" msgstr "Passer"
#: templates/aircox_streamer/source_item.html:51 #: aircox_streamer/templates/aircox_streamer/source_item.html:51
msgid "Add sound" msgid "Add sound"
msgstr "Ajouter un son" msgstr "Ajouter un son"
#: templates/aircox_streamer/source_item.html:59 #: aircox_streamer/templates/aircox_streamer/source_item.html:58
msgid "Select a sound" msgid "Select a sound"
msgstr "Sélectionner un son" msgstr "Sélectionner un son"
#: templates/aircox_streamer/source_item.html:61 #: aircox_streamer/templates/aircox_streamer/source_item.html:69
msgid "Add a sound to the queue (queue may start playing)"
msgstr "Ajouter un son à la file de lecture (la file de lecture peut démarer)"
#: templates/aircox_streamer/source_item.html:70
msgid "Add" msgid "Add"
msgstr "Ajouter" msgstr "Ajouter"
#: templates/aircox_streamer/source_item.html:76 #: aircox_streamer/templates/aircox_streamer/source_item.html:74
msgid "Add a sound to the queue (queue may start playing)"
msgstr "Ajouter un son à la file de lecture (la file de lecture peut démarer)"
#: aircox_streamer/templates/aircox_streamer/source_item.html:80
msgid "Sounds in queue" msgid "Sounds in queue"
msgstr "Sons dans la file de lecture" msgstr "Sons dans la file de lecture"
#: templates/aircox_streamer/source_item.html:94 #: aircox_streamer/templates/aircox_streamer/source_item.html:98
msgid "Status" msgid "Status"
msgstr "Statut" msgstr "Statut"
#: templates/aircox_streamer/source_item.html:104 #: aircox_streamer/templates/aircox_streamer/source_item.html:108
msgid "Air time" msgid "Air time"
msgstr "En antenne depuis" msgstr "En antenne depuis"
#: templates/aircox_streamer/source_item.html:114 #: aircox_streamer/templates/aircox_streamer/source_item.html:118
msgid "Time left" msgid "Time left"
msgstr "Temps restant" msgstr "Temps restant"
#: templates/aircox_streamer/source_item.html:122 #: aircox_streamer/templates/aircox_streamer/source_item.html:126
msgid "Data source" msgid "Data source"
msgstr "Source de donnée" msgstr "Source de donnée"
#: templates/aircox_streamer/streamer.html:19 #: aircox_streamer/templates/aircox_streamer/streamer.html:23
msgid "Reload" msgid "Reload"
msgstr "Recharger" msgstr "Recharger"
#: templates/aircox_streamer/streamer.html:26 #: aircox_streamer/templates/aircox_streamer/streamer.html:30
#: templates/aircox_streamer/streamer.html:27 #: aircox_streamer/templates/aircox_streamer/streamer.html:31
msgid "Select a station" msgid "Select a station"
msgstr "Sélectionner une station" msgstr "Sélectionner une station"
#: urls.py:9 views.py:9 #: aircox_streamer/urls.py:10 aircox_streamer/views.py:9
msgid "Streamer Monitor" msgid "Streamer Monitor"
msgstr "Moniteur de stream" msgstr "Moniteur de stream"