![]() 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/gocodeme.com/public_html/BACKUP/ |
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html>
<head>
<title>Audio Debug Tool - MusicStudio Pro</title>
<style>
body {
font-family: 'Inter', Arial, sans-serif;
margin: 0;
background: #0a0a0a;
color: white;
line-height: 1.6;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.header {
text-align: center;
margin-bottom: 40px;
padding: 40px 0;
background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%);
border-radius: 20px;
}
.success { color: #48bb78; }
.error { color: #f56565; }
.warning { color: #ed8936; }
.info { color: #4299e1; }
.debug-section {
border: 1px solid #333;
padding: 30px;
margin: 30px 0;
border-radius: 15px;
background: #1a1a1a;
}
.btn {
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
padding: 15px 30px;
border: none;
border-radius: 10px;
cursor: pointer;
font-size: 16px;
margin: 10px 5px;
text-decoration: none;
display: inline-block;
transition: all 0.3s ease;
}
.btn:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px rgba(102, 126, 234, 0.3);
}
.audio-player {
margin: 20px 0;
padding: 25px;
background: #2d2d2d;
border-radius: 15px;
border: 1px solid #444;
}
pre {
background: #2d2d2d;
padding: 15px;
border-radius: 8px;
border: 1px solid #444;
color: #e2e8f0;
overflow-x: auto;
}
.test-result {
margin: 15px 0;
padding: 15px;
border-radius: 8px;
border-left: 4px solid;
}
.test-result.success { background: rgba(72, 187, 120, 0.1); border-color: #48bb78; }
.test-result.error { background: rgba(245, 101, 101, 0.1); border-color: #f56565; }
.test-result.warning { background: rgba(237, 137, 54, 0.1); border-color: #ed8936; }
.test-result.info { background: rgba(66, 153, 225, 0.1); border-color: #4299e1; }
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>🔧 Audio Debug Tool</h1>
<p>Diagnose and fix audio playback issues</p>
</div>
<div class="debug-section">
<h2>🎵 Test Specific Track</h2>
<p>Let's test the "a happy song about andrew" track that's not playing:</p>
<form id="testTrackForm">
<div style="margin: 20px 0;">
<label for="trackPrompt">Track Description:</label><br>
<textarea id="trackPrompt" rows="3" style="width: 100%; background: #2d2d2d; color: white; border: 1px solid #333; padding: 10px; border-radius: 5px;">a happy song about andrew</textarea>
</div>
<div style="margin: 20px 0;">
<label for="trackDuration">Duration (seconds):</label>
<input type="number" id="trackDuration" value="30" min="10" max="600" style="background: #2d2d2d; color: white; border: 1px solid #333; padding: 8px; border-radius: 5px;">
</div>
<button type="submit" class="btn">🔍 Test Track Generation</button>
</form>
<div id="trackTestResult" style="display: none;"></div>
</div>
<div class="debug-section">
<h2>🔗 Test Audio URL</h2>
<p>Test if a specific audio URL is accessible and playable:</p>
<form id="testUrlForm">
<div style="margin: 20px 0;">
<label for="audioUrl">Audio URL to test:</label><br>
<input type="url" id="audioUrl" placeholder="https://example.com/audio.mp3" style="width: 100%; background: #2d2d2d; color: white; border: 1px solid #333; padding: 10px; border-radius: 5px;">
</div>
<button type="submit" class="btn">🔍 Test URL</button>
</form>
<div id="urlTestResult" style="display: none;"></div>
</div>
<div class="debug-section">
<h2>📋 Recent Task Results</h2>
<div id="recentTasks">
<?php
$taskResultsDir = 'task_results';
if (is_dir($taskResultsDir)) {
$files = glob($taskResultsDir . '/*.json');
if ($files) {
echo '<p>Found ' . count($files) . ' task result(s):</p>';
foreach ($files as $file) {
$taskId = basename($file, '.json');
$content = file_get_contents($file);
$data = json_decode($content, true);
echo '<div class="audio-player">';
echo '<h4>Task ID: ' . htmlspecialchars($taskId) . '</h4>';
echo '<p><strong>Status:</strong> <span class="' . ($data['status'] === 'complete' ? 'success' : 'warning') . '">' . htmlspecialchars($data['status']) . '</span></p>';
if (isset($data['audio_url'])) {
echo '<p><strong>Audio URL:</strong> <a href="' . htmlspecialchars($data['audio_url']) . '" target="_blank" style="color: #4299e1;">' . htmlspecialchars($data['audio_url']) . '</a></p>';
echo '<button onclick="testAudioUrl(\'' . htmlspecialchars($data['audio_url']) . '\')" class="btn">🔍 Test This URL</button>';
}
if (isset($data['title'])) {
echo '<p><strong>Title:</strong> ' . htmlspecialchars($data['title']) . '</p>';
}
echo '</div>';
}
} else {
echo '<p class="warning">No task results found.</p>';
}
} else {
echo '<p class="warning">Task results directory not found.</p>';
}
?>
</div>
</div>
<div class="debug-section">
<h2>🔧 Quick Fixes</h2>
<div class="test-result info">
<h4>Common Issues and Solutions:</h4>
<ul>
<li><strong>CORS Issues:</strong> External audio URLs might be blocked by browser security policies</li>
<li><strong>Invalid Audio Format:</strong> The audio file might be corrupted or in an unsupported format</li>
<li><strong>Network Issues:</strong> The audio URL might be temporarily unavailable</li>
<li><strong>Demo Mode:</strong> The system might be using demo audio due to API unavailability</li>
</ul>
</div>
</div>
<div class="debug-section">
<h2>🔗 Quick Links</h2>
<a href="musicstudio.html" class="btn">🎵 MusicStudio Pro</a>
<a href="diagnostic.php" class="btn">🔧 Server Diagnostic</a>
<a href="callback_status.php" class="btn">📡 Callback Status</a>
</div>
</div>
<script>
// Test track generation
document.getElementById('testTrackForm').addEventListener('submit', async function(e) {
e.preventDefault();
const prompt = document.getElementById('trackPrompt').value;
const duration = document.getElementById('trackDuration').value;
const resultDiv = document.getElementById('trackTestResult');
resultDiv.innerHTML = '<div class="test-result info">🔄 Testing track generation...</div>';
resultDiv.style.display = 'block';
try {
const response = await fetch('api.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
action: 'music',
prompt: prompt,
model: 'v3',
duration: parseInt(duration)
})
});
const data = await response.json();
if (data.success) {
let resultHtml = '<div class="test-result success">';
resultHtml += '<h4>✅ Track Generated Successfully!</h4>';
resultHtml += '<p><strong>Title:</strong> ' + (data.data.title || 'Untitled') + '</p>';
resultHtml += '<p><strong>Duration:</strong> ' + (data.data.duration || 'Unknown') + ' seconds</p>';
resultHtml += '<p><strong>Status:</strong> ' + (data.data.status || 'Unknown') + '</p>';
if (data.data.audio_url) {
resultHtml += '<p><strong>Audio URL:</strong> <a href="' + data.data.audio_url + '" target="_blank" style="color: #4299e1;">' + data.data.audio_url + '</a></p>';
resultHtml += '<button onclick="testAudioUrl(\'' + data.data.audio_url + '\')" class="btn">🔍 Test Audio URL</button>';
resultHtml += '<div class="audio-player">';
resultHtml += '<audio controls style="width: 100%; margin: 15px 0;">';
resultHtml += '<source src="' + data.data.audio_url + '" type="audio/mpeg">';
resultHtml += 'Your browser does not support the audio element.';
resultHtml += '</audio>';
resultHtml += '</div>';
}
if (data.data.demo) {
resultHtml += '<div class="test-result warning">⚠️ This is demo audio (API unavailable)</div>';
}
resultHtml += '<pre>' + JSON.stringify(data.data, null, 2) + '</pre>';
resultHtml += '</div>';
resultDiv.innerHTML = resultHtml;
} else {
resultDiv.innerHTML = '<div class="test-result error">❌ Error: ' + (data.error || 'Unknown error') + '</div>';
}
} catch (error) {
resultDiv.innerHTML = '<div class="test-result error">❌ Network Error: ' + error.message + '</div>';
}
});
// Test audio URL
document.getElementById('testUrlForm').addEventListener('submit', async function(e) {
e.preventDefault();
const audioUrl = document.getElementById('audioUrl').value;
if (!audioUrl) {
alert('Please enter an audio URL to test');
return;
}
testAudioUrl(audioUrl);
});
// Function to test audio URL
async function testAudioUrl(url) {
const resultDiv = document.getElementById('urlTestResult');
resultDiv.innerHTML = '<div class="test-result info">🔄 Testing audio URL...</div>';
resultDiv.style.display = 'block';
try {
// Test if URL is accessible
const response = await fetch(url, { method: 'HEAD' });
let resultHtml = '<div class="test-result ' + (response.ok ? 'success' : 'error') + '">';
resultHtml += '<h4>' + (response.ok ? '✅ URL Accessible' : '❌ URL Not Accessible') + '</h4>';
resultHtml += '<p><strong>HTTP Status:</strong> ' + response.status + ' ' + response.statusText + '</p>';
resultHtml += '<p><strong>Content-Type:</strong> ' + (response.headers.get('content-type') || 'Unknown') + '</p>';
resultHtml += '<p><strong>Content-Length:</strong> ' + (response.headers.get('content-length') || 'Unknown') + ' bytes</p>';
if (response.ok) {
resultHtml += '<div class="audio-player">';
resultHtml += '<audio controls style="width: 100%; margin: 15px 0;">';
resultHtml += '<source src="' + url + '" type="audio/mpeg">';
resultHtml += 'Your browser does not support the audio element.';
resultHtml += '</audio>';
resultHtml += '</div>';
} else {
resultHtml += '<div class="test-result warning">⚠️ This URL might be blocked by CORS or network restrictions.</div>';
}
resultHtml += '</div>';
resultDiv.innerHTML = resultHtml;
} catch (error) {
resultDiv.innerHTML = '<div class="test-result error">❌ Error testing URL: ' + error.message + '</div>';
}
}
</script>
</body>
</html>