This commit is contained in:
mm 2024-10-30 16:22:07 +05:00
parent 198265c5fd
commit 89f642cea9

View File

@ -68,31 +68,32 @@ function addText(text) {
contentDiv.appendChild(p);
}
function playAudio(audioUrl, widgetID) {
function playAudio(audioUrl, widgetID, callback) {
if (!audioUrl.includes("http")) {
audioUrl = "http://147.45.237.174/api/widget/media/audio/file/get/" + String(widgetID)
audioUrl = "http://147.45.237.174/api/widget/media/audio/file/get/" + String(widgetID);
}
fetch(audioUrl)
.then(response => {
if (!response.ok) {
throw new Error('Ошибка сети: ' + response.statusText);
}
return response.blob();
})
.then(blob => {
const url = URL.createObjectURL(blob);
const audio = new Audio(url);
.then(response => {
if (!response.ok) {
throw new Error('Ошибка сети: ' + response.statusText);
}
return response.blob();
})
.then(blob => {
const url = URL.createObjectURL(blob);
const audio = new Audio(url);
audio.play().catch(error => {
console.error('Ошибка при воспроизведении:', error);
audio.play().catch(error => {
console.error('Ошибка при воспроизведении:', error);
});
audio.addEventListener('ended', () => {
audio.pause();
audio.remove();
console.log('Музыка закончила играть');
if (callback) callback(); // Вызовите callback после завершения аудио
});
});
setTimeout(() => {
audio.pause();
audio.remove()
console.log('Воспроизведение остановлено');
}, 5000);
})
}
function playSpeech(text) {
@ -128,6 +129,10 @@ function playSpeech(text) {
)
}
function playSpeechAfterAudio(text) {
playAudio(widget.AudioUrl, widgetID, () => playSpeech(text));
}
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
@ -167,14 +172,13 @@ async function widgetView() {
if (widget.ImageUrl != "") {
addImage(widget.ImageUrl)
}
if (widget.AudioUrl) {
playAudio(widget.AudioUrl, widgetID)
}
await delay(6000);
playSpeech(donat.Text)
addText(donat.Text + " " + donat.Amount)
if (widget.AudioUrl) {
playSpeechAfterAudio(donat.Text);
} else {
playSpeech(donat.Text); // Если нет аудио, просто сразу играет речь
}
await delay(widget.Duration * 1000);
await endDonat(donat.ID)
}