![]() 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/ |
<?php
require_once 'config/database.php';
echo "<h1>🔍 Checking Raw API.Box Data</h1>";
try {
$pdo = getDBConnection();
// Check if tracks have raw API data stored
$stmt = $pdo->prepare("
SELECT id, title, task_id, api_box_raw_data, lyrics
FROM music_tracks
WHERE task_id IS NOT NULL
ORDER BY created_at DESC
LIMIT 10
");
$stmt->execute();
$tracks = $stmt->fetchAll();
if (empty($tracks)) {
echo "<p>❌ No tracks found with task IDs</p>";
exit;
}
echo "<h2>📊 Tracks with Raw API Data</h2>";
echo "<table style='width: 100%; border-collapse: collapse; margin: 15px 0;'>";
echo "<tr style='background: #667eea; color: white;'>";
echo "<th style='padding: 10px; border: 1px solid #ccc;'>Track ID</th>";
echo "<th style='padding: 10px; border: 1px solid #ccc;'>Title</th>";
echo "<th style='padding: 10px; border: 1px solid #ccc;'>Task ID</th>";
echo "<th style='padding: 10px; border: 1px solid #ccc;'>Raw Data</th>";
echo "<th style='padding: 10px; border: 1px solid #ccc;'>Lyrics</th>";
echo "<th style='padding: 10px; border: 1px solid #ccc;'>Actions</th>";
echo "</tr>";
foreach ($tracks as $track) {
$has_raw_data = !empty($track['api_box_raw_data']);
$has_lyrics = !empty($track['lyrics']);
echo "<tr>";
echo "<td style='padding: 10px; border: 1px solid #ccc;'>{$track['id']}</td>";
echo "<td style='padding: 10px; border: 1px solid #ccc;'>" . htmlspecialchars($track['title']) . "</td>";
echo "<td style='padding: 10px; border: 1px solid #ccc;'>{$track['task_id']}</td>";
echo "<td style='padding: 10px; border: 1px solid #ccc;'>";
if ($has_raw_data) {
echo "<span style='color: green;'>✅ Has raw data</span>";
} else {
echo "<span style='color: red;'>❌ No raw data</span>";
}
echo "</td>";
echo "<td style='padding: 10px; border: 1px solid #ccc;'>";
if ($has_lyrics) {
echo "<span style='color: green;'>✅ Has lyrics</span>";
} else {
echo "<span style='color: red;'>❌ No lyrics</span>";
}
echo "</td>";
echo "<td style='padding: 10px; border: 1px solid #ccc;'>";
if ($has_raw_data && !$has_lyrics) {
echo "<button onclick='extractLyrics({$track['id']})' style='background: #48bb78; color: white; border: none; padding: 8px 16px; border-radius: 5px; cursor: pointer;'>🎵 Extract Lyrics</button>";
} elseif ($has_raw_data && $has_lyrics) {
echo "<span style='color: green;'>✅ Already extracted</span>";
} else {
echo "<span style='color: gray;'>No action needed</span>";
}
echo "</td>";
echo "</tr>";
}
echo "</table>";
// Show sample raw data for first track
if (!empty($tracks) && !empty($tracks[0]['api_box_raw_data'])) {
echo "<h2>🔍 Sample Raw Data (Track {$tracks[0]['id']})</h2>";
$raw_data = json_decode($tracks[0]['api_box_raw_data'], true);
echo "<pre style='background: #f0f0f0; padding: 15px; border-radius: 8px; max-height: 400px; overflow-y: auto;'>" . htmlspecialchars(json_encode($raw_data, JSON_PRETTY_PRINT)) . "</pre>";
// Check for lyrics in the raw data
echo "<h3>🎵 Lyrics Search in Raw Data</h3>";
$lyrics_found = false;
if (is_array($raw_data)) {
// Search recursively for lyrics
function searchForLyrics($data, $path = '') {
global $lyrics_found;
if (is_array($data)) {
foreach ($data as $key => $value) {
$current_path = $path ? $path . '.' . $key : $key;
if (is_string($value) && (stripos($key, 'lyric') !== false || stripos($key, 'text') !== false)) {
if (!empty(trim($value))) {
echo "<p style='color: green;'>✅ <strong>Found lyrics at:</strong> $current_path</p>";
echo "<p><strong>Content:</strong> " . htmlspecialchars(substr($value, 0, 200)) . "...</p>";
$lyrics_found = true;
}
} elseif (is_array($value)) {
searchForLyrics($value, $current_path);
}
}
}
}
searchForLyrics($raw_data);
if (!$lyrics_found) {
echo "<p style='color: red;'>❌ No lyrics found in raw data</p>";
}
}
}
} catch (Exception $e) {
echo "<p style='color: red;'>❌ Error: " . htmlspecialchars($e->getMessage()) . "</p>";
}
echo "<hr>";
echo "<h2>🎯 Next Steps</h2>";
echo "<p>1. <strong>If tracks have raw data:</strong> We can extract lyrics from that</p>";
echo "<p>2. <strong>If no raw data:</strong> We need to wait for new callbacks or find another solution</p>";
echo "<p>3. <strong>Check callback logs:</strong> See what data structure API.Box is actually sending</p>";
?>
<script>
async function extractLyrics(trackId) {
if (confirm('Extract lyrics from raw API data for track ' + trackId + '?')) {
try {
const response = await fetch('extract_lyrics_from_raw.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
track_id: trackId
})
});
const data = await response.json();
if (data.success) {
alert('Lyrics extracted successfully!');
location.reload();
} else {
alert('Extraction failed: ' + data.error);
}
} catch (error) {
alert('Error extracting lyrics: ' + error.message);
}
}
}
</script>