EPGD mit VDR in Gentoo

Du möchtest dich gerne für unsere Hilfe erkenntlich zeigen 8-o. Gerne. Wir bedanken uns bei dir für deine Spende! LOL


Hauseigenes Apt-Repo: https://apt.iteas.at
GITLAB Enterprise:


FIXME Mittlerweile gibt es sehr großen Inkompatiblitäten mit dem Code. Auf aktuellem Gentoo ist es mit dem Datum — 2021/06/06 17:21 nicht mehr möglich die Software zu kompilieren, geschweige denn zu Betreiben. Ich arbeite an einer Lösung und werde das ToDo hier aktualisieren.

Ziel ist es, eine zentrale EPG-Datenbank zu haben, die alle Infos von epgdata, thetvdb, themoviedb, eplist, etc. vom Internet läd, und alles zusammenfügt, um ein möglichst gutes EPG zu bekommen. Zentrale Datenbank deshalb, da alle Infos und Bilder ca. 5GB Daten sind, die ja nicht für jeden VDR extra runtergeladen werden sollen, sondern nur einmal. Zum einen, um den hohem Internet-Traffic zu verringern, als auch wegen Verarbeitungsgeschwindigkeit, da alle Infos zum VDR-Start schon im lokalen Netz sind.

Die Datenbank kann überall installiert werden. Es ist aber erfahrungsgemäß einfacher diese direkt am VDR zu installieren.

Der EPGD Dienst selbst wird am VDR installiert. EPGD kann standardmäßig über den Kostenpflichtigen Dienst http://www.epgdata.com bedient werden. Wir witmen uns hier aber der kostenlosen Lösung von TVM. Es gibt auch noch die Möglichkeit statt TVM, TVSP (TV Spielfilm) zu verwenden. Dies ist wesentlich besser wenn man auch das VDR-Live-Interface benutzt, da man hier mehr Bilder anzeigen kann. Das Plugin hierfür ist auch im Overlay. Die Channelsmap ist auf Github zu finden. Folgende Overlays müssen eingetragen werden:

Für EPGD https://github.com/3PO/3PO-overlay

nano /etc/portage/repos.conf/3po-overlay.conf

[3PO-overlay]
location = /var/db/repos/3PO-overlay
sync-type = git
sync-uri = git://github.com/3PO/3PO-overlay.git
auto-sync = yes

Nun die Pakete installieren:

=media-tv/epgd-9999 tvm
=media-tv/epgd-plugin-tvm-9999

Wichtig ist das die Pakete immer die gleiche API verwenden, da es sonst nicht funktioniert.

emerge -va epgd vdr-epg2vdr

Nach erfolgreicher Installation gehen wir zur Konfiguration über, die nicht ganz ohne ist.

Nach der Installation in Gentoo ist drauf zu achten das mit etc-update immer die epg.dat Files aktualiert werden, da es sonst zu einem SEGFAULT beim Start von EPGD kommt.

Zuerst stoppen wir unseren VDR.

systemctl stop vdr.service

Jetzt müssen einige Dinge am EPGD konfiguriert werden. In der Config muss die Zeile zum epgdata.com auskommentiert werden. Weiters müssen wir unseren Datenbankuser und ein paar Intervalle festlegen. Wobei die Intervalle natürlich jedem selbst überlassen sind.

nano /etc/epgd/epgd.conf
epgd.conf
# ------------------------------------
# Configuration of EPG Daemon 
# ------------------------------------
 
# EpgImageSize
# 0 = 174x130
# 1 = 329x245
# 2 = 525x400
 
 
# ---------------
# tvspielfilm plugin
# ---------------
 
# Imagesize
# 1 130px
# 2 320px
# 3 476px
# 4 952px
 
tvsp.imageSize = 4
epg.imageSize = 4
 
# Debug Options
tvsp.saveJson = 0
tvsp.saveXml = 0
 
 
DbHost = localhost
DbPort = 3306
DbName = dbname-epg2vdr
DbUser = user-epg2vdr
DbPass = secret
 
EpgView = eventsview.sql
EpgViewWeb = eventsviewplain.sql
TheTvDBView = thetvdbview.sql
 
