Project

General

Profile

Inhalt

Projektziele

Comba ist ein modulares System zur Automatisierung von Sendungen und Sendewiederholungen für Community Radios

Sendewiederholung

Sendungen die live ausgestrahlt werden aufzeichnen und zu einem definierten Zeitpunkt oder mehreren definierten Zeitpunkten erneut über Stream, DAB+ oder Kabel senden.

Automatisierung von Sendungen

Sendungen vorab zur späteren Ausstrahlung bereit stellen

Internetpublishing

Podcast und Streams bereitstellen

Comba verstehen

So funktioniert Comba

Use Case

graphische Darstellung des Use Case

Aktueller Stand

Visualisierung der Komponentenbeziehungen nach dem aktuellen Stand

Verzeichnisstrukturen, Betriebsystem und Dienste

Git-Repository

Spezifizierung

Beschreibungen der Komponenten

Installation

Diese Anleitung bezieht sich auf eine Installation unter Ubuntu 16.04

Repositories hinzufügen

wget -O - http://tools.janguo.de/repos/apt/tools.janguo.de.key | sudo apt-key add -
echo "deb http://tools.janguo.de/repos/apt/packages testing main" | sudo tee  /etc/apt/sources.list.d/comba.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" | sudo tee /etc/apt/sources.list.d/mongodb.list
wget -O - https://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/Debian_9.0/Release.key | sudo apt-key add
echo "deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/Debian_9.0/ ./" | sudo tee /etc/apt/sources.list.d/zeromq.list
sudo apt-get update

Mongo Db installieren

sudo apt-get install mongodb-org

Datenbank-Zugriff von außen sperren

sudo sh -c 'echo "bind_ip = 127.0.0.1" >> /etc/mongodb.conf'
sudo service mongod restart

libzmq installieren

sudo apt-get install libzmq3-dev

Comba installieren

sudo apt-get install comba

Weitere benötigte Bibliotheken

Einige benötigte Bibliotheken finden sich nicht in den Repositories:

  • Pyzmq
  • Mongoengine
  • Pyev
  • Python Watchdog
  • Flask Restful

Pip aktualisieren

sudo pip install --upgrade pip

Pyzmq mit Authentifizierung

sudo pip install "pyzmq>=14.1.0" --install-option="--zmq=bundled" 

Mongoengine installieren

sudo pip install mongoengine
sudo pip install flask-mongoengine

Pyev installieren

sudo pip install pyev

Python Watchdog installieren

sudo pip install watchdog

Flask Restful installieren

sudo pip install flask-restful

Konfigurieren

Soundkarten

Vorbereitung: Verwende die Befehle arecord -l und aplay -l, um Soundkarten und ihre Subkanäle zu analysieren

Passe die Optionen in /etc/comba/comba.ini entsprechend an. Beispiel:

# altrecorder_device="hw:1,2" # optional recorder for preproduction
recorder_device="hw:0,2" # recorder
player_input_device="hw:0,0" # sound in - is used, if you want comba to play out your live transmissions
player_output_device="hw:0,0" # sound out

Alternativ kannst du den Parameter "soundcard" verwenden, um Comba anzuweisen, die ersten verfügbare Schnittstelle zu verwenden:

player_input_device="soundcard" 

Hinweis: Das kann je nach Soundkarte zu Problemen führen, zum Beispiel weil gleichzeitiges Aufnehmen und Abspielen nicht klappen.

  • Scheduler-Jobs in /etc/comba/scheduler.xml anpassen

Sicherheit

Um Comba vor unbefugtem Zugriff zu schützen setze in der comba.ini securitylevel 1 oder oder 2.
Bei Level 1 werden von den Clients Username und Passwort verlangt. Bei Level 2 werden zusätzlich nur Zugriffe von IP-Adressen einer internen Whitelist erlaubt.

# securitylevel 0=keine,1=username+passwort, 2=username+passwort+ip
securitylevel="1" 

User anlegen

Für administrative Zugriffe wird zunächst ein admin Account angelegt:

% combapasswd --role="admin" meinadminuser
Username: meinadminuser
Password: QOnIMLzbk7mXSU

Zur Verwendung der gesicherten Bereiche der Webservices:

% combapasswd --role="serviceuser" meinserviceuser

Login für Web-Administration/Monitor:

% combapasswd --role="webuser" meinwebuser

Weitere User anlegen:

% combapasswd user1
% combapasswd user2

Whitelist

% combawhitelist 192.168.1.100
Add 192.168.1.100 to whitelist

Comba starten

Comba Monitor startet alle anderen Komponenten:

service combamonitor start

Monitor unter Apache

Der Monitor läuft per default auf einem Separaten Python Webserver. Aus Sicherheitsgründen sollte er unter Apache oder NGinx laufen

sudo apt-get install libapache2-mod-wsgi
sudo cp /usr/share/comba/systemplates/apachecomba.conf /etc/apache2/sites-available/comba.conf
sudo service apache2 restart

