Files
2026-06-10 14:45:02 +02:00

84 lines
3.8 KiB
Twig
Executable File

<!DOCTYPE html>
{% trans_default_domain 'sign-up' %}
<html lang="{{ app.request.locale }}" dir="{{ app.request.locale == 'ar' ? 'rtl' : 'ltr' }}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes">
<title>Téléchargeur de vidéos YouTube</title>
<!-- jQuery -->
<script src="{{ asset('assets/vendor/jquery@4.0.0/jquery.min.js') }}"></script>
<!-- Font Awesome pour les icônes -->
<link rel="stylesheet" href="{{ asset('assets/vendor/font-awesome@6.7.2/css/all.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/frontend.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/bootstrap@5.3.8/css/bootstrap.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/country-select-js@2.1.0/build/css/countrySelect.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/intl-tel-input@28.1.0/dist/css/intlTelInput.min.css') }}">
</head>
<body>
<div class="container mt-5">
<h3>Téléchargement de la vidéo</h3>
<button id="start-download" class="btn btn-primary mb-3">Lancer le téléchargement</button>
<div class="progress" style="height: 30px;">
<div id="progress-bar" class="progress-bar progress-bar-striped progress-bar-animated"
role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
0%
</div>
</div>
<div id="status" class="mt-2 text-muted">Prêt.</div>
</div>
<script src="{{ asset('assets/vendor/bootstrap@5.3.8/js/bootstrap.min.js') }}"></script>
<script src="{{ asset('assets/vendor/country-select-js@2.1.0/build/js/countrySelect.js') }}"></script>
<script src="{{ asset('assets/vendor/intl-tel-input@28.1.0/dist/js/intlTelInput.min.js') }}"></script>
<script>
$(document).ready(function() {
$('#start-download').on('click', function() {
const $progressBar = $('#progress-bar');
const $status = $('#status');
$status.text('Téléchargement en cours...');
$progressBar.css('width', '0%').attr('aria-valuenow', 0).text('0%');
$(this).prop('disabled', true); // Désactive le bouton pendant le téléchargement
// On ouvre la connexion SSE vers notre route Symfony
const eventSource = new EventSource("{{ path('app_streamed_download') }}");
eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
if (data.progress) {
// Mise à jour de la barre avec jQuery
$progressBar.css('width', data.progress + '%')
.attr('aria-valuenow', data.progress)
.text(data.progress + '%');
}
// Si le script PHP a terminé
if (data.done) {
$status.text('Téléchargement terminé avec succès !');
$progressBar.removeClass('progress-bar-animated').addClass('bg-success');
eventSource.close(); // On ferme la connexion
$('#start-download').prop('disabled', false);
}
};
eventSource.onerror = function(err) {
console.error("Erreur SSE:", err);
$status.text('Une erreur est survenue lors du téléchargement.');
eventSource.close();
$('#start-download').prop('disabled', false);
};
});
});
</script>
</body>
</html>