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