Suivi des « ateliers Aircox » de la radio (vidéos, manuels, etc) : http://public.radiocampus.be/Aircox/
Go to file
2016-09-10 22:38:15 +02:00
cms programs/urls.py: update views 2016-09-10 20:12:00 +02:00
data logo; RelatedPost sync with related object 2016-05-22 17:43:13 +02:00
docs issue #3: merge controllers into programs; missing: views 2016-08-29 15:45:17 +02:00
programs move url 2016-09-10 22:38:15 +02:00
__init__.py move files 2015-12-22 08:37:17 +01:00
LICENSE move files 2015-12-22 08:37:17 +01:00
Manifest.in move files 2015-12-22 08:37:17 +01:00
notes.md monitor: playlist update and fetch to/from file only if changed; fix bug logs filter in on_air 2016-08-22 20:55:30 +02:00
README.md quick fix on bugs due to Django 1.10 2016-08-19 19:35:05 +02:00
requirements.txt quick fix on bugs due to Django 1.10 2016-08-19 19:35:05 +02:00
setup.py move files 2015-12-22 08:37:17 +01:00

Platform to manage a radio, schedules, website, and so on. We use the power of great tools like Django or Liquidsoap.

Current features

  • streams: multiple random music streams when no program is played. We also can specify a time range and frequency;
  • 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;
  • 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.
  • cms: application that can be used as basis for website (we use Wagtail; if you don't want it this application is not required to make everything run);
  • log: keep a trace of every played/loaded sounds on the stream generator.

Applications

  • programs: managing stations, programs, schedules and diffusions. This is the core application, that handle most of the work;
  • controllers: interface with external stream generators. For the moment only support Liquidsoap. Generate configuration files, trigger scheduled diffusions and so on;
  • cms: defines models and templates to generate a website connected to Aircox;

Installation

Dependencies

Python modules:

  • django-taggits: aircox.programs, aircox.cms
  • watchdog: aircox.programs (used for files monitoring)
  • wagtail: aircox.cms
  • django-extends: aircox.cms
  • django-honeypot: aircox.cms
  • bleach: 'aircox.cms` (comments sanitization)
  • dateutils: aircox.programs (used for tests)
  • Pillow: aircox.cms (needed by wagtail)

Applications:

  • liquidsoap: aircox.controllers (generation of the audio streams)

settings.py

Base configuration:

INSTALLED_APPS = (
    # dependencies
    'wagtail.wagtailforms',
    'wagtail.wagtailredirects',
    'wagtail.wagtailembeds',
    'wagtail.wagtailsites',
    'wagtail.wagtailusers',
    'wagtail.wagtailsnippets',
    'wagtail.wagtaildocs',
    'wagtail.wagtailimages',
    'wagtail.wagtailsearch',
    'wagtail.wagtailadmin',
    'wagtail.wagtailcore',
    'wagtail.contrib.settings',
    'taggit',
    'honeypot',

    # ...

    # aircox
    'aircox.programs',
    'aircox.controllers',
    'aircox.cms',
)

MIDDLEWARE_CLASSES = (
    # ...
    'wagtail.wagtailcore.middleware.SiteMiddleware',
    'wagtail.wagtailredirects.middleware.RedirectMiddleware',
)

TEMPLATES = [
    {
        # ...
        'OPTIONS': {
            'context_processors': (
                # ...
                'wagtail.contrib.settings.context_processors.settings',
            ),
        },
    },
]

# define your wagtail site name
WAGTAIL_SITE_NAME = 'My Radio'

To enable logging:

LOGGING = {
    # ...
    'loggers': {
        'aircox.core': {
            'handlers': ['console'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
        },
        'aircox.test': {
            'handlers': ['console'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
        },
        'aircox.tools': {
            'handlers': ['console'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
        },
    },
}

Each application have a settings.py that defines options that can be reused in application's settings.py file.