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

-2votos

Api YouTube. Obtener vídeos de un canal

Hola, quiero obtener en una lista los vídeos de un canal de youtube, pero no tengo ni idea de la api de YouTube. Estoy trabajando en Java (Android). ¿Me pueden asesorar de como hacerlo? ¿Pueden darme un contacto y hablamos mejor?

2 Respuestas

0voto

white Puntos75620

Cual es tu duda principal? como usar la api de youtube? o como obtener la api en android?

si te sirve, cuando practicaba el desarrollo de android hize un código para obtener los videos desde la api version 2 ( obsoleta ). la idea es usar AsyncTask, JSONObject, JSONArray, etc.

import android.app.Activity;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.GridView;
import android.widget.Toast;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getYTVideos();
    }

    private boolean getYTVideos()
    {
        // JSONObject json = new JSONObject(result);

        ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

        if (networkInfo == null || !networkInfo.isConnected())
        {
            // no hay conexion de red en el dispositivo
            return false;
        }

        // Definimos la url para la peticion
        String YTVideoUrl = "http://gdata.youtube.com/feeds/api/playlists/" + // la ruta de la api
                            "PLA2B92602CA292180" + // el id del playlist ( mi artista favorito :3 )
                            "?max-results=25" + // la cantidad de resultados deseados
                            "&start-index=1" + // el indice de los resultados
                            "&alt=jsonc" + // el formato en json
                            "&v=2"; // la version del api (dejar en 2)

        new VideoDataDownloader().execute(YTVideoUrl);

        return true;
    }

    private class VideoDataDownloader extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {

            InputStream inputStream = null;

            // definimos la cadena del resultado final y la cadena para las lineas
            // de la respuesta http
            String result = "",
                   line = "";

            try
            {
                // definimos el cliente http
                HttpClient httpClient = new DefaultHttpClient();

                // definimos la peticion http a la url deseada
                HttpResponse httpResponse = httpClient.execute(new HttpGet(urls[0]));

                // obtenemos el contenido
                inputStream = httpResponse.getEntity().getContent();

                // definimos el lector de buffer
                BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream, "utf-8"), 8);

                // agregamos al resultado linea a linea
                while((line = bufferedReader.readLine()) != null) {
                    result += line;
                }

                // ceramos
                inputStream.close();

            } catch (Exception e){}

            return result;
        }

        @Override
        protected void onPostExecute(String result) {

            try
            {
                JSONObject json = new JSONObject(result).getJSONObject("data");
                JSONArray videos = json.getJSONArray("items");

                String playlistTitle = json.getString("title");

                Toast.makeText(
                        getBaseContext(),
                        String.format("Lista '%s' cargada!", playlistTitle),
                        Toast.LENGTH_LONG
                ).show();

                for (int i = 0; i < videos.length(); i++) {

                    JSONObject videoItem = videos.getJSONObject(i);
                    JSONObject videoData = videoItem.getJSONObject("video");

                    // el titulo del video
                    // videoData.getString("title");

                    // la descripcion del video
                    // videoData.getString("description");

                    // el thumbnail del video
                    // videoData.getJSONObject("thumbnail").getString("sqDefault");

                }

            } catch (JSONException e) { e.printStackTrace(); }
        }
    }
}

yo defini la cadena YTVideoUrl con un playlist cualquiera, la url es:

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

igual habría que pulir detalles como, comprobar que es una url valida, comprobar que no duevuelva un json vacio, etc.

youngsdeveloper comentado Feb 16, 2015

Creo que me servira, muchas gracias!!!

2votos

Peter Puntos134480

Creo que la misma documentación lo explica perfectamente.

¿Cual es el problema o error que tienes?

Saludos.

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

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

...

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

Conecta