mirror of
				https://github.com/LaQuay/TDTChannels.git
				synced 2025-10-31 18:22:15 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			185 lines
		
	
	
		
			No EOL
		
	
	
		
			7.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			No EOL
		
	
	
		
			7.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <html>
 | |
| <head>
 | |
|     <meta charset="utf-8"/>
 | |
|     <title>TDT Channels - Marc Vila</title>
 | |
|     <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/clappr@latest/dist/clappr.min.js"></script>
 | |
|     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
 | |
|     <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
 | |
|     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
 | |
|     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
 | |
| 
 | |
|     <script src="./index.js"></script>
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
| </head>
 | |
| <body>
 | |
| <div class="container" style="margin-top: 30px; margin-bottom: 30px; padding-bottom: 50px;">
 | |
|     <h1 class="display-3">TDTChannels</h1>
 | |
|     <p class="lead">
 | |
|         Bienvenido al reproductor del proyecto opensource TDTChannels
 | |
|     </p>
 | |
|     <br>
 | |
|     <a class="btn btn-outline-secondary" role="button" href="https://github.com/LaQuay/TDTChannels"
 | |
|        target="_blank">Repositorio TDT Channels</a>
 | |
|     <a class="btn btn-outline-success" role="button" href="http://www.marcvila.me/"
 | |
|        target="_blank">Sitio personal</a>
 | |
|     <a class="btn btn-outline-warning" role="button" href="https://github.com/LaQuay/"
 | |
|        target="_blank">GitHub</a>
 | |
|     <a class="btn btn-outline-primary" role="button" href="https://www.linkedin.com/in/marcvilagomez/"
 | |
|        target="_blank">LinkedIn</a>
 | |
|     <div style="margin-top: 25px">
 | |
|         <div id="video">
 | |
|             <p class="lead">
 | |
|                 Reproductor de Televisión
 | |
|             </p>
 | |
| 
 | |
|             <div class="input-group mb-3">
 | |
|                 <input id="input-reproduccion-video" type="text" class="form-control" placeholder="URL de reproducción">
 | |
|                 <div class="input-group-append">
 | |
|                     <button class="btn btn-outline-secondary" type="button" id="button-reproduccion-video"
 | |
|                             onclick="loadItem('video');">Cargar
 | |
|                     </button>
 | |
|                 </div>
 | |
|             </div>
 | |
|             <div id="video-player"></div>
 | |
|             <div id="video-information" class="shadow-sm p-3 mb-5 bg-white rounded" style="margin-top: 15px">
 | |
|                 <p class="lead">Información de la reproducción</p>
 | |
|                 Formatos soportados
 | |
|                 <br>
 | |
|                 <em>m3u8</em>
 | |
|                 <br><br>
 | |
|                 Resoluciones disponibles
 | |
|                 <br>
 | |
|                 <em id="video-resolution"></em>
 | |
|             </div>
 | |
|         </div>
 | |
| 
 | |
|         <div id="audio" style="margin-top: 15px">
 | |
|             <p class="lead">
 | |
|                 Reproductor de Radio
 | |
|             </p>
 | |
|             <div class="input-group mb-3">
 | |
|                 <input id="input-reproduccion-audio" type="text" class="form-control" placeholder="URL de reproducción">
 | |
|                 <div class="input-group-append">
 | |
|                     <button class="btn btn-outline-secondary" type="button" id="button-reproduccion-audio"
 | |
|                             onclick="loadItem('audio');">Cargar
 | |
|                     </button>
 | |
|                 </div>
 | |
|             </div>
 | |
|             <audio id="audio-controller" controls>
 | |
|                 <source id="audio-player" src="" autoplay>
 | |
|                 Your browser does not support the audio element.
 | |
|             </audio>
 | |
|             <div id="audio-information" class="shadow-sm p-3 mb-5 bg-white rounded" style="margin-top: 15px">
 | |
|                 <p class="lead">Información de la reproducción</p>
 | |
|                 Formatos soportados
 | |
|                 <br>
 | |
|                 <em>nsv</em>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
| </div>
 | |
| 
 | |
| <div class="navbar fixed-bottom container">
 | |
|     <div class="alert alert-warning alert-dismissible fade show" role="alert">
 | |