CheckInitial = 1
DaysInAdvance = 20
DaysToUpdate = 5
UpdateTime = 12
UpdateThreshold = 500
 
XmlStoreToFs = 0
 
GetEPGImages = 4
EpgImageSize = 4
MaxImagesPerEvent = 4
 
SeriesEnabled = 1
SeriesPort = 2006
SeriesStoreToFs = 0
SeriesUrl = www.eplists.de
# SeriesUrl = eplists.constabel.net
 
# Test zwecks SEGFAULT
ScrapEpg = 1
ScrapRecordings = 1
 
# NetDevice = eth0
 
# CachePath = /var/cache/epgd/
# HttpPort = 9999
 
# HttpProxy = 127.0.0.1:8000
# UserName = 
# Password = 
 
LogLevel = 2
 
# ---------------
# epgdata plugin
# ---------------
# epgdata.url = http://www.epgdata.com
# epgdata.pin = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Download timeout in seconds (default 180)
# epgdata.timeout = 180

Die Verwendung von Epgdata ist möglich. Leider bekommt man für sein Geld nur extrem kleine Bilder und hier nur jeweils eines pro Sendung. Vielleicht aktualisiert sich der Dienst ja bald zeitgemäß nach.

Jetzt müssen wir im Verzeichnis „/etc/epgd“ die Datei „tvmovie-channelmap.conf“ auf „channelmap.conf“ verlinken. Diese Config wird immer von EPGD eingelesen.

ln -s tvmovie-channelmap.conf channelmap.conf

Wer die Datei nicht hat, hier zum Download: tvmovie-channelmap_conf.txt Also nächstes sagen wir dem VDR das er seine Epgdaten bei unserem Datenbankserver holen soll. Dazu mal das Plugin aktivieren und die Benutzerdaten hinterlegen. Die Datei kann/muss mit folgenden IDs angepasst werden. Weiter ID's für tvsp findest du hier. Eine etwas ältere aber fertige Liste zum Anpassen hier.

Die Plugins TVSP und TVM können gemischt werden. z.B.

...
tvsp:TELE5 = S19.2E-X-XXXX-XXXX,S19.2E-XXX-XX-XX // TELE 5 HD;BetaDigital
tvm:55 = S19.2E-XXX-XX-XX // Tele5
...

Weiters gibt es für das TVM Plugin ein Script das einem die Einrichtung erheblich erleichtert.

eselect vdr-plugin list
Available VDR plugins:
  [1]   conflictcheckonly
  [2]   epg2vdr 
  [3]   epgsearch *
  [4]   epgsearchonly
  [5]   live *
  [6]   quickepgsearch
  [7]   streamdev-server *
  [8]   vdrmanager *
  [9]  vnsiserver *

eselect vdr-plugin enable 2

eselect vdr-plugin list
Available VDR plugins:
  [1]   conflictcheckonly
  [2]   epg2vdr *
  [3]   epgsearch *
  [4]   epgsearchonly
  [5]   live *
  [6]   quickepgsearch
  [7]   streamdev-server *
  [8]   vdrmanager *
  [9]  vnsiserver *

Datenbankbenutzer dem VDR übergeben:

nano /etc/vdr/setup.conf

epg2vdr.DbHost = dbserver.local
epg2vdr.DbName = dbname-epg2vdr
epg2vdr.DbPass = secret
epg2vdr.DbPort = 3306
epg2vdr.DbUser = user-epg2vdr

Nun noch den EPGD in den Autostart legen:

systemctl enable epgd.service
echo 'export PASSWORD="<password>"' > ~/.ssh/mysqlpasswd

Wer das Live Interface benutzt möchte natürlich auch dort seine Bilder sehen. Hierfür folgende Config bearbeiten:

nano /etc/conf.d/vdr.live

LIVE_EPGIMGDIR="/var/cache/vdr/epgimages/"

Beim Neustart des VDR (wenn alle Sender geladen wurden) werden auch hier und eine wesentlich bessere Beschreibung angezeigt.

Folgendes Einträge sind in der Datenbankconfig erforderlich:

nano /etc/mysql/my.cnf

[mysqld]
default-storage-engine = innodb
innodb_large_prefix=ON
innodb_file_format=BARRACUDA

