T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/soundstudiopro.com/public_html/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/public_html/direct_sync_tracks.php
<?php
require_once 'config/database.php';

echo "<h1>🚀 Direct Track Sync</h1>";

$pdo = getDBConnection();
$API_KEY = '63edba40620216c5aa2c04240ac41dbd';
$API_URL = 'https://api.api.box';

// Function to fetch all tracks from API
function fetchAllTracksFromAPI($apiKey, $apiUrl) {
    $allTracks = [];
    $page = 1;
    $perPage = 50;
    
    echo "<h2>Fetching tracks from API...</h2>";
    
    while (true) {
        $url = $apiUrl . "/api/v1/tracks?page=$page&per_page=$perPage";
        echo "<p>Fetching page $page...</p>";
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPGET, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Authorization: Bearer ' . $apiKey,
            'Content-Type: application/json'
        ]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $error = curl_error($ch);
        curl_close($ch);
        
        if ($error) {
            echo "<p style='color: red;'>❌ cURL Error: $error</p>";
            break;
        }
        
        if ($httpCode !== 200) {
            echo "<p style='color: red;'>❌ API Error: HTTP $httpCode</p>";
            echo "<p>Response: $response</p>";
            break;
        }
        
        $data = json_decode($response, true);
        
        if (!$data || !isset($data['data']) || empty($data['data'])) {
            echo "<p>No more tracks found on page $page</p>";
            break;
        }
        
        $allTracks = array_merge($allTracks, $data['data']);
        echo "<p style='color: green;'>✅ Found " . count($data['data']) . " tracks on page $page</p>";
        
        if (count($data['data']) < $perPage) {
            break;
        }
        
        $page++;
        
        if ($page > 20) {
            echo "<p>Safety limit reached (20 pages)</p>";
            break;
        }
    }
    
    echo "<p style='color: green;'>✅ Total tracks fetched from API: " . count($allTracks) . "</p>";
    return $allTracks;
}

// Function to create track in database
function createTrackInDatabase($pdo, $trackData) {
    try {
        $taskId = $trackData['id'] ?? $trackData['task_id'] ?? null;
        $title = $trackData['title'] ?? 'Untitled Track';
        $prompt = $trackData['prompt'] ?? '';
        $status = $trackData['status'] ?? 'processing';
        $audioUrl = $trackData['audio_url'] ?? $trackData['source_audio_url'] ?? null;
        $duration = $trackData['duration'] ?? null;
        
        if (!$taskId) {
            return ['success' => false, 'error' => 'No task_id found'];
        }
        
        // Check if track already exists
        $stmt = $pdo->prepare("SELECT id FROM music_tracks WHERE task_id = ?");
        $stmt->execute([$taskId]);
        
        if ($stmt->fetch()) {
            return ['success' => false, 'error' => 'Track already exists'];
        }
        
        // Create the track
        $stmt = $pdo->prepare("
            INSERT INTO music_tracks 
            (user_id, task_id, title, prompt, music_type, model_version, duration, status, audio_url, metadata, created_at, updated_at) 
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())
        ");
        
        $metadata = json_encode($trackData);
        
        $stmt->execute([
            1, // Default user_id
            $taskId,
            $title,
            $prompt,
            $trackData['music_type'] ?? 'ai_generated',
            $trackData['model_version'] ?? 'v1',
            $duration,
            $status,
            $audioUrl,
            $metadata
        ]);
        
        return ['success' => true, 'id' => $pdo->lastInsertId()];
    } catch (Exception $e) {
        return ['success' => false, 'error' => $e->getMessage()];
    }
}

// Main sync process
echo "<h2>Starting sync process...</h2>";

try {
    // Get current database count
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM music_tracks");
    $currentCount = $stmt->fetchColumn();
    echo "<p>Current tracks in database: $currentCount</p>";
    
    // Fetch all tracks from API
    $apiTracks = fetchAllTracksFromAPI($API_KEY, $API_URL);
    
    if (empty($apiTracks)) {
        echo "<p style='color: red;'>❌ No tracks found in API</p>";
        exit;
    }
    
    echo "<h2>Processing tracks...</h2>";
    
    $created = 0;
    $skipped = 0;
    $errors = 0;
    
    foreach ($apiTracks as $track) {
        $result = createTrackInDatabase($pdo, $track);
        
        if ($result['success']) {
            $created++;
            echo "<p style='color: green;'>✅ Created: " . ($track['title'] ?? 'Untitled') . "</p>";
        } else {
            if (strpos($result['error'], 'already exists') !== false) {
                $skipped++;
                echo "<p style='color: blue;'>⏭️ Skipped: " . ($track['title'] ?? 'Untitled') . " (already exists)</p>";
            } else {
                $errors++;
                echo "<p style='color: red;'>❌ Error: " . ($track['title'] ?? 'Untitled') . " - " . $result['error'] . "</p>";
            }
        }
    }
    
    // Get final database count
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM music_tracks");
    $finalCount = $stmt->fetchColumn();
    
    echo "<h2>Sync Complete!</h2>";
    echo "<p>API tracks found: " . count($apiTracks) . "</p>";
    echo "<p>Tracks created: $created</p>";
    echo "<p>Tracks skipped: $skipped</p>";
    echo "<p>Errors: $errors</p>";
    echo "<p>Database before: $currentCount</p>";
    echo "<p>Database after: $finalCount</p>";
    echo "<p>Total added: " . ($finalCount - $currentCount) . "</p>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Sync failed: " . $e->getMessage() . "</p>";
}
?> 

CasperSecurity Mini