|         <em><strong>Nota</strong>: Esta web está diseñada únicamente para comprobar el funcionamiento con los canales
 | |
|             del repositorio. Queda fuera del objetivo algún otro uso. El usuario es el responsable del
 | |
|             uso que se le da a la web.</em>
 | |
|         <button type="button" class="close" data-dismiss="alert" aria-label="Close">
 | |
|             <span aria-hidden="true">×</span>
 | |
|         </button>
 | |
|     </div>
 | |
| </div>
 | |
| <script>
 | |
|     // Se espera en la URL este tipo de llamada
 | |
|     // .html?type={audio,video}&channel={url_a_reproducir}
 | |
|     var player;
 | |
| 
 | |
|     var typeToReproduce = getUrlParameter("type");
 | |
|     var channelToReproduce;
 | |
|     if (typeToReproduce == "audio") {
 | |
|         channelToReproduce = getUrlParameter("channel");
 | |
|         reproduceAudio(channelToReproduce);
 | |
|     } else if (typeToReproduce == "video") {
 | |
|         channelToReproduce = getUrlParameter("channel");
 | |
|         reproduceVideo(channelToReproduce);
 | |
|     }
 | |
| 
 | |
|     function loadItem(from) {
 | |
|         var value;
 | |
|         if (from == "audio") {
 | |
|             value = document.getElementById("input-reproduccion-audio").value;
 | |
|             reproduceAudio(value);
 | |
|         } else if (from == "video") {
 | |
|             value = document.getElementById("input-reproduccion-video").value;
 | |
|             reproduceVideo(value);
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 	function reproduceVideo(channelToReproduce) {
 | |
| 	    console.log("Reproducing " + channelToReproduce);
 | |
|         if (channelToReproduce.includes("m3u8")) {
 | |
|             console.log("Reproducing video")
 | |
|             var divInfo = document.getElementById("video-player").childElementCount;
 | |
|             if (divInfo == 0) {
 | |
|                 player = new Clappr.Player({
 | |
|                     source: channelToReproduce,
 | |
|                     parentId: '#video-player',
 | |
|                     height: '400px',
 | |
|                     width: '100%',
 | |
|                     autoPlay: true,
 | |
|                 });
 | |
|             } else {
 | |
|                 // Assume player instance is already created
 | |
|                 player.configure({
 | |
|                   source: channelToReproduce,
 | |
|                 });
 | |
|             }
 | |
|             clearResolutions();
 | |
|             getResolution(channelToReproduce, updateResolution);
 | |
|         }
 | |
| 	}
 | |
| 
 | |
| 	function reproduceAudio(channelToReproduce) {
 | |
| 	    console.log("Reproducing " + channelToReproduce);
 | |
| 	    if (channelToReproduce.includes("nsv")) {
 | |
|             console.log("Reproducing audio")
 | |
| 
 | |
|             var audioSource = document.getElementById('audio-controller');
 | |
|             var audioPlayer = document.getElementById('audio-player');
 | |
| 
 | |
|             audioPlayer.src = channelToReproduce;
 | |
| 
 | |
|             audioSource.load();
 | |
|             audioSource.pause();
 | |
|             var playPromise = audioSource.play();
 | |
| 
 | |
|             if (playPromise !== undefined) {
 | |
|               playPromise.then(function() {
 | |
|                 // Automatic playback started!
 | |
|               }).catch(function(error) {
 | |
|                 // Automatic playback failed.
 | |
|                 // Show a UI element to let the user manually start playback.
 | |
|               });
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function updateResolution(resolutions) {
 | |
|         console.log("Resoluciones: " + resolutions);
 | |
| 
 | |
|         for (i = 0; i < resolutions.length; i++) {
 | |
|             var resolutionToAdd = resolutions[i];
 | |
|             if (i < resolutions.length - 1){
 | |
|                 resolutionToAdd += ", ";
 | |
|             }
 | |
|             document.getElementById("video-resolution").innerHTML += resolutionToAdd;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function clearResolutions() {
 | |
|         document.getElementById("video-resolution").innerHTML = "";
 | |
|     }
 | |
| 
 | |
| </script>
 | |
| </body>
 | |
| </html> | 