Hinweis: In /etc/apache2/sites-available/comba.conf ggf die Servername Direktive anpassen und entkommentieren

Howtos

API

Comba stellt einen Webservice bereit, über den sich die aufgezeichneten Sendungen abfragen und als MP3's downloaden lassen. Eine API für die Sendeautomatisierung (Vorproduktion) ist in Entwicklung befindlich : API-Dokumentation

Abfragen erfolgen per POST. Die Suchparameter können entweder als Query oder im JSON-Format übergeben werden

Nach Sendungen suchen

URL: /api/v1.0/broadcasts
Suchparameter

  • limit [int]: Begrenzt Rückgabe auf n (integer) Items
  • limitstart [int]: Startet Rückgabeliste bei n (integer) Items
  • identifier [str]: Die eindeutige ID der Sendung/Ausstrahlung
  • start [str]: Sendungsbeginn im Format %Y-%m-%dT%H:%M
  • end [str]: Sendungsende im Format %Y-%m-%dT%H:%M
  • title [str]: Titel der Sendung
  • programme_id [str]: ID der Sendung
  • station_id [str]: ID der Radiostation
  • state [created|archived]: Der Status
  • rerun [true|false]: Nur Wiederholungen | Originalausstrahlungen
  • search [str]: Textsuche in Titel und Beschreibung
  • datefrom [str]: Alle Sendungen seit <Datum> im Format %Y-%m-%d
  • dateto [str]: Alle Sendungen bis <Datum> im Format %Y-%m-%d
  • current [true]: Gibt nur aktuell laufende Sendung wieder - macht alle anderen Parameter unwirksam

Beispiel

curl --user meinserviceuser:Hbo3SMsDe8lZmR -H "Content-type: application/json" \
      -X POST http://my.combaserver.tld/api/v1.0/broadcasts \
     -d '{"datefrom":"2015-02-27", "dateto":"2015-03-01", "state":"archived", "rerun":false}'

Antwort:

{"broadcasts": [
      {"end": "2015-02-28T12:00", "description": "Morgenradio mit Nachrichten", "title": "Morgenradio",  
       "state": "archived", "station_id": "comba481", "start": "2015-02-28T08:00", "programme_id": "1", 
       "reccurrence_id": "6", "rerun": false, "duration": "4:00:00", "station_name": "Comba Test", 
       "identifier": "6-2015-02-28-08-00-00", "ressource_ready": true, "subject": "" 
      }, 
      {"end": "2015-02-28T13:00", "description": "", "title": "The Show must go on", 
       "state": "archived", "station_id": "comba481", "start": "2015-02-28T12:00", "programme_id": "3", 
       "reccurrence_id": "20", "rerun": false, "duration": "1:00:00", "station_name": "Comba Test", 
       "identifier": "20-2015-02-28-12-00-00", "ressource_ready": true, "subject": "" 
       },
      {"end": "2015-02-28T14:00", "description": "", "title": "Tiere wollen leben", 
       "state": "archived", "station_id": "comba481", "start": "2015-02-28T13:00", "programme_id": "4", 
       "reccurrence_id": "27", "rerun": false, "duration": "1:00:00", "station_name": "Comba Test", 
       "identifier": "27-2015-02-28-13-00-00", "ressource_ready": true, "subject": ""}, 

      {"end": "2015-02-28T16:00", "description": "Die afrikanische Sendung", "title": "African Queen", 
        "state": "archived", "station_id": "comba481", "start": "2015-02-28T14:00", "programme_id": "2", 
        "reccurrence_id": "13", "rerun": false, "duration": "2:00:00", "station_name": "Comba Test", 
        "identifier": "13-2015-02-28-14-00-00", "ressource_ready": true, "subject": "" 
       }
]}

Hinweis: ressource_ready zeigt an, ob ein MP3 downloadbar ist

Sendung downloaden

URL: /api/v1.0/broadcasts/download

Der Download erfolgt über die Übergabe des Identifier (z.B. 12-2015-03-13-14-00-00) oder die ebenfalls eindeutige Kombination von programme_id + station_id + start || end

Beispiel:

curl --user meinserviceuser:Hbo3SMsDe8lZmR -H "Content-type: application/json" \
     -X POST http://my.combaserver.tld/api/v1.0/broadcasts/download \ 
     -d '{"identifier": "12-2015-03-13-14-00-00"}' > african_queen_vom_2015-03-13.mp3
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  192M  100  192M  100    40  80.4M     16  0:00:02  0:00:02 --:--:-- 80.4M

PHP

Download combarestful.php

PHP Beispiele

Derzeitige Themen

  • Was kann Airtime und was fehlt noch?

Hinweise für EntwicklerInnen

Human ressources

Da findet sich, was jeder von uns so an Fähigkeiten, Projekten und (halb)fertiger Software liegen hat.
Dafür gibt es aber eine eigene Seite.