Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -513,6 +513,8 @@ border:2px solid #0f172a;border-radius:50%;z-index:3;}
|
|
| 513 |
.role{font-size:.8rem;color:#94a3b8;margin:0 0 12px;}
|
| 514 |
.status{font-size:.8rem;color:#34d399;background:rgba(16,185,129,.12);padding:6px 14px;
|
| 515 |
border-radius:999px;display:inline-block;}
|
|
|
|
|
|
|
| 516 |
</style></head><body>
|
| 517 |
<audio id="a" style="display:none;"></audio>
|
| 518 |
<div class="card"><div class="wrap"><div class="ring" id="ring"></div>
|
|
@@ -520,17 +522,20 @@ border-radius:999px;display:inline-block;}
|
|
| 520 |
<div class="waves"><div class="bar"></div><div class="bar"></div><div class="bar"></div>
|
| 521 |
<div class="bar"></div><div class="bar"></div></div></div></div>
|
| 522 |
<p class="name">__NAME__</p><p class="role">AI Interviewer · مُحاوِرة ذكاء اصطناعي</p>
|
| 523 |
-
<div class="status" id="status">Ready</div><
|
|
|
|
| 524 |
<script>__SCRIPT__</script></body></html>"""
|
| 525 |
|
| 526 |
AUDIO_JS = """(function(){
|
| 527 |
var a=document.getElementById('a'),c=document.getElementById('av'),
|
| 528 |
-
r=document.getElementById('ring'),s=document.getElementById('status')
|
|
|
|
| 529 |
a.src='data:audio/mp3;base64,__AUDIO__';
|
| 530 |
-
a.addEventListener('play',function(){c.classList.add('speaking');r.classList.add('active');s.textContent='Speaking...';});
|
| 531 |
function stop(){c.classList.remove('speaking');r.classList.remove('active');s.textContent='Listening';}
|
| 532 |
a.addEventListener('ended',stop);a.addEventListener('pause',stop);
|
| 533 |
-
function p(){a.play().catch(function(){});}
|
|
|
|
| 534 |
if(document.readyState==='complete')p();else window.addEventListener('load',p);})();"""
|
| 535 |
|
| 536 |
|
|
|
|
| 513 |
.role{font-size:.8rem;color:#94a3b8;margin:0 0 12px;}
|
| 514 |
.status{font-size:.8rem;color:#34d399;background:rgba(16,185,129,.12);padding:6px 14px;
|
| 515 |
border-radius:999px;display:inline-block;}
|
| 516 |
+
.tap{display:none;margin-top:12px;background:#10b981;color:#fff;border:none;border-radius:999px;
|
| 517 |
+
padding:9px 18px;font-size:.85rem;font-weight:600;cursor:pointer;}
|
| 518 |
</style></head><body>
|
| 519 |
<audio id="a" style="display:none;"></audio>
|
| 520 |
<div class="card"><div class="wrap"><div class="ring" id="ring"></div>
|
|
|
|
| 522 |
<div class="waves"><div class="bar"></div><div class="bar"></div><div class="bar"></div>
|
| 523 |
<div class="bar"></div><div class="bar"></div></div></div></div>
|
| 524 |
<p class="name">__NAME__</p><p class="role">AI Interviewer · مُحاوِرة ذكاء اصطناعي</p>
|
| 525 |
+
<div class="status" id="status">Ready</div><br>
|
| 526 |
+
<button class="tap" id="tap">🔊 Tap to hear · اضغط للاستماع</button></div>
|
| 527 |
<script>__SCRIPT__</script></body></html>"""
|
| 528 |
|
| 529 |
AUDIO_JS = """(function(){
|
| 530 |
var a=document.getElementById('a'),c=document.getElementById('av'),
|
| 531 |
+
r=document.getElementById('ring'),s=document.getElementById('status'),
|
| 532 |
+
t=document.getElementById('tap');
|
| 533 |
a.src='data:audio/mp3;base64,__AUDIO__';
|
| 534 |
+
a.addEventListener('play',function(){t.style.display='none';c.classList.add('speaking');r.classList.add('active');s.textContent='Speaking...';});
|
| 535 |
function stop(){c.classList.remove('speaking');r.classList.remove('active');s.textContent='Listening';}
|
| 536 |
a.addEventListener('ended',stop);a.addEventListener('pause',stop);
|
| 537 |
+
function p(){var x=a.play();if(x&&x.catch)x.catch(function(){t.style.display='inline-block';s.textContent='Tap to hear';});}
|
| 538 |
+
t.addEventListener('click',function(){a.play().catch(function(){});});
|
| 539 |
if(document.readyState==='complete')p();else window.addEventListener('load',p);})();"""
|
| 540 |
|
| 541 |
|