Android Obtener enlace de video desde youtube

Hola estoy desarrollando una aplicación android y parte de mi aplicación quiere analizar el título de la canción a youtube y obtener el enlace de vídeo. No importa obtener el video 100% correcto. Así que ¿cómo recuperar datos de youtube?

¿Puede alguien ayudarme a encontrar una solución de su ayuda realmente completa para mí.

Gracias

La forma más común de hacerlo es usar la API de datos de Youtube, que devolverá XML / Json que puede analizar para recuperar cosas como la url de vídeo.

Actualizado (2017/01/24) (v3)

Utilice la siguiente llamada para buscar vídeos de YouTube mediante una consulta de búsqueda:

https://www.googleapis.com/youtube/v3/search?part=snippet&q=fun%20video&key=YOUR-API-KEY 

Soporta los siguientes parámetros básicos para la búsqueda:

  • Parte : Datos de vídeo que desea recuperar en la búsqueda. Para las búsquedas básicas, el valor recomendado es un fragmento .
  • Q : El texto que desea buscar
  • Clave : Su clave de API de desarrollador de Google. Esta clave se puede obtener en la Consola de la API de Google Developer en la página Credenciales de la aplicación. Asegúrese de habilitar la API de datos de Youtube v3 en la aplicación a la que pertenece su clave.

Para obtener más parámetros, consulte la documentación de la API de Google

Uso de la biblioteca Java

En Android puede hacer una solicitud HTTP a la URL utilizando las clases de solicitud HTTP estándar disponibles en la plataforma o puede utilizar la Biblioteca Java de la API de Google como se muestra a continuación:

  YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() { public void initialize(HttpRequest request) throws IOException { } }).setApplicationName("YOUR-APPLICATION-NAME").build(); String queryTerm = "A fun video" // Define the API request for retrieving search results. YouTube.Search.List search = youtube.search().list("id,snippet"); search.setKey("Your-Api-Key"); search.setQ(queryTerm); // Call the API and print first result. SearchListResponse searchResponse = search.execute(); if(searchResponse.getItems().size() == 0) { //No items found. return; } SearchResult firstItem = searchResponse.getItems().get(0); ResourceId rId = firstItem.getId(); // Confirm that the result represents a video. Otherwise, the // item will not contain a video ID. if (rId.getKind().equals("youtube#video")) { Thumbnail thumbnail = firstItem.getSnippet().getThumbnails().getDefault(); Log.d("YOUTUBE_SAMPLE","Video Id" + rId.getVideoId()); Log.d("YOUTUBE_SAMPLE","Title: " + firstItem.getSnippet().getTitle()); Log.d("YOUTUBE_SAMPLE","Thumbnail: " + thumbnail.getUrl()); } 

Debería buscar la API oficial de Youtube:

https://developers.google.com/youtube/code?hl=fr#Java

Te devuelve Json sólo tienes que analizar.

Hola Gracias a todos ustedes por señalarme el camino que quiero en barbecho. Yo había llegado a algo finalmente y también me gusta compartir mi expirance

De acuerdo con el youtube podemos solicitar datos como xml o json. Utilicé el método json para mi implementación

http://gdata.youtube.com/feeds/api/videos?q=title_you_want_to_search&max-results=1&v=2&alt=jsonc

Puede obtener más información de la guía de desarrolladores de youtube

Arriba de la solicitud "title_you_want_to_search" es la palabra clave que desea buscar. Y podemos personalizar el resultado pasando los parámetros adicionales a la url.

  • "Max-results": mencione cuántos resultados desea obtener (en mi caso sólo quiero uno)
  • "Alt": el formato que desea resultados Json o xml

Primero necesitamos solicitar datos de la API de Youtube y luego tenemos que seleccionar qué parte de la información queremos elegir de matriz. En mi caso utilicé los "datos" y los "artículos" para conseguir el videoid. Después de que pegamos el videoId entonces podemos hacer la URL del video como esta

String mVideoLink = "https://youtu.be/"+videoID; (Utilicé las siguientes funciones para conseguir esta cosa hecha)

 public String readYoutubeFeed(String songTitle) { StringBuilder builder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); String url = "http://gdata.youtube.com/feeds/api/videos?q="+songTitle+"&max-results=1&v=2&alt=jsonc"; try { URLEncoder.encode(url, "UTF-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); Log.v(TAG,"encode error"); } HttpGet httpGet = new HttpGet(url); try { HttpResponse response = client.execute(httpGet); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); if (statusCode == 200) { HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(content, "UTF-8")); String line; while ((line = reader.readLine()) != null) { builder.append(line); } } else { Log.v(TAG,"Failed to download file"); } } catch (ClientProtocolException e) { e.printStackTrace(); Log.v(TAG,"readYoutubeFeed exeption1"); } catch (IOException e) { e.printStackTrace(); Log.v(TAG,"readYoutubeFeed exeption2"); } return builder.toString(); } public String getYouTubeVideoId(String songTitle){ String jesonData = readYoutubeFeed(songTitle); Log.i(TAG,jesonData); String title = "123"; try { SONObject jObj = new JSONObject(jesonData); JSONArray ja = jObj.getJSONObject("data").getJSONArray("items"); JSONObject jo = (JSONObject) ja.get(0); title = jo.getString("id"); Log.v(TAG,"id is " +title); } catch (Exception e) { e.printStackTrace(); Log.v(TAG,"error occerd"); } return title; 

}

Una cosa importante que quiero mencionar en esta conversión de cadenas a "UTF-8" es lo que quiere hacer porque la creación de JsonArray puede ser lanzar excepciones. Puede ser que hay mejores maneras de hacer esto. Si hay alguna sugerencia

  • Youtube YouTubePlayerSupportFragment no funciona correctamente (¿cargando siempre?)
  • Android Youtube Error de la API YouTubePlayerView
  • Android Java Youtube API v3.0 obtener enlace de vídeo RTSP
  • Uso de la API de YouTube dentro de un fragmento
  • Java.lang.IllegalStateException: YouTubeServiceEntity no se ha inicializado al usar YouTubePlayerApi
  • Añadir fragmento en un fragmento (fragmento anidado)
  • Cómo cargar YouTubePlayer utilizando YouTubePlayerFragment dentro de otro Fragmento ?? (Androide)
  • Android YouTubePlayer con superposición no autorizada encima del reproductor
  • API de YouTube para Android: YouTubePlayerFragment loading spinner
  • Los anuncios de YouTube no se muestran al usar la API de reproductor de YouTube para Android
  • Haciendo un perfecto reproductor Youtube de Chromeless en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.