BIN Log auf jedem Fall abstellen. Nach einem Neustart von MYSQL kann Datenbank und User mit dem Werkzeug „epgd-tool“ erstellt werden. Das Tool ist selbst erklärend. Sollte das nicht funktionieren kann man die Datenbank auch selbst manuell anlegen. Die Datenbank mit dem Tool mit folgendes Daten angelegt:

  • Datenbank: epg2vdr
  • User: epg2vdr
  • Passwort: epg

Datenbank manuell anlegen (normal nicht notwendig)

Um die Datenbank erstellen zu können loggen wir uns auf unseren DBhost mit dem MYSQL Root User in die MYSQL CLI ein. Dann legen wir die Datenbank mit allen erforderlichen Rechten und Features an:

mysql -u root -p

CREATE DATABASE epg2vdr charset utf8;
CREATE USER 'epg2vdr'@'%' IDENTIFIED BY 'epg';
GRANT ALL PRIVILEGES ON epg2vdr.* TO 'epg2vdr'@'%';
DROP FUNCTION IF EXISTS epglv;
DROP FUNCTION IF EXISTS epglvr;
CREATE FUNCTION epglv RETURNS INT SONAME 'mysqlepglv.so';
CREATE FUNCTION epglvr RETURNS INT SONAME 'mysqlepglv.so';
set global innodb_file_format = BARRACUDA;
set global innodb_large_prefix = ON;
SELECT * FROM mysql.func;
FLUSH PRIVILEGES;

Auf dem Datenbankserver selbst fehlt natürlich das Plugin (falls extern) für den epgd. Diesen kann man sie direkt vom VDR kopieren

/usr/lib64/mysql/plugin/mysqlepglv.so

Oder man installiert den ganzen epgd am DBhost auch. Aber nachdem nur diese eine Datei benötigt wird, genügt es diese zu kopieren. Das funktioniert natürlich nur wenn die Architektur der Hosts identisch ist. Nachdem wir ja von einem anderen Host auf unsere Datenbank zugreifen, nicht vergessen die Zugriffsrechte am Datenbankserver zu setzten.

Nun kann man den EPGD starten und danach die VDR. Startreihenfolge der Services sollte also passen. Beim Ersten Start des Epgd werden sämtliche Tabellen angelegt, danach wird mit dem Füllen dieser begonnen. Dieser Vorgang kann schon mal einen ganzen Tag in Anspruch nehmen.

Das Startscript sollte so aussehen. (nur ändern wenn was nicht richtig funktioniert) Wichtig ist hier das auch der Pfad für die Plugins gesetzt ist:

[Unit]
Description=Database driven EPG Data collector
After=mysqld.service
Requires=mysqld.service

[Service]
Type=forking
ExecStart=/usr/bin/epgd -c /etc/epgd -p /usr/lib/epgd/plugins

[Install]
WantedBy=multi-user.target

Für EPGHTTPD so:

[Unit]
Description=EPGd HTTP daemon
After=epgd.service
Requires=epgd.service

[Service]
Type=forking
ExecStart=/usr/bin/epghttpd -c /etc/epgd

[Install]
WantedBy=multi-user.target
systemctl start epgd.service
systemctl start vdr.service

Die Datenbank kann gut bis zu 6GB groß werden. Je nachdem was alles an Sendern ausgewählt wurde. Um die Downloadmenge und die Sender einzuschränken kann man noch folgende Datei auf seine Bedürfnisse bearbeiten:

/etc/epgd/tvmovie-channelmap.conf

Um auch Icons in den Channels zu haben gibt es zwei Projekte. Einmal mit PNG (Default) und einmal mit SVG. PNG funktioniert einfach nicht, kann irgendwie nicht dargestellt werden. LOG: No loader for file format. Eine direkte Lösung hierfür gibt es nicht. Deshalb am besten die SVGs verwenden.

cd /var/epgd/www
git clone https://github.com/FrodoVDR/channellogos.git channellogos_svg
mv channellogos_svg/logos-orig channellogos

Nun kann auch das Webinterface aufgerufen werden: http://vdr.local:9999 Je nach Installation muss noch unter „Einstellungen → Allgemein → System“ bei logoSufix, der Wert svg hinein geschrieben werden. Ab nun sind die Icons sichtbar.