<?php
header('Content-Type: application/json');

// Константы
$PLAYLIST_URLS = [
    "https://iptv-org.github.io/iptv/index.region.m3u", // Первый плейлист
    "https://example.com/another-playlist.m3u"          // Второй плейлист
];
$PLAYLIST_FILE = __DIR__ . "/playlists/combined_playlist.m3u";

// Функция для загрузки плейлистов
function download_playlists($urls, $file) {
    $combined_data = "#EXTM3U\n"; // Заголовок для объединенного плейлиста

    foreach ($urls as $url) {
        $data = file_get_contents($url);
        if ($data !== false) {
            $combined_data .= $data . "\n";
        }
    }

    file_put_contents($file, $combined_data);
    return true;
}

// Функция для проверки работоспособности каналов
function check_channel($url) {
    $context = stream_context_create([
        'http' => ['method' => 'HEAD', 'timeout' => 5]
    ]);
    return @file_get_contents($url, false, $context) !== false;
}

// Функция для обработки плейлиста
function process_playlist($file) {
    $channels = [];
    $lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    for ($i = 0; $i < count($lines); $i++) {
        if (strpos($lines[$i], "#EXTINF") === 0) {
            $name = trim(explode(",", $lines[$i])[1]);
            $url = trim($lines[$i + 1]);
            $category = "Other";
            if (preg_match('/group-title="([^"]+)"/', $lines[$i], $matches)) {
                $category = $matches[1];
            }
            if (check_channel($url)) {
                $channels[] = [
                    "name" => $name,
                    "url" => $url,
                    "category" => $category
                ];
            }
        }
    }

    return $channels;
}

// Загрузка плейлистов, если их нет
if (!file_exists($PLAYLIST_FILE)) {
    download_playlists($PLAYLIST_URLS, $PLAYLIST_FILE);
}

// Обработка плейлиста и отправка JSON
$channels = process_playlist($PLAYLIST_FILE);
echo json_encode($channels);
?>