// Se espera en la URL este tipo de llamada .html?type={audio,video}&channel={url_a_reproducir} 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 video: " + channelToReproduce); if (channelToReproduce.includes("m3u8")) { var divInfo = document.getElementById("video-player").childElementCount; if (divInfo == 0) { player = new Clappr.Player({ source: channelToReproduce, parentId: '#video-player', height: '500px', width: '100%', autoPlay: true, }); } else { // Assume player instance is already created player.configure({ source: channelToReproduce, }); } clearResolutions(); getResolution(channelToReproduce, updateResolution); } ga('send', { hitType: 'event', eventCategory: 'Video', eventAction: 'play', eventLabel: channelToReproduce }); } function reproduceAudio(channelToReproduce) { if (channelToReproduce.includes("pls")) { getURLsFromPLS(channelToReproduce, reproducePLSFromUrl); } else { reproduceAudioFromUrl(channelToReproduce); } } function reproduceAudioFromUrl(channelToReproduce) { console.log("Reproducing audio: " + channelToReproduce); 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. }); } ga('send', { hitType: 'event', eventCategory: 'Audio', eventAction: 'play', eventLabel: channelToReproduce }); } function reproducePLSFromUrl(data) { reproduceAudioFromUrl(data[0]); updateExtraAudioInfo("pls_more_url_available", data); } 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 = ""; } function updateExtraAudioInfo(type, data) { console.log("Extra info type: " + type); console.log("Extra info data: " + data); var textToAdd = ""; if (type == "pls_more_url_available") { for (i = 0; i < data.length; i++) { textToAdd += data[i] + "
"; } } document.getElementById("extra-audio-info").innerHTML = textToAdd; document.getElementById("extra-audio-info-div").style.display = "block"; } function getURLsFromPLS(sUrl, fn_callback) { $.get(sUrl, function(data) { $response = data.split("\n"); $urls=[]; $.each($response, function( index, value ) { $line_separated_value = value.split("="); if ($line_separated_value.length > 1 && $line_separated_value[1].indexOf("http") != -1) { $urls.push($line_separated_value[1]); } }); fn_callback($urls) }); }; function getResolution(from, fn_callback) { $.get(from, function(data) { $response = data.split("\n"); $resolutions=[]; $.each($response, function( index, value ) { $line_separated_value = value.split(","); for (i = 0; i < $line_separated_value.length; i++) { if ($line_separated_value[i].indexOf("RESOLUTION=") != -1) { $resolutions.push($line_separated_value[i].split('=')[1]); } } }); fn_callback($resolutions); }); } function getUrlParameter(sParam) { var sPageURL = decodeURIComponent(window.location.search.substring(1)), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : sParameterName[1]; } } }; function filterChannelsList() { var input, filter, div, elements, txtValue; input = document.getElementById("searchInput"); filter = input.value.toUpperCase(); div = document.getElementById("channel-list"); elements = div.getElementsByTagName("a"); for (i = 0; i < elements.length; i++) { txtValue = elements[i].textContent || elements[i].innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { elements[i].style.display = ""; } else { elements[i].style.display = "none"; } } } function reproduceChannel(channel_options) { document.getElementById("option-buttons").innerHTML = "" if (channel_options.length > 0) { reproduceVideo(channel_options[0]['url']) if (channel_options.length > 1) { for (i = 0; i < channel_options.length; ++i) { var url = channel_options[i]['url']; document.getElementById("option-buttons").innerHTML += "OpciĆ³n " + (i+1) + ""; } } } else { reproduceVideo("no_video_found.m3u8") } } function onChannelClick(channel) { channel = JSON.parse(channel); reproduceChannel(channel['options']) if (document.getElementById("container").offsetWidth < 720) { document.getElementById("video").scrollIntoView({behavior: "smooth", block: "start", inline: "nearest"}); } } function loadChannelsInList() { fetch('http://91.121.64.179/tdt_project/output/channels.json') .then(function(response) { return response.json(); }) .then(function(myJson) { nacionales = myJson["countries"][0]; //Spain is the [0] country var items = []; $.each(nacionales["ambits"], function( ambit, ambit_val ) { $.each(ambit_val["channels"], function( key, val ) { items.push("" + val["name"] + "") }); }); $(items.join( "" )).appendTo(".channels-list"); }); }