diff --git a/app/bin/import-logos.php b/app/bin/import-logos.php
new file mode 100644
index 0000000..8939456
--- /dev/null
+++ b/app/bin/import-logos.php
@@ -0,0 +1,141 @@
+isFile()) {
+ continue;
+ }
+
+ $ext = strtolower($file->getExtension());
+
+ if (!in_array($ext, $extensions, true)) {
+ continue;
+ }
+
+ $basename = pathinfo($file->getFilename(), PATHINFO_FILENAME);
+ $key = normalize($basename);
+
+ if (!isset($files[$key])) {
+ $files[$key] = [];
+ }
+
+ $files[$key][] = $file->getPathname();
+}
+
+$copied = 0;
+$missing = 0;
+$skipped = 0;
+
+foreach ($channels as $id => $channel) {
+ if (hasExistingLogo($targetDir, $id, $extensions)) {
+ $skipped++;
+ continue;
+ }
+
+ $names = candidateNames($id, $channel);
+ $match = null;
+
+ foreach ($names as $name) {
+ $key = normalize($name);
+
+ if (isset($files[$key])) {
+ $match = pickBestFile($files[$key]);
+ break;
+ }
+ }
+
+ if (!$match) {
+ $missing++;
+ echo "missing: {$id} | " . ($channel['name'] ?? '') . PHP_EOL;
+ continue;
+ }
+
+ $ext = strtolower(pathinfo($match, PATHINFO_EXTENSION));
+ $target = $targetDir . '/' . $id . '.' . $ext;
+
+ copy($match, $target);
+ $copied++;
+
+ echo "copied: {$id} <- {$match}" . PHP_EOL;
+}
+
+echo PHP_EOL;
+echo "copied: {$copied}" . PHP_EOL;
+echo "skipped: {$skipped}" . PHP_EOL;
+echo "missing: {$missing}" . PHP_EOL;
+
+function candidateNames(string $id, array $channel): array
+{
+ $name = $channel['name'] ?? $id;
+
+ $baseId = preg_replace('/\.(at|de|ch)$/i', '', $id);
+
+ return array_unique(array_filter([
+ $id,
+ $baseId,
+ $name,
+ str_replace(['+', '&'], ['plus', 'and'], $name),
+ str_replace([' HD', ' SD', ' UHD'], '', $name),
+ str_replace([' eins'], [' 1'], $name),
+ str_replace(['III'], ['3'], $name),
+ str_replace(['II'], ['2'], $name),
+ ]));
+}
+
+function normalize(string $value): string
+{
+ $value = strtolower($value);
+ $value = str_replace(['ä', 'ö', 'ü', 'ß'], ['ae', 'oe', 'ue', 'ss'], $value);
+ $value = preg_replace('/\.(at|de|ch)$/', '', $value);
+ $value = preg_replace('/[^a-z0-9]+/', '', $value);
+ return trim($value);
+}
+
+function hasExistingLogo(string $dir, string $id, array $extensions): bool
+{
+ foreach ($extensions as $ext) {
+ if (file_exists($dir . '/' . $id . '.' . $ext)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function pickBestFile(array $files): string
+{
+ usort($files, function ($a, $b) {
+ $priority = ['svg' => 0, 'png' => 1, 'webp' => 2, 'jpg' => 3, 'jpeg' => 4];
+
+ $ea = strtolower(pathinfo($a, PATHINFO_EXTENSION));
+ $eb = strtolower(pathinfo($b, PATHINFO_EXTENSION));
+
+ return ($priority[$ea] ?? 99) <=> ($priority[$eb] ?? 99);
+ });
+
+ return $files[0];
+}
diff --git a/app/public/assets/css/main.css b/app/public/assets/css/main.css
index d88bd12..4a58ab4 100644
--- a/app/public/assets/css/main.css
+++ b/app/public/assets/css/main.css
@@ -120,3 +120,69 @@
background: var(--panel);
color: var(--text);
}
+
+.channel-logo {
+ width: 42px;
+ height: 30px;
+ flex: 0 0 42px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--panel);
+ border: 1px solid var(--border);
+ border-radius: 0.4rem;
+ overflow: hidden;
+}
+
+.channel-logo img {
+ max-width: 100%;
+ max-height: 100%;
+ object-fit: contain;
+}
+
+.channel-logo span {
+ font-size: 1.1rem;
+ opacity: 0.75;
+}
+
+.channel-logo {
+ width: 42px;
+ height: 30px;
+ flex: 0 0 42px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--panel);
+ border: 1px solid var(--border);
+ border-radius: 0.4rem;
+ overflow: hidden;
+}
+
+.channel-logo img {
+ max-width: 100%;
+ max-height: 100%;
+ object-fit: contain;
+}
+
+.channel-logo span {
+ font-size: 1.1rem;
+ opacity: 0.75;
+}
+
+.mini-channel-logo {
+ width: 34px;
+ height: 24px;
+ object-fit: contain;
+ background: var(--panel);
+ border: 1px solid var(--border);
+ border-radius: 0.35rem;
+ padding: 2px;
+ flex: 0 0 34px;
+}
+
+.channel-header-with-logo,
+.now-channel {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+}
diff --git a/app/public/assets/logos/13thStreet.de.svg b/app/public/assets/logos/13thStreet.de.svg
new file mode 100644
index 0000000..a11b09f
--- /dev/null
+++ b/app/public/assets/logos/13thStreet.de.svg
@@ -0,0 +1,16 @@
+
diff --git a/app/public/assets/logos/ARCADIAWorld.at.svg b/app/public/assets/logos/ARCADIAWorld.at.svg
new file mode 100644
index 0000000..4320a5f
--- /dev/null
+++ b/app/public/assets/logos/ARCADIAWorld.at.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/ATV.de.svg b/app/public/assets/logos/ATV.de.svg
new file mode 100644
index 0000000..8f3ec2f
--- /dev/null
+++ b/app/public/assets/logos/ATV.de.svg
@@ -0,0 +1,4 @@
+
diff --git a/app/public/assets/logos/ATV2.at.svg b/app/public/assets/logos/ATV2.at.svg
new file mode 100644
index 0000000..1dd7467
--- /dev/null
+++ b/app/public/assets/logos/ATV2.at.svg
@@ -0,0 +1,6 @@
+
diff --git a/app/public/assets/logos/AXNWhite.de.svg b/app/public/assets/logos/AXNWhite.de.svg
new file mode 100644
index 0000000..37faf9f
--- /dev/null
+++ b/app/public/assets/logos/AXNWhite.de.svg
@@ -0,0 +1,78 @@
+
diff --git a/app/public/assets/logos/AnimalPlanet.de.svg b/app/public/assets/logos/AnimalPlanet.de.svg
new file mode 100644
index 0000000..4987c28
--- /dev/null
+++ b/app/public/assets/logos/AnimalPlanet.de.svg
@@ -0,0 +1,15 @@
+
diff --git a/app/public/assets/logos/BonGusto.de.svg b/app/public/assets/logos/BonGusto.de.svg
new file mode 100644
index 0000000..623a1a4
--- /dev/null
+++ b/app/public/assets/logos/BonGusto.de.svg
@@ -0,0 +1,11 @@
+
diff --git a/app/public/assets/logos/CartoonNetwork.de.svg b/app/public/assets/logos/CartoonNetwork.de.svg
new file mode 100644
index 0000000..1daccf4
--- /dev/null
+++ b/app/public/assets/logos/CartoonNetwork.de.svg
@@ -0,0 +1,21 @@
+
diff --git a/app/public/assets/logos/ClipMyHorseTV.de.svg b/app/public/assets/logos/ClipMyHorseTV.de.svg
new file mode 100644
index 0000000..e2eb5d4
--- /dev/null
+++ b/app/public/assets/logos/ClipMyHorseTV.de.svg
@@ -0,0 +1,9 @@
+
diff --git a/app/public/assets/logos/CuriosityChannel.de.svg b/app/public/assets/logos/CuriosityChannel.de.svg
new file mode 100644
index 0000000..04d4222
--- /dev/null
+++ b/app/public/assets/logos/CuriosityChannel.de.svg
@@ -0,0 +1,30 @@
+
diff --git a/app/public/assets/logos/DAZN1.de.svg b/app/public/assets/logos/DAZN1.de.svg
new file mode 100644
index 0000000..786157f
--- /dev/null
+++ b/app/public/assets/logos/DAZN1.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/DAZN2.de.svg b/app/public/assets/logos/DAZN2.de.svg
new file mode 100644
index 0000000..2ca994c
--- /dev/null
+++ b/app/public/assets/logos/DAZN2.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/DeluxeFlashback.de.svg b/app/public/assets/logos/DeluxeFlashback.de.svg
new file mode 100644
index 0000000..a854d13
--- /dev/null
+++ b/app/public/assets/logos/DeluxeFlashback.de.svg
@@ -0,0 +1,22 @@
+
diff --git a/app/public/assets/logos/DeluxeRap.de.svg b/app/public/assets/logos/DeluxeRap.de.svg
new file mode 100644
index 0000000..9576344
--- /dev/null
+++ b/app/public/assets/logos/DeluxeRap.de.svg
@@ -0,0 +1,16 @@
+
diff --git a/app/public/assets/logos/DeluxeRock.de.svg b/app/public/assets/logos/DeluxeRock.de.svg
new file mode 100644
index 0000000..da8b0f2
--- /dev/null
+++ b/app/public/assets/logos/DeluxeRock.de.svg
@@ -0,0 +1,17 @@
+
diff --git a/app/public/assets/logos/DuckTV.day.svg b/app/public/assets/logos/DuckTV.day.svg
new file mode 100644
index 0000000..7c559f1
--- /dev/null
+++ b/app/public/assets/logos/DuckTV.day.svg
@@ -0,0 +1,21 @@
+
diff --git a/app/public/assets/logos/EWTN.de.svg b/app/public/assets/logos/EWTN.de.svg
new file mode 100644
index 0000000..1985982
--- /dev/null
+++ b/app/public/assets/logos/EWTN.de.svg
@@ -0,0 +1,8 @@
+
diff --git a/app/public/assets/logos/EdgeSport.de.svg b/app/public/assets/logos/EdgeSport.de.svg
new file mode 100644
index 0000000..916167b
--- /dev/null
+++ b/app/public/assets/logos/EdgeSport.de.svg
@@ -0,0 +1,18 @@
+
diff --git a/app/public/assets/logos/Eurosport1.at.svg b/app/public/assets/logos/Eurosport1.at.svg
new file mode 100644
index 0000000..1c72655
--- /dev/null
+++ b/app/public/assets/logos/Eurosport1.at.svg
@@ -0,0 +1,17 @@
+
diff --git a/app/public/assets/logos/FolxTV.de.svg b/app/public/assets/logos/FolxTV.de.svg
new file mode 100644
index 0000000..2ffad03
--- /dev/null
+++ b/app/public/assets/logos/FolxTV.de.svg
@@ -0,0 +1,19 @@
+
diff --git a/app/public/assets/logos/GoldstarTV.de.svg b/app/public/assets/logos/GoldstarTV.de.svg
new file mode 100644
index 0000000..749a160
--- /dev/null
+++ b/app/public/assets/logos/GoldstarTV.de.svg
@@ -0,0 +1,16 @@
+
diff --git a/app/public/assets/logos/GuteLauneTV.de.svg b/app/public/assets/logos/GuteLauneTV.de.svg
new file mode 100644
index 0000000..e190002
--- /dev/null
+++ b/app/public/assets/logos/GuteLauneTV.de.svg
@@ -0,0 +1,166 @@
+
diff --git a/app/public/assets/logos/HSETrend.de.svg b/app/public/assets/logos/HSETrend.de.svg
new file mode 100644
index 0000000..3fe676a
--- /dev/null
+++ b/app/public/assets/logos/HSETrend.de.svg
@@ -0,0 +1,8 @@
+
diff --git a/app/public/assets/logos/Heimatkanal.de.svg b/app/public/assets/logos/Heimatkanal.de.svg
new file mode 100644
index 0000000..a4c47f6
--- /dev/null
+++ b/app/public/assets/logos/Heimatkanal.de.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/public/assets/logos/HistoryChannel.de.svg b/app/public/assets/logos/HistoryChannel.de.svg
new file mode 100644
index 0000000..f47aa39
--- /dev/null
+++ b/app/public/assets/logos/HistoryChannel.de.svg
@@ -0,0 +1,1374 @@
+
diff --git a/app/public/assets/logos/Jukebox.de.svg b/app/public/assets/logos/Jukebox.de.svg
new file mode 100644
index 0000000..89166df
--- /dev/null
+++ b/app/public/assets/logos/Jukebox.de.svg
@@ -0,0 +1,4 @@
+
diff --git a/app/public/assets/logos/JuweloTV.de.svg b/app/public/assets/logos/JuweloTV.de.svg
new file mode 100644
index 0000000..3d72877
--- /dev/null
+++ b/app/public/assets/logos/JuweloTV.de.svg
@@ -0,0 +1,92 @@
+
diff --git a/app/public/assets/logos/KTV.de.svg b/app/public/assets/logos/KTV.de.svg
new file mode 100644
index 0000000..2c21364
--- /dev/null
+++ b/app/public/assets/logos/KTV.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/KURIER_TV.at.svg b/app/public/assets/logos/KURIER_TV.at.svg
new file mode 100644
index 0000000..88e800f
--- /dev/null
+++ b/app/public/assets/logos/KURIER_TV.at.svg
@@ -0,0 +1,7 @@
+
diff --git a/app/public/assets/logos/Kinowelt.de.svg b/app/public/assets/logos/Kinowelt.de.svg
new file mode 100644
index 0000000..1b0db38
--- /dev/null
+++ b/app/public/assets/logos/Kinowelt.de.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/public/assets/logos/KroneHit.at.svg b/app/public/assets/logos/KroneHit.at.svg
new file mode 100644
index 0000000..293c7a3
--- /dev/null
+++ b/app/public/assets/logos/KroneHit.at.svg
@@ -0,0 +1,4 @@
+
diff --git a/app/public/assets/logos/LT1.at.svg b/app/public/assets/logos/LT1.at.svg
new file mode 100644
index 0000000..cc17ac7
--- /dev/null
+++ b/app/public/assets/logos/LT1.at.svg
@@ -0,0 +1,25 @@
+
diff --git a/app/public/assets/logos/LandleTV.at.png b/app/public/assets/logos/LandleTV.at.png
new file mode 100644
index 0000000..93457b1
Binary files /dev/null and b/app/public/assets/logos/LandleTV.at.png differ
diff --git a/app/public/assets/logos/Laola1.at.svg b/app/public/assets/logos/Laola1.at.svg
new file mode 100644
index 0000000..12ca798
--- /dev/null
+++ b/app/public/assets/logos/Laola1.at.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/public/assets/logos/LustPur.de.svg b/app/public/assets/logos/LustPur.de.svg
new file mode 100644
index 0000000..6f38e91
--- /dev/null
+++ b/app/public/assets/logos/LustPur.de.svg
@@ -0,0 +1,11 @@
+
diff --git a/app/public/assets/logos/MarcoPoloTV.de.svg b/app/public/assets/logos/MarcoPoloTV.de.svg
new file mode 100644
index 0000000..40d8d7f
--- /dev/null
+++ b/app/public/assets/logos/MarcoPoloTV.de.svg
@@ -0,0 +1,19 @@
+
diff --git a/app/public/assets/logos/MelodieTV.at.svg b/app/public/assets/logos/MelodieTV.at.svg
new file mode 100644
index 0000000..2acdc68
--- /dev/null
+++ b/app/public/assets/logos/MelodieTV.at.svg
@@ -0,0 +1,20 @@
+
diff --git a/app/public/assets/logos/MorethanSportsTV.de.svg b/app/public/assets/logos/MorethanSportsTV.de.svg
new file mode 100644
index 0000000..a9441be
--- /dev/null
+++ b/app/public/assets/logos/MorethanSportsTV.de.svg
@@ -0,0 +1,196 @@
+
diff --git a/app/public/assets/logos/NatGeoHD.de.svg b/app/public/assets/logos/NatGeoHD.de.svg
new file mode 100644
index 0000000..1b15b29
--- /dev/null
+++ b/app/public/assets/logos/NatGeoHD.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/NickJr.de.svg b/app/public/assets/logos/NickJr.de.svg
new file mode 100644
index 0000000..704f518
--- /dev/null
+++ b/app/public/assets/logos/NickJr.de.svg
@@ -0,0 +1,15 @@
+
diff --git a/app/public/assets/logos/Nickelodeon.at.svg b/app/public/assets/logos/Nickelodeon.at.svg
new file mode 100644
index 0000000..9b626d3
--- /dev/null
+++ b/app/public/assets/logos/Nickelodeon.at.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/Nicktoons.de.svg b/app/public/assets/logos/Nicktoons.de.svg
new file mode 100644
index 0000000..44cdcbf
--- /dev/null
+++ b/app/public/assets/logos/Nicktoons.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/OE24TV.at.svg b/app/public/assets/logos/OE24TV.at.svg
new file mode 100644
index 0000000..16d2d34
--- /dev/null
+++ b/app/public/assets/logos/OE24TV.at.svg
@@ -0,0 +1,7 @@
+
diff --git a/app/public/assets/logos/OKTO.at.svg b/app/public/assets/logos/OKTO.at.svg
new file mode 100644
index 0000000..9325e79
--- /dev/null
+++ b/app/public/assets/logos/OKTO.at.svg
@@ -0,0 +1,11 @@
+
diff --git a/app/public/assets/logos/ORF1.at.svg b/app/public/assets/logos/ORF1.at.svg
new file mode 100644
index 0000000..a432bbf
--- /dev/null
+++ b/app/public/assets/logos/ORF1.at.svg
@@ -0,0 +1,19 @@
+
diff --git a/app/public/assets/logos/ORF2.at.svg b/app/public/assets/logos/ORF2.at.svg
new file mode 100644
index 0000000..c32ef6f
--- /dev/null
+++ b/app/public/assets/logos/ORF2.at.svg
@@ -0,0 +1,21 @@
+
+
diff --git a/app/public/assets/logos/ORF2europe.at.svg b/app/public/assets/logos/ORF2europe.at.svg
new file mode 100644
index 0000000..d99c1f3
--- /dev/null
+++ b/app/public/assets/logos/ORF2europe.at.svg
@@ -0,0 +1,16 @@
+
diff --git a/app/public/assets/logos/ORF3.at.svg b/app/public/assets/logos/ORF3.at.svg
new file mode 100644
index 0000000..f09a8af
--- /dev/null
+++ b/app/public/assets/logos/ORF3.at.svg
@@ -0,0 +1,38 @@
+
diff --git a/app/public/assets/logos/ORFSport.at.svg b/app/public/assets/logos/ORFSport.at.svg
new file mode 100644
index 0000000..139420d
--- /dev/null
+++ b/app/public/assets/logos/ORFSport.at.svg
@@ -0,0 +1,28 @@
+
diff --git a/app/public/assets/logos/OneMusicTelevision.de.svg b/app/public/assets/logos/OneMusicTelevision.de.svg
new file mode 100644
index 0000000..790d0e8
--- /dev/null
+++ b/app/public/assets/logos/OneMusicTelevision.de.svg
@@ -0,0 +1,20 @@
+
diff --git a/app/public/assets/logos/Pro7.at.svg b/app/public/assets/logos/Pro7.at.svg
new file mode 100644
index 0000000..7a0e213
--- /dev/null
+++ b/app/public/assets/logos/Pro7.at.svg
@@ -0,0 +1,6 @@
+
diff --git a/app/public/assets/logos/ProSiebenFun.de.svg b/app/public/assets/logos/ProSiebenFun.de.svg
new file mode 100644
index 0000000..6199440
--- /dev/null
+++ b/app/public/assets/logos/ProSiebenFun.de.svg
@@ -0,0 +1,11 @@
+
diff --git a/app/public/assets/logos/Puls4.at.svg b/app/public/assets/logos/Puls4.at.svg
new file mode 100644
index 0000000..e7f7091
--- /dev/null
+++ b/app/public/assets/logos/Puls4.at.svg
@@ -0,0 +1,25 @@
+
diff --git a/app/public/assets/logos/QVC.de.svg b/app/public/assets/logos/QVC.de.svg
new file mode 100644
index 0000000..6d64ac9
--- /dev/null
+++ b/app/public/assets/logos/QVC.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/R9Osterreich.at.svg b/app/public/assets/logos/R9Osterreich.at.svg
new file mode 100644
index 0000000..1be70dd
--- /dev/null
+++ b/app/public/assets/logos/R9Osterreich.at.svg
@@ -0,0 +1,31 @@
+
diff --git a/app/public/assets/logos/RTLLiving.de.svg b/app/public/assets/logos/RTLLiving.de.svg
new file mode 100644
index 0000000..d3b4f89
--- /dev/null
+++ b/app/public/assets/logos/RTLLiving.de.svg
@@ -0,0 +1,13 @@
+
diff --git a/app/public/assets/logos/RTLPassion.de.svg b/app/public/assets/logos/RTLPassion.de.svg
new file mode 100644
index 0000000..e98e0ea
--- /dev/null
+++ b/app/public/assets/logos/RTLPassion.de.svg
@@ -0,0 +1,13 @@
+
diff --git a/app/public/assets/logos/RiC.de.svg b/app/public/assets/logos/RiC.de.svg
new file mode 100644
index 0000000..6c319ef
--- /dev/null
+++ b/app/public/assets/logos/RiC.de.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/public/assets/logos/Romance.de.svg b/app/public/assets/logos/Romance.de.svg
new file mode 100644
index 0000000..e23fbeb
--- /dev/null
+++ b/app/public/assets/logos/Romance.de.svg
@@ -0,0 +1,15 @@
+
diff --git a/app/public/assets/logos/SPORT1plus.de.svg b/app/public/assets/logos/SPORT1plus.de.svg
new file mode 100644
index 0000000..45ad0ab
--- /dev/null
+++ b/app/public/assets/logos/SPORT1plus.de.svg
@@ -0,0 +1,27 @@
+
diff --git a/app/public/assets/logos/Sat1.at.png b/app/public/assets/logos/Sat1.at.png
new file mode 100644
index 0000000..1405206
Binary files /dev/null and b/app/public/assets/logos/Sat1.at.png differ
diff --git a/app/public/assets/logos/Sat1Comedy.de.png b/app/public/assets/logos/Sat1Comedy.de.png
new file mode 100644
index 0000000..d980ad2
Binary files /dev/null and b/app/public/assets/logos/Sat1Comedy.de.png differ
diff --git a/app/public/assets/logos/Sat1Emotions.de.png b/app/public/assets/logos/Sat1Emotions.de.png
new file mode 100644
index 0000000..d980ad2
Binary files /dev/null and b/app/public/assets/logos/Sat1Emotions.de.png differ
diff --git a/app/public/assets/logos/SchauTV.at.svg b/app/public/assets/logos/SchauTV.at.svg
new file mode 100644
index 0000000..88e800f
--- /dev/null
+++ b/app/public/assets/logos/SchauTV.at.svg
@@ -0,0 +1,7 @@
+
diff --git a/app/public/assets/logos/SciFi.de.svg b/app/public/assets/logos/SciFi.de.svg
new file mode 100644
index 0000000..624616e
--- /dev/null
+++ b/app/public/assets/logos/SciFi.de.svg
@@ -0,0 +1,13 @@
+
diff --git a/app/public/assets/logos/ServusTV.at.svg b/app/public/assets/logos/ServusTV.at.svg
new file mode 100644
index 0000000..7382800
--- /dev/null
+++ b/app/public/assets/logos/ServusTV.at.svg
@@ -0,0 +1,11 @@
+
diff --git a/app/public/assets/logos/ServusTVMotorsport.de.svg b/app/public/assets/logos/ServusTVMotorsport.de.svg
new file mode 100644
index 0000000..9acadde
--- /dev/null
+++ b/app/public/assets/logos/ServusTVMotorsport.de.svg
@@ -0,0 +1,23 @@
+
diff --git a/app/public/assets/logos/Silverline.de.svg b/app/public/assets/logos/Silverline.de.svg
new file mode 100644
index 0000000..2984a0d
--- /dev/null
+++ b/app/public/assets/logos/Silverline.de.svg
@@ -0,0 +1,19 @@
+
diff --git a/app/public/assets/logos/SixxAustria.at.svg b/app/public/assets/logos/SixxAustria.at.svg
new file mode 100644
index 0000000..18f38c1
--- /dev/null
+++ b/app/public/assets/logos/SixxAustria.at.svg
@@ -0,0 +1,17 @@
+
diff --git a/app/public/assets/logos/SkyAtlanticHD.de.svg b/app/public/assets/logos/SkyAtlanticHD.de.svg
new file mode 100644
index 0000000..3a9c7d5
--- /dev/null
+++ b/app/public/assets/logos/SkyAtlanticHD.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga10.de.svg b/app/public/assets/logos/SkyBundesliga10.de.svg
new file mode 100644
index 0000000..05d0f3a
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga10.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga2.de.svg b/app/public/assets/logos/SkyBundesliga2.de.svg
new file mode 100644
index 0000000..92b36d3
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga2.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga3.de.svg b/app/public/assets/logos/SkyBundesliga3.de.svg
new file mode 100644
index 0000000..4625894
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga3.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga4.de.svg b/app/public/assets/logos/SkyBundesliga4.de.svg
new file mode 100644
index 0000000..7fbec3f
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga4.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga5.de.svg b/app/public/assets/logos/SkyBundesliga5.de.svg
new file mode 100644
index 0000000..1a1c911
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga5.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga6.de.svg b/app/public/assets/logos/SkyBundesliga6.de.svg
new file mode 100644
index 0000000..a2c30af
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga6.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga7.de.svg b/app/public/assets/logos/SkyBundesliga7.de.svg
new file mode 100644
index 0000000..29c917c
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga7.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga8.de.svg b/app/public/assets/logos/SkyBundesliga8.de.svg
new file mode 100644
index 0000000..24e77d0
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga8.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyBundesliga9.de.svg b/app/public/assets/logos/SkyBundesliga9.de.svg
new file mode 100644
index 0000000..6118389
--- /dev/null
+++ b/app/public/assets/logos/SkyBundesliga9.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyCinemaClassics.de.svg b/app/public/assets/logos/SkyCinemaClassics.de.svg
new file mode 100644
index 0000000..39b7633
--- /dev/null
+++ b/app/public/assets/logos/SkyCinemaClassics.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyCinemaFamily.de.svg b/app/public/assets/logos/SkyCinemaFamily.de.svg
new file mode 100644
index 0000000..f05134b
--- /dev/null
+++ b/app/public/assets/logos/SkyCinemaFamily.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyCinemaPremieren.de.svg b/app/public/assets/logos/SkyCinemaPremieren.de.svg
new file mode 100644
index 0000000..151e160
--- /dev/null
+++ b/app/public/assets/logos/SkyCinemaPremieren.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyCrime.de.svg b/app/public/assets/logos/SkyCrime.de.svg
new file mode 100644
index 0000000..e2d2cb5
--- /dev/null
+++ b/app/public/assets/logos/SkyCrime.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyKrimi.de.svg b/app/public/assets/logos/SkyKrimi.de.svg
new file mode 100644
index 0000000..ec33e06
--- /dev/null
+++ b/app/public/assets/logos/SkyKrimi.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkyShowcase.de.svg b/app/public/assets/logos/SkyShowcase.de.svg
new file mode 100644
index 0000000..58d6ce9
--- /dev/null
+++ b/app/public/assets/logos/SkyShowcase.de.svg
@@ -0,0 +1,55 @@
+
diff --git a/app/public/assets/logos/SkySport1.de.svg b/app/public/assets/logos/SkySport1.de.svg
new file mode 100644
index 0000000..c5babcb
--- /dev/null
+++ b/app/public/assets/logos/SkySport1.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport10.de.svg b/app/public/assets/logos/SkySport10.de.svg
new file mode 100644
index 0000000..37d157f
--- /dev/null
+++ b/app/public/assets/logos/SkySport10.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport2.de.svg b/app/public/assets/logos/SkySport2.de.svg
new file mode 100644
index 0000000..2904b3c
--- /dev/null
+++ b/app/public/assets/logos/SkySport2.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport3.de.svg b/app/public/assets/logos/SkySport3.de.svg
new file mode 100644
index 0000000..940c860
--- /dev/null
+++ b/app/public/assets/logos/SkySport3.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport4.de.svg b/app/public/assets/logos/SkySport4.de.svg
new file mode 100644
index 0000000..ab6ec78
--- /dev/null
+++ b/app/public/assets/logos/SkySport4.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport5.de.svg b/app/public/assets/logos/SkySport5.de.svg
new file mode 100644
index 0000000..2205b8c
--- /dev/null
+++ b/app/public/assets/logos/SkySport5.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport6.de.svg b/app/public/assets/logos/SkySport6.de.svg
new file mode 100644
index 0000000..59fadb0
--- /dev/null
+++ b/app/public/assets/logos/SkySport6.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport7.de.svg b/app/public/assets/logos/SkySport7.de.svg
new file mode 100644
index 0000000..76df748
--- /dev/null
+++ b/app/public/assets/logos/SkySport7.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport8.de.svg b/app/public/assets/logos/SkySport8.de.svg
new file mode 100644
index 0000000..963e36b
--- /dev/null
+++ b/app/public/assets/logos/SkySport8.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySport9.de.svg b/app/public/assets/logos/SkySport9.de.svg
new file mode 100644
index 0000000..a733387
--- /dev/null
+++ b/app/public/assets/logos/SkySport9.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportBundesliga.de.svg b/app/public/assets/logos/SkySportBundesliga.de.svg
new file mode 100644
index 0000000..2915b4d
--- /dev/null
+++ b/app/public/assets/logos/SkySportBundesliga.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportBundesligaUHD.de.svg b/app/public/assets/logos/SkySportBundesligaUHD.de.svg
new file mode 100644
index 0000000..fa8c17b
--- /dev/null
+++ b/app/public/assets/logos/SkySportBundesligaUHD.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportF1.de.svg b/app/public/assets/logos/SkySportF1.de.svg
new file mode 100644
index 0000000..71be99a
--- /dev/null
+++ b/app/public/assets/logos/SkySportF1.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportGolf.de.svg b/app/public/assets/logos/SkySportGolf.de.svg
new file mode 100644
index 0000000..0f7233d
--- /dev/null
+++ b/app/public/assets/logos/SkySportGolf.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportMix.de.svg b/app/public/assets/logos/SkySportMix.de.svg
new file mode 100644
index 0000000..75f8443
--- /dev/null
+++ b/app/public/assets/logos/SkySportMix.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportPremierLeague.de.svg b/app/public/assets/logos/SkySportPremierLeague.de.svg
new file mode 100644
index 0000000..412985d
--- /dev/null
+++ b/app/public/assets/logos/SkySportPremierLeague.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportTennis.de.svg b/app/public/assets/logos/SkySportTennis.de.svg
new file mode 100644
index 0000000..da94f29
--- /dev/null
+++ b/app/public/assets/logos/SkySportTennis.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportTopEvent.de.svg b/app/public/assets/logos/SkySportTopEvent.de.svg
new file mode 100644
index 0000000..d26474d
--- /dev/null
+++ b/app/public/assets/logos/SkySportTopEvent.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SkySportUHD.de.svg b/app/public/assets/logos/SkySportUHD.de.svg
new file mode 100644
index 0000000..3c66518
--- /dev/null
+++ b/app/public/assets/logos/SkySportUHD.de.svg
@@ -0,0 +1,2 @@
+
diff --git a/app/public/assets/logos/SonnenKlar.de.svg b/app/public/assets/logos/SonnenKlar.de.svg
new file mode 100644
index 0000000..ab7b365
--- /dev/null
+++ b/app/public/assets/logos/SonnenKlar.de.svg
@@ -0,0 +1,26 @@
+
diff --git a/app/public/assets/logos/SpiegelGeschichte.de.svg b/app/public/assets/logos/SpiegelGeschichte.de.svg
new file mode 100644
index 0000000..84019f0
--- /dev/null
+++ b/app/public/assets/logos/SpiegelGeschichte.de.svg
@@ -0,0 +1,30 @@
+
diff --git a/app/public/assets/logos/SportdigitalFussball.de.svg b/app/public/assets/logos/SportdigitalFussball.de.svg
new file mode 100644
index 0000000..c4a80c8
--- /dev/null
+++ b/app/public/assets/logos/SportdigitalFussball.de.svg
@@ -0,0 +1,54 @@
+
diff --git a/app/public/assets/logos/StimmungsgartenTV.at.svg b/app/public/assets/logos/StimmungsgartenTV.at.svg
new file mode 100644
index 0000000..9600a25
--- /dev/null
+++ b/app/public/assets/logos/StimmungsgartenTV.at.svg
@@ -0,0 +1,10 @@
+
diff --git a/app/public/assets/logos/StingrayDJAZZ.de.svg b/app/public/assets/logos/StingrayDJAZZ.de.svg
new file mode 100644
index 0000000..4bdb6a3
--- /dev/null
+++ b/app/public/assets/logos/StingrayDJAZZ.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/Tele5.at.svg b/app/public/assets/logos/Tele5.at.svg
new file mode 100644
index 0000000..25ea46a
--- /dev/null
+++ b/app/public/assets/logos/Tele5.at.svg
@@ -0,0 +1,10 @@
+
diff --git a/app/public/assets/logos/TirolTV.at.svg b/app/public/assets/logos/TirolTV.at.svg
new file mode 100644
index 0000000..0cfd133
--- /dev/null
+++ b/app/public/assets/logos/TirolTV.at.svg
@@ -0,0 +1,10 @@
+
diff --git a/app/public/assets/logos/Volksmusik.TV.de.svg b/app/public/assets/logos/Volksmusik.TV.de.svg
new file mode 100644
index 0000000..92d1bbc
--- /dev/null
+++ b/app/public/assets/logos/Volksmusik.TV.de.svg
@@ -0,0 +1,31 @@
+
diff --git a/app/public/assets/logos/W24.at.svg b/app/public/assets/logos/W24.at.svg
new file mode 100644
index 0000000..b9c35f2
--- /dev/null
+++ b/app/public/assets/logos/W24.at.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/Waidwerk.de.svg b/app/public/assets/logos/Waidwerk.de.svg
new file mode 100644
index 0000000..6d19bd7
--- /dev/null
+++ b/app/public/assets/logos/Waidwerk.de.svg
@@ -0,0 +1,12 @@
+
diff --git a/app/public/assets/logos/WarnerTVComedy.de.svg b/app/public/assets/logos/WarnerTVComedy.de.svg
new file mode 100644
index 0000000..2e7e5d0
--- /dev/null
+++ b/app/public/assets/logos/WarnerTVComedy.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/WarnerTVFilm.de.svg b/app/public/assets/logos/WarnerTVFilm.de.svg
new file mode 100644
index 0000000..d90190d
--- /dev/null
+++ b/app/public/assets/logos/WarnerTVFilm.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/WarnerTVSerie.de.svg b/app/public/assets/logos/WarnerTVSerie.de.svg
new file mode 100644
index 0000000..c4ac3b3
--- /dev/null
+++ b/app/public/assets/logos/WarnerTVSerie.de.svg
@@ -0,0 +1 @@
+
diff --git a/app/public/assets/logos/WedoMovies.de.svg b/app/public/assets/logos/WedoMovies.de.svg
new file mode 100644
index 0000000..f74d578
--- /dev/null
+++ b/app/public/assets/logos/WedoMovies.de.svg
@@ -0,0 +1,8 @@
+
diff --git a/app/public/assets/logos/WeltDerWunder.de.svg b/app/public/assets/logos/WeltDerWunder.de.svg
new file mode 100644
index 0000000..b5e7441
--- /dev/null
+++ b/app/public/assets/logos/WeltDerWunder.de.svg
@@ -0,0 +1,6 @@
+
diff --git a/app/public/assets/logos/ZweiMusicTelevision.de.svg b/app/public/assets/logos/ZweiMusicTelevision.de.svg
new file mode 100644
index 0000000..3db3b68
--- /dev/null
+++ b/app/public/assets/logos/ZweiMusicTelevision.de.svg
@@ -0,0 +1,27 @@
+
diff --git a/app/public/assets/logos/blueSport1.ch.svg b/app/public/assets/logos/blueSport1.ch.svg
new file mode 100644
index 0000000..d133d4d
--- /dev/null
+++ b/app/public/assets/logos/blueSport1.ch.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/public/assets/logos/blueSport2.ch.svg b/app/public/assets/logos/blueSport2.ch.svg
new file mode 100644
index 0000000..b63ab6c
--- /dev/null
+++ b/app/public/assets/logos/blueSport2.ch.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/public/assets/logos/blueStars.ch.svg b/app/public/assets/logos/blueStars.ch.svg
new file mode 100644
index 0000000..e35b9bf
--- /dev/null
+++ b/app/public/assets/logos/blueStars.ch.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/public/assets/logos/eSports1.de.svg b/app/public/assets/logos/eSports1.de.svg
new file mode 100644
index 0000000..7f7d2bd
--- /dev/null
+++ b/app/public/assets/logos/eSports1.de.svg
@@ -0,0 +1,24 @@
+
diff --git a/app/public/assets/logos/krone.tv.at.svg b/app/public/assets/logos/krone.tv.at.svg
new file mode 100644
index 0000000..9eb6f1c
--- /dev/null
+++ b/app/public/assets/logos/krone.tv.at.svg
@@ -0,0 +1,37 @@
+
diff --git a/app/public/logos/orf1.png.svg b/app/public/logos/orf1.png.svg
deleted file mode 100644
index b7d15f7..0000000
--- a/app/public/logos/orf1.png.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/public/logos/orf2.png.svg b/app/public/logos/orf2.png.svg
deleted file mode 100644
index 882bddb..0000000
--- a/app/public/logos/orf2.png.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/src/Services/LogoService.php b/app/src/Services/LogoService.php
new file mode 100644
index 0000000..a287376
--- /dev/null
+++ b/app/src/Services/LogoService.php
@@ -0,0 +1,28 @@
+
+