Solución:
Consulte este hilo para obtener información oficial.
puedes presionar esto: http://gdata.youtube.com/feeds/api/videos/VIDEO_ID (La página ahora devuelve: “Ya no está disponible”).
y determinar si el video es válido según la respuesta
No hay forma de que pueda verificar la validez de la ID con RegEx, ya que no todos los valores alfanuméricos son ID válidos.
PD: estoy bastante seguro de que vi “guiones” en las ID de video
pps “subrayado” también es un carácter válido: http://www.youtube.com/watch?v=nrGk0AuFd_9
[a-zA-Z0-9_-]{11} es la expresión regular (fuente), pero no hay garantía de que el video esté allí incluso si la expresión regular es válida
Con la v3 de la API de YouTube lo logré llamando a:
GET https://www.googleapis.com/youtube/v3/videos?part=id&id=Tr5WcGSDqDg&key={YOUR_API_KEY}
Esto devuelve algo como:
{
"kind": "youtube#videoListResponse",
"etag": ""dc9DtKVuP_z_ZIF9BZmHcN8kvWQ/P2cGwKgbH6EYZAGxiKCZSH8R1KY"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [{
"kind": "youtube#video",
"etag": ""dc9DtKVuP_z_ZIF9BZmHcN8kvWQ/Rgd0_ApwigPcJHVX1Z2SIQ5FJtU"",
"id": "Tr5WcGSDqDg"
}]
}
Entonces puedes hacer una verificación:
if(json.hasOwnProperty('pageInfo') && json.pageInfo.totalResults === 1) {
if(items[0].kind==='youtube#video') {
//valid video ID
}
}
Si está buscando una solución más rápida y escalable, diría que use REGEX con algunos registros / reserva para que los errores sean proactivos si YouTube cambia su ID en el futuro.
He estado trabajando con la API de YouTube durante un tiempo y ahora lidiando con millones de videos, al recorrerlos, encontré que este es el más ideal:
/^[A-Za-z0-9_-]{11}$/
Un ejemplo más detallado dice en PHP:
public static function validId($id) {
return preg_match('/^[a-zA-Z0-9_-]{11}$/', $id) > 0;
}