|
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>Reproductor de Música</title> |
|
<style> |
|
body { |
|
font-family: Arial, sans-serif; |
|
text-align: center; |
|
} |
|
#player { |
|
width: 100%; |
|
max-width: 600px; |
|
height: 350px; |
|
margin: 20px auto; |
|
} |
|
</style> |
|
</head> |
|
<body> |
|
|
|
<h1>Reproductor de Música desde YouTube</h1> |
|
<input type="text" id="youtube-url" placeholder="Ingresa la URL de YouTube" style="width: 80%; padding: 10px;"> |
|
<button onclick="loadVideo()">Cargar Video</button> |
|
|
|
<div id="player"></div> |
|
|
|
<script> |
|
|
|
function onYouTubeIframeAPIReady() { |
|
window.player = new YT.Player('player', { |
|
height: '350', |
|
width: '600', |
|
videoId: '', |
|
events: { |
|
'onReady': onPlayerReady, |
|
'onStateChange': onPlayerStateChange |
|
} |
|
}); |
|
} |
|
|
|
|
|
function onPlayerReady(event) { |
|
console.log("Reproductor listo."); |
|
} |
|
|
|
|
|
function onPlayerStateChange(event) { |
|
if (event.data === YT.PlayerState.ENDED) { |
|
console.log("El video terminó."); |
|
} |
|
} |
|
|
|
|
|
function loadVideo() { |
|
var url = document.getElementById('youtube-url').value; |
|
var videoId = extractVideoId(url); |
|
if (videoId) { |
|
player.loadVideoById(videoId); |
|
} else { |
|
alert('URL de YouTube no válida'); |
|
} |
|
} |
|
|
|
|
|
function extractVideoId(url) { |
|
var videoId = ''; |
|
var regex = /(?:https?:\/\/(?:www\.)?youtube\.com\/(?:[^\/]+\/.*\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/; |
|
var match = url.match(regex); |
|
if (match) { |
|
videoId = match[1]; |
|
} |
|
return videoId; |
|
} |
|
|
|
|
|
var tag = document.createElement('script'); |
|
tag.src = "https://www.youtube.com/iframe_api"; |
|
var firstScriptTag = document.getElementsByTagName('script')[0]; |
|
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); |
|
</script> |
|
|
|
</body> |
|
</html> |