Installation¶
Programm starten¶
Mit Docker¶
Benötigte Software:
Unter Windows muss ggf. noch ein Windows Subsystem for Linux installiert werden. Weitere Informationen hier.
Docker-Container starten:
Die Pfade hinter -v müssen durch Pfade zu den Dateien, welche in Konfiguration beschrieben werden
bzw. durch den Pfad zum Output-Ordner - ersetzt werden.
Linux:
docker run -t \
-v /home/user/out:/out \
-v /home/user/config.json:/config.json \
-p 8000:8000 \
visuanalytics/visuanalytics
Windows:
docker run -t ^
-v C:\Users\user\out:/out ^
-v C:\Users\user\config.json:/config.json ^
-p 8000:8000 ^
visuanalytics/visuanalytics
Falls man nur das Wordpress-Plugin verwenden will (siehe hier) kann man auch
eine Docker-Container starten, der das Frontend nicht enthält. Hierfür muss man nur anstelle vonvisuanalytics/visuanalytics
im obigen Befehlvisuanalytics/visuanalytics:latest-wordpress
eingeben.
Der Server kann nun unter http://localhost:8000 erreicht werden.
Bemerkung
Wenn man die Option h264_nvenc (siehe config.json) verwenden will, kann man beim Starten noch die Option`–runtime=“nvidia“(oder–gpus all`) angeben. Dafür muss man vorher ein paar Konfigurationen und Installationen vornehmen. Eine Anleitung dafür finden Sie hier (Dies ist nicht die offizielle Dokumentation. Die Dokumentation von Docker zu dem Thema befindet sich hier).
Ohne Docker (Development)¶
Benötigte Software:
In den src-Ordner wechseln: cd src
Pakete installieren:
pip install -r visuanalytics/requirements.txtKonfigurationsdateien anlegen bzw. anpassen (diese werden unter Konfiguration beschrieben):
Die Datei
config.jsonmuss sich im Ordnervisuanalytics/instancebefinden.
In den frontend-Ordner wechseln:
cd ./frontend
Frontend Dependencies installieren:
npm inpm install react-scripts@3.4.1 -g
Programm starten:
Backend & Frontend starten:
npm run start:allNur Frontend starten:
npm run startNur Backend starten:
npm run start:serverBackend ohne npm starten:
python -m visuanalytics(dafür muss man sich im src-Ordner befinden)
Bemerkung
Um die Option h264_nvenc (siehe config.json) zu verwenden, müssen diverse Einstellungen vorgenommen werden. Eine Anleitung finden Sie hier.
Wordpress-Plugin verwenden¶
Nicht nur der Backend-Server kann das Frontend ausliefern. Das Frontend kann auch als Wordpress-Plugin verwendet werden.
Um das Wordpress-Plugin zu erstellen, sind folgende Schritte nötig:
Benötigte Software:
In den frontend-Ordner wechseln:
cd src/frontend
Frontend Dependencies installieren:
npm inpm install react-scripts@3.4.1 -g
In den wordpress-Ordner wechseln:
cd ../wordpress(wenn man imfrontend-Ordner ist, ansonstencd src/wordpress)
Wordpress-Plugin erstellen:
python build.py
Im build-Ordner befindet sich eine .zip-Datei, die sich einfach über die Wordpress-Oberfläche installieren lässt.
Warnung
Damit das Plugin vollständig funktioniert, muss das Backend laufen (siehe hier oder hier). Um vom Plugin Requests an das Backend zu senden, muss ein Reverse Proxy eingerichtet werden. Dieser sollte dann alle Requests, die mit /visuanalytics anfangen an den Backend-Server weiterleiten.
Konfiguration¶
config.json¶
Die Konfigurationsdatei für das Programm hat folgendes Format:
{
"api_keys": {
"weatherbit": "APIKey"
},
"steps_base_config": {
"testing": false,
"h264_nvenc": false,
"thumbnail": false
},
"testing": false,
"audio": {}
}
api_keys:
Die API-Keys für die verwendeten APIs:
weatherbit: API-Key für weatherbit.iotwitter: API-Key für Twitter
steps_base_config(optional):
Die Konfiguration, die für jeden Job gelten soll. (Die Konfigurationen, die im Frontend angegeben werden, sind höherwertig.)
testing(optional):Wenn
testingaktiviert ist, werden keine API-Abfragen gemacht. Zur Generierung des Videos werden in dem Fall Beispieldaten verwendet. (Diese sind nur für die vordefinierten Themen vorhanden.)h264_nvenc(optional):Wenn
h264_nvencaktiviert ist, wird diese Option bei FFmpeg verwendet. Diese aktiviert die Hardware-Beschleunigung bei Nvidia-Grafikkarten. Damit dies funktioniert, müssen diverse Sachen beachtet werden (weitere Informationen unter Mit Docker sowie Ohne Docker).thumbnail(optional):Wenn
thumbnailaktiviert ist, wird zu jedem Video ein Thumbnail generiert. Der Name des Thumbnails hat das Format:{video_name}_thumbnail.png(wobei{video_name}dem Namen des Videos entspricht).fix_names(optional):fix_nameskann dazu verwendet werden, um den Output-Videos feste Namen zu geben. Hierzu kann man entwedernamesverwenden (hier gibt man dann einfach eine Liste mit Namen an)
oder man verwendetcount. Beicountwerden die Videos durchnumeriert, d.h. das neueste Video bekommt _1. Sollte man z.B.count=3wählen, so liegen im out-Ordner immer die 3 neuesten Videos. Das neueste Video hat den Bezeichner _1 und das älteste Video _3. Sobald ein neues Video generiert wird, wird das Video mit _3 gelöscht und das _2-Video in _3 umbenannt etc.
Die einzige Ausnahme ist, wenncount = 1gesetzt wurde. In diesem Fall wird kein _1 verwendet, sondern bei jeder neuen Videogenerierung heißt das Video gleich dem Jobnamen.keep_count(optional):kee
p_countgibt an wie viele Videos maximal im out-Ordner von einem Task vorhanden sein sollen. Sobald es zu viele gibt, wird das älteste Video gelöscht.
testing(optional):
Wenn testing aktiviert ist, wird die logging Ausgabe auf das „Info“-Level gesetzt, wodurch mehr Informationen in den Log eingetragen werden.
audio(optional):
Hier kann die Konfiguration für die Audiogenerierung angegeben werden. Eine Erklärung dafür befindet sich hier.
console_mode(optional):
Falls man das Programm ohne Frontend verwenden will, kann man diese Option auf true setzen. Dann kann man die zu erstellenden Jobs in der Datei jobs.json angeben (diese liegt ab unter src\visuanalytics\resources, eine Erklärung des Formats befindet sich hier). Diese Option funktioniert nur, wenn man das Programm ohne Docker ausführt.
jobs.json¶
Wenn man den console_mode (siehe hier) aktiviert hat, kann man die Jobs in der Datei jobs.json wie folgt definieren:
{
"jobs": [
{
"name": "Wetter in Biebertal",
"id": 0,
"steps": "weather_single",
"schedule": {
"time": "12:00",
"daily": true
},
"config": {
"city_name": "Biebertal",
"p_code": "35444"
}
}
]
}
name: Name des Jobs
id: ID des Jobs (sollte einzigartig sein)
steps: Thema, zu welchem ein Video generiert werden soll
Aktuelle Optionen:
"weather_germany": Deutschlandweiter Wetterbericht"weather_single": Ortsbezogener Wetterbericht"football": Spieltag- und Tabellenbericht für die 1. und 2. Fußball-Bundesliga"twitter": Twitter-Wordcloud
schedule: Hier kann der Zeitplan für die Generierung der Videos festgelegt werden.
Hierzu gibt es vier mögliche Einträge:
time:Uhrzeit der Ausführung. Die Uhrzeit muss im Format
"%H:%M"angegeben werden.Beispiel:
10:00
Warnung
Die Uhrzeit muss immer angegeben werden.
daily:Wenn dieser Wert
trueist, wird der Job jeden Tag ausgeführt.date:Ist ein Datum angegeben, so wird der Job einmalig und nur an diesem Datum ausgeführt. Das Datum muss im Format
%y-%m-%d(YYYY-MM-DD) angegeben werden.Beispiel:
2020-06-09weekdays:Enthält die Wochentage, an welchen der Job ausgeführt werden soll. Die Wochentage werden als Array von Zahlen angegeben, wobei
0 ~ Montag,1 ~ Dienstagusw.Beispiel:
[0, 5, 6]=> Der Job wird montags, samstags und sonntags ausgeführt.
Warnung
Die Optionen daily, date und weekdays schließen sich gegenseitig aus. Es muss also genau eine Option ausgewählt werden.
config: Hier können die Konfigurationen für die Jobs festgelegt werden.
Bemerkung
Alle hier beschriebenen Konfigurationen sind optional und werden notfalls mit default-Werten initialisiert.
Mögliche Konfigurationen für die verschiedenen Themen:
Deutschlandweiter Wetterbericht (steps: "weather_germany"):
Alle Einstellungen, die auch in der config.json unter
steps_base_configzur Verfügung stehen.
Ortsbezogener Wetterbericht (steps: "weather_single"):
Alle Einstellungen, die auch in der config.json unter
steps_base_configzur Verfügung stehencity_name: str - Name des Ortesp_code: str - Postleitzahl des Ortesspeech_app_temp_2: bool - Ob eine Audiodatei zu den gefühlten Temperaturen bei der 2-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_wind_2: bool - Ob eine Audiodatei zu Windgeschwindigkeit und -richtung bei der 2-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_sun_2: bool - Ob eine Audiodatei zu Sonnenauf- und -untergang bei der 2-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_rh_2: bool - Ob eine Audiodatei zur relativen Luftfeuchtigkeit bei der 2-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_pop_2: bool - Ob eine Audiodatei zur Regenwahrscheinlichkeit bei der 2-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_app_temp_3: bool - Ob eine Audiodatei zu den gefühlten Temperaturen bei der 3-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_wind_3: bool - Ob eine Audiodatei zu Windgeschwindigkeit und -richtung bei der 3-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_sun_3: bool - Ob eine Audiodatei zu Sonnenauf- und -untergang bei der 3-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_rh_3: bool - Ob eine Audiodatei zur relativen Luftfeuchtigkeit bei der 3-Tage-Übersicht erstellt und im Video abgespielt werden sollspeech_pop_3: bool - Ob eine Audiodatei zur Regenwahrscheinlichkeit bei der 2-Tage-Übersicht erstellt und im Video abgespielt werden soll
Bemerkung
Aktuell lassen sich nur Wettervorhersagen für Städte in Deutschland generieren.
Spieltag-Bericht für die 1. und 2. Fußball-Bundesliga (steps: "football"):
Alle Einstellungen, die auch in der config.json unter
steps_base_configzur Verfügung stehenliga-name: str - Spielklasse (1 ~ 1. Liga,2 ~ 2. Liga,3 ~ 3. Liga)
Twitter Wordcloud (steps: "twitter"):
Alle Einstellungen, die auch in der config.json unter
steps_base_configzur Verfügung stehennormalize_words: bool - Ob die Wörter normalisiert werden sollen und Doppelungen bei der Zählung der Häufigkeiten zu vermeiden (Beispiel: Bundesliga, bundesliga und BUNDESLIGA (wird einzeln gezählt: je 1x)-> Bundesliga, Bundesliga, Bundesliga (insgesamt: 3x)colormap_words: str - Die Farben der Wörter in der Wordcloudcolor_func: bool - Ob für den Farbverlauf der Wörter in der Wordcloud ein bestimmter Farbverlauf anstelle einer Colormap verwendet werden sollcolor_func_words: str - Farbe des gewünschten Farbverlaufs der Wörter in der Wordcloud (nur wenncolor_funcauftruegesetzt wurde)figure: str - Form der Wordcloud (aktuell nur Kreis und Quadrat möglich)size_wordcloud: str - Größe der Wordcloud (verschiedene Größen möglich)
Tests ausführen¶
Mit Docker¶
Benötigte Software:
Unter Windows muss ggf. noch ein Windows Subsystem for Linux installiert werden. Weitere Informationen hier.
In den src-Ordner wechseln: cd src
Tests ausführen:
docker-compose -f visuanalytics/docker-compose.test.yml up
Ohne Docker¶
Benötigte Software:
In den src-Ordner wechseln: cd src
Pakete installieren:
pip install -r visuanalytics/requiraments.txt
Tests ausführen:
python python3 -m unittest discover visuanalytics
Bemerkung
Unter Linux kann es sein, dass pip3 und python3 verwendet werden müssen.
Dokumentation generieren¶
Für die Dokumentation wird das Python-Paket Sphinx verwendet.
Installation¶
Benötigte Software:
dev-dependencies installieren:
pip install -r src/visuanalytics/requirements-dev.txt
Bemerkung
Unter Linux kann es sein, dass pip3 und python3 verwendet werden müssen.
HTML generieren¶
in den Dokumentationsordner wechseln:
cd DocsDokumentation generieren:
make html
Die Dokumentation befindet sich dann im Ordner _build/html.