$httpCode, 'error_curl' => $errorCurl, 'data' => is_array($decodedData) ? $decodedData : [] ]; } // Opsi 2: Fallback ke file_get_contents (Stream Context) else { $opts = [ "http" => [ "method" => $method, "header" => implode("\r\n", $headers), "ignore_errors" => true, "timeout" => 15 ] ]; if ($method === 'POST') { $opts["http"]["content"] = json_encode($postData); } $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); $httpCode = 500; if (isset($http_response_header) && preg_match('{HTTP\/\S*\s(\d{3})}', $http_response_header[0], $matches)) { $httpCode = (int)$matches[1]; } $decodedData = json_decode($response, true); return [ 'code' => $httpCode, 'error_curl' => 'CURL nonaktif, menggunakan metode stream.', 'data' => is_array($decodedData) ? $decodedData : [] ]; } } // --- AJAX HANDLER UNTUK SARAN PENCARIAN (SUGGEST) --- if (isset($_GET['ajax']) && $_GET['ajax'] == 'suggest') { $q = isset($_GET['q']) ? $_GET['q'] : ''; $res = fetchApi("$baseUrl/suggest/" . urlencode($q) . "?lang=in"); header('Content-Type: application/json'); echo json_encode(isset($res['data']['data']) ? $res['data']['data'] : (isset($res['data']) ? $res['data'] : [])); exit; } // --- LOGIKA ROUTING --- $view = isset($_GET['view']) ? $_GET['view'] : 'foryou'; $pageTitle = "Dramabox"; $content = []; $details = null; $errorMsg = null; // Helper untuk mengekstrak data dari struktur yang berbeda-beda function extractData($res) { if (!isset($res['data'])) return []; if (isset($res['data']['data']) && is_array($res['data']['data'])) return $res['data']['data']; if (is_array($res['data'])) return $res['data']; return []; } switch ($view) { case 'new': $res = fetchApi("$baseUrl/new/1?lang=in&pageSize=10"); $content = extractData($res); $pageTitle = "Rilis Terbaru"; break; case 'rank': $res = fetchApi("$baseUrl/rank/1?lang=in"); $content = extractData($res); $pageTitle = "Peringkat Populer"; break; case 'classify': $genre = isset($_GET['genre']) ? $_GET['genre'] : '1357'; $res = fetchApi("$baseUrl/classify?lang=in&pageNo=1&genre=$genre&sort=1"); $content = extractData($res); $pageTitle = "Genre: " . ($genre == '1357' ? 'Romantis' : 'Aksi'); break; case 'search': $q = isset($_GET['q']) ? $_GET['q'] : ''; if ($q) { $res = fetchApi("$baseUrl/search/" . urlencode($q) . "/1?lang=in"); $content = extractData($res); $pageTitle = "Pencarian: $q"; } break; case 'detail': $id = isset($_GET['id']) ? $_GET['id'] : ''; $detailRes = fetchApi("$baseUrl/chapters/detail/$id?lang=in"); $details = isset($detailRes['data']['data']) ? $detailRes['data']['data'] : null; $res = fetchApi("$baseUrl/chapters/$id?lang=in"); $content = extractData($res); $pageTitle = isset($details['title']) ? $details['title'] : "Detail Drama"; if ($detailRes['code'] != 200) $res['code'] = $detailRes['code']; break; case 'watch': $id = isset($_GET['id']) ? $_GET['id'] : ''; $index = isset($_GET['index']) ? $_GET['index'] : 0; $postBody = ["bookId" => $id, "chapterIndex" => (int)$index, "lang" => "in"]; $res = fetchApi("$baseUrl/watch/player?lang=in", 'POST', $postBody); $content = extractData($res); $pageTitle = "Menonton Episode " . ($index + 1); break; default: // foryou $res = fetchApi("$baseUrl/foryou/1?lang=in"); $content = extractData($res); $pageTitle = "Rekomendasi Utama"; break; } if (isset($res)) { if ($res['code'] == 0 && !empty($res['error_curl'])) { $errorMsg = "Kesalahan Koneksi: " . $res['error_curl']; } elseif ($res['code'] != 200 && $res['code'] != 0) { $errorMsg = "Gagal memuat data (HTTP {$res['code']}). Periksa Token/URL."; } } ?> <?php echo $pageTitle; ?> - Dramabox
DRAMABOX
Profil

Akses Gagal / Token Tidak Valid

Kembali ke Daftar Episode

Drama

Pilih Episode

$chapter): ?>

Data episode tidak tersedia.

HD

Data Kosong