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 @@ + + + + + image/svg+xml + + + + + + + + + + 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 @@ - - - ORF 1 - 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 @@ - - - ORF 2a - 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 @@ + +
-
- + @@ -13,4 +20,3 @@
- diff --git a/app/templates/channels.php b/app/templates/channels.php index 5d8054b..d562e58 100644 --- a/app/templates/channels.php +++ b/app/templates/channels.php @@ -1,3 +1,7 @@ + +
Sender gespeichert. EPG wird beim nächsten Laden neu aufgebaut.
@@ -60,6 +64,7 @@ $enabled = !empty($channel['enabled']); $favorite = !empty($channel['favorite']); $name = $channel['name'] ?? $id; + $logoUrl = LogoService::getLogoUrl($id); $number = (int)($channel['number'] ?? 999999); $group = $channel['group'] ?? 'Unknown'; ?> @@ -78,6 +83,9 @@ >
+