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/.cursor-server/data/User/History/2c7e01d0/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/.cursor-server/data/User/History/2c7e01d0/bLIQ.php
<?php
/**
 * Batch Fix Audio Analysis - Scan all tracks and fix bad BPM/Key values
 * 
 * This script:
 * 1. Fixes bad BPM values (188 -> 94, >200 halved, <50 doubled)
 * 2. Normalizes BPM values in both metadata and dedicated columns
 * 3. Updates database with correct values
 */

session_start();
require_once '../config/database.php';

// Check if admin
if (!isset($_SESSION['is_admin']) || !$_SESSION['is_admin']) {
    die('Admin access required');
}

$pdo = getDBConnection();
if (!$pdo) {
    die('Database connection failed');
}

// Get all tracks with audio
$stmt = $pdo->query("
    SELECT id, audio_url, metadata, bpm, musical_key, camelot_key, status 
    FROM music_tracks 
    WHERE status = 'complete' 
    AND audio_url IS NOT NULL 
    AND audio_url != ''
    ORDER BY id ASC
");
$tracks = $stmt->fetchAll(PDO::FETCH_ASSOC);

$total = count($tracks);
$fixed = 0;
$errors = 0;
$fixedTracks = [];

echo "<!DOCTYPE html><html><head><title>Batch Fix Audio Analysis</title>";
echo "<style>body{font-family:monospace;padding:20px;}pre{background:#f5f5f5;padding:10px;border-radius:5px;}</style>";
echo "</head><body>";
echo "<h1>Batch Audio Analysis Fix</h1>";
echo "<p>Processing {$total} tracks...</p>";
echo "<pre>";

foreach ($tracks as $track) {
    $trackId = $track['id'];
    $metadata = json_decode($track['metadata'] ?? '{}', true) ?: [];
    $updated = false;
    $changes = [];
    
    // Get BPM from multiple sources
    $bpm = $metadata['analyzed_bpm'] ?? $metadata['bpm'] ?? $track['bpm'] ?? null;
    $originalBpm = $bpm;
    
    if ($bpm && is_numeric($bpm)) {
        $bpm = floatval($bpm);
        
        // Fix 188 -> 94 (common error)
        if (abs($bpm - 188) < 2) {
            $bpm = 94;
            $changes[] = "BPM {$originalBpm} → {$bpm} (188 fix)";
            $updated = true;
        }
        // Fix > 200 (almost always wrong)
        elseif ($bpm > 200) {
            $original = $bpm;
            while ($bpm > 200) {
                $bpm = $bpm / 2;
            }
            $changes[] = "BPM {$original} → {$bpm} (halved)";
            $updated = true;
        }
        // Fix < 50 (very low, likely wrong)
        elseif ($bpm < 50 && $bpm > 0) {
            $doubled = $bpm * 2;
            if ($doubled <= 180) {
                $bpm = $doubled;
                $changes[] = "BPM {$originalBpm} → {$bpm} (doubled)";
                $updated = true;
            }
        }
        
        // Update metadata
        if ($updated) {
            $metadata['analyzed_bpm'] = $bpm;
            $metadata['bpm'] = $bpm;
        }
    }
    
    // Update database if fixed
    if ($updated) {
        try {
            // Update metadata JSON
            $stmt = $pdo->prepare("UPDATE music_tracks SET metadata = ?, bpm = ?, updated_at = NOW() WHERE id = ?");
            $stmt->execute([json_encode($metadata), $bpm, $trackId]);
            
            $fixed++;
            $fixedTracks[] = [
                'id' => $trackId,
                'changes' => implode(', ', $changes)
            ];
            
            echo "Track #{$trackId}: " . implode(', ', $changes) . "\n";
        } catch (Exception $e) {
            $errors++;
            echo "Track #{$trackId}: ERROR - " . $e->getMessage() . "\n";
        }
    }
    
    // Flush output for real-time progress
    if ($fixed % 10 == 0) {
        flush();
        ob_flush();
    }
}

echo "\n\n";
echo "=== SUMMARY ===\n";
echo "Total tracks processed: {$total}\n";
echo "Tracks fixed: {$fixed}\n";
echo "Errors: {$errors}\n";
echo "\n";

if ($fixed > 0) {
    echo "=== FIXED TRACKS ===\n";
    foreach ($fixedTracks as $ft) {
        echo "Track #{$ft['id']}: {$ft['changes']}\n";
    }
}

echo "\nāœ… Done!\n";
echo "</pre>";
echo "</body></html>";

?>


CasperSecurity Mini