From fe8342772d071de7ffeb445666495007e907b0af Mon Sep 17 00:00:00 2001 From: root Date: Mon, 6 Jul 2026 17:03:04 +0200 Subject: [PATCH] Initial TVGuide project --- .gitignore | 9 +++ app/cache/.gitkeep | 0 app/public/index.php | 183 +++++++++++++++++++++++++++++++++++++++++++ docker-compose.yaml | 15 ++++ epg/.gitkeep | 0 logos/.gitkeep | 0 logs/.gitkeep | 0 posters/.gitkeep | 0 8 files changed, 207 insertions(+) create mode 100644 .gitignore create mode 100644 app/cache/.gitkeep create mode 100644 app/public/index.php create mode 100644 docker-compose.yaml create mode 100644 epg/.gitkeep create mode 100644 logos/.gitkeep create mode 100644 logs/.gitkeep create mode 100644 posters/.gitkeep diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a2003f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +app/cache/* +epg/* +logs/* +posters/* +logos/* +backups/* +.env + +!.gitkeep diff --git a/app/cache/.gitkeep b/app/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/public/index.php b/app/public/index.php new file mode 100644 index 0000000..91f297d --- /dev/null +++ b/app/public/index.php @@ -0,0 +1,183 @@ +setTimezone(new DateTimeZone('Europe/Vienna')); + return $dt; +} + +$channels = []; +$programmes = []; + +if (file_exists($xmlFile)) { + $xml = simplexml_load_file($xmlFile); + + foreach ($xml->channel as $channel) { + $id = (string)$channel['id']; + $channels[$id] = [ + 'id' => $id, + 'name' => (string)$channel->{'display-name'}, + 'icon' => isset($channel->icon) ? (string)$channel->icon['src'] : null, + ]; + } + + foreach ($xml->programme as $programme) { + $channelId = (string)$programme['channel']; + $start = parseXmltvTime((string)$programme['start']); + $stop = parseXmltvTime((string)$programme['stop']); + + if (!$start || !$stop) { + continue; + } + + $programmes[$channelId][] = [ + 'title' => (string)$programme->title, + 'desc' => (string)$programme->desc, + 'category' => (string)$programme->category, + 'start' => $start, + 'stop' => $stop, + ]; + } +} +?> + + + + + TVGuide + + + + +
+

TVGuide

+
+ +
+ +
+ Keine Sender gefunden. Prüfe /opt/tvguide-docker/epg/guide.xml. +
+ + + $channel): ?> +
+
+ +
+ + +
+
Keine Sendungen gefunden.
+
+ + +
+
+ format('H:i') ?> – format('H:i') ?> +
+
+ +
+ +
+ +
+ + + + +
+ + +
+ +
+ + diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..e66b104 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,15 @@ +services: + tvguide: + image: php:8.4-apache + container_name: tvguide + restart: unless-stopped + ports: + - "18090:80" + volumes: + - ./app/public:/var/www/html + - ./app/src:/var/www/src + - ./app/config:/var/www/config + - ./app/cache:/var/www/cache + - ./epg:/var/www/epg + - ./logos:/var/www/html/logos + - ./posters:/var/www/html/posters diff --git a/epg/.gitkeep b/epg/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/logos/.gitkeep b/logos/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/logs/.gitkeep b/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/posters/.gitkeep b/posters/.gitkeep new file mode 100644 index 0000000..e69de29