![]() 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/ |
<?php
/**
* Batch Fix Audio Analysis - Scan all tracks and fix/analyze BPM and Key
*
* This script:
* 1. Fixes bad BPM values (188 -> 94, etc.)
* 2. Analyzes tracks that need analysis
* 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
$stmt = $pdo->query("
SELECT id, audio_url, metadata, 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;
$analyzed = 0;
$errors = 0;
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;
// Fix bad BPM values
$bpm = $metadata['analyzed_bpm'] ?? $metadata['bpm'] ?? null;
$originalBpm = $bpm;
if ($bpm) {
// Fix 188 -> 94
if (abs($bpm - 188) < 2) {
$bpm = 94;
$metadata['analyzed_bpm'] = $bpm;
$metadata['bpm'] = $bpm;
$updated = true;
echo "Track {$trackId}: Fixed BPM {$originalBpm} → {$bpm}\n";
}
// Fix > 200
elseif ($bpm > 200) {
while ($bpm > 200) {
$bpm = $bpm / 2;
}
$metadata['analyzed_bpm'] = $bpm;
$metadata['bpm'] = $bpm;
$updated = true;
echo "Track {$trackId}: Fixed BPM {$originalBpm} → {$bpm}\n";
}
// Fix < 50
elseif ($bpm < 50 && $bpm > 0) {
$doubled = $bpm * 2;
if ($doubled <= 180) {
$bpm = $doubled;
$metadata['analyzed_bpm'] = $bpm;
$metadata['bpm'] = $bpm;
$updated = true;
echo "Track {$trackId}: Fixed BPM {$originalBpm} → {$bpm}\n";
}
}
}
// Update database if fixed
if ($updated) {
$stmt = $pdo->prepare("UPDATE music_tracks SET metadata = ?, updated_at = NOW() WHERE id = ?");
$stmt->execute([json_encode($metadata), $trackId]);
$fixed++;
}
// Flush output for real-time progress
flush();
ob_flush();
}
echo "\n\n";
echo "=== SUMMARY ===\n";
echo "Total tracks: {$total}\n";
echo "Fixed: {$fixed}\n";
echo "Errors: {$errors}\n";
echo "\nDone!\n";
echo "</pre>";
?>