entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Capturar los videos en JSON de una lista de producción en youtube

Saludos

Tengo el siguiente detalle, quiero capturar la lista de videos de una lista de reproducción que se arman en youtube algo como esto https://www.youtube.com/playlist?list=PL5D684AA6390E595A, lo quiero que esa lista me lo capture en formato JSON con name y link del video, ¿Alguna idea para poder hacer esto o algo parecido?.

Es para un sistema realizado con PHP y creo que voy a utilizar angujarjs.

Gracias.

2 Respuestas

2votos

white Puntos75880

tienes la api antigua de youtube (version 2) para capturar un playlist este es el formato:

http://gdata.youtube.com/feeds/api/playlists/PL5D684AA6390E595A?max-results=25&start-index=1&alt=jsonc&v=2

donde defines

  • max-results: cantidad de resultados
  • alt: formato ( jsonc )
  • v: version de la api a definir

EDIT: Hize un codigo de ejemplo de como obtener desde esa url los videos del playlist en php (> 5.3):

puedes verlo aca: http://runnable.com/VKou_l23nE4q71HB/output

si la idea es obtener un json con angular, solo tendrias que obtener lo importante de la api de youtube y imprimir un json desde php con lo ya obtenido y seleccionado.

<?php
    echo '<!DOCTYPE html>
    <html lang="es">
    <head>
        <style type="text/css">
            body{font-size: 12px; font-family: monospaced}
            ul, li{list-style-type: none}
            textarea{
                width: 300px;
                height: 300px;
            }
            .column{float: left; margin-right: 30px}
        </style>
    </head>
    <body>';

    $api_url = 'http://gdata.youtube.com/feeds/api/playlists/PL5D684AA6390E595A?max-results=25&start-index=1&alt=jsonc&v=2';
    $json = json_decode(file_get_contents($api_url), true);
    $playlist_data = array();
    $videos_data = array();

    echo '<div class="column"><textarea>' . print_r($json, 1) . '</textarea></div>';

    foreach($json['data'] as $key => $value)
    {
        if(in_array($key, ['author', 'title', 'totalItems']))
            $playlist_data[$key] = $value;

        if($key == 'items')
        {
            foreach($value as $videoID => $data)
                foreach($data['video'] as $dataKey => $dataValue)
                {
                    if(in_array($dataKey, ['title', 'player']))
                    {
                        if($dataKey == 'player')
                        {

                            $videos_data[$videoID]['url'] = $dataValue['default'];
                            continue;
                        }

                        $videos_data[$videoID][$dataKey] = $dataValue;
                    }
                }
        }
    }

    echo '<div class="column">';
    echo 'La lista es: ' . sprintf('<strong>%s</strong><br>', $playlist_data['title']);
    echo 'total de videos: ' . sprintf('<strong>%s</strong><br>', $playlist_data['totalItems']);
    echo 'autor: ' . sprintf('<strong>%s</strong><br>', $playlist_data['author']);

    echo '<br><br>';

    echo '<strong>Los videos son:</strong>';
    echo '<ul>';

    foreach($videos_data as $id => $data)
    {
        echo '<li>
            <strong>' . $id . '</strong>
            <a href="' . $data['url'] . '">' . $data['title'] . '</a>
        </li>';
    }

    echo '</div><div style="clear:bottom"></div>';

    echo '<pre>' . 

    echo '</body></html>';

0voto

nmenag comentado

Gracias por tu respuesta, me funciono, una cosa es que en runable no funciona, no se encuentra en la pagina. habían unos errores en el código como un foreach mal cerrado. pero la idea es que funciono en lo que necesito. Gracias.

0voto

Mariio Puntos740

Podrias usar la api V3 de Youtube, yo aprendi a usarlo con este video:

https://www.youtube.com/watch?v=RjUlmco7v2M

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta