Android开来自YouTube的视频链接(Android Get video link from

2019-07-31 05:03发布

你好我发展我的应用程序的Android应用程序,并部分要解析歌名到YouTube,并获得视频链接。 没关系获得100%正确的视频。 那么,如何检索YouTube的数据?

任何一个可以帮助我找到一个解决方案的真正帮助全给我。

谢谢

Answer 1:

要做到这一点,最常见的方式是使用YouTube数据API,它会返回XML /的JSON可以解析检索之类的视频网址。

更新(2017年1月24日)(第三版)

使用以下调用搜索使用搜索查询的YouTube视频:

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

它支持用于搜索的以下基本参数:

  • 部分 :视频数据要在搜索中检索。 对于基本搜索的推荐值片段
  • :你想搜索的文本
  • 关键 :你的谷歌开发者API密钥。 此键可以在获得谷歌开发者API控制台应用程序的凭据页上。 确保以启用密钥属于该应用程序的YouTube数据API V3。

如需了解详细参数请参阅谷歌API文档

使用Java库

在Android设备上,你可以使用的平台上提供标准的HTTP请求类做一个HTTP请求的URL,或者您也可以使用谷歌API的Java库 ,如下图所示:

        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());
        }


Answer 2:

你应该寻找的官方YouTube API:

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

返回您JSON,你只需要解析。



Answer 3:

谢谢大家,你们的指点我,我要休耕的方式。 我想出了最后的东西,也喜欢分享我的expirance

根据YouTube的我们可以请求数据作为XML或JSON。 我用JSON的方法对我实施

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

你可以从更多的信息, YouTube开发人员指南

上述请求“title_you_want_to_search”是你要搜索的关键字。 我们可以通过将多余的URL参数的自定义结果。

  • “最大结果”:别说你要多少成绩获得(在我来说,我只是想只有一个)
  • “ALT”:你想要的格式的结果JSON或XML

首先,我们需要从YouTube API的数据,然后我们必须选择我们想要从阵列选择哪个的信息的一部分。 在我来说,我使用的“数据”和“项目”来获取视频ID。 我们固定该视频ID后,那么我们就可以使视频网址这样

String mVideoLink = "https://youtu.be/"+videoID; (我用的以下功能让这件事完成)

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;

}

一个重要的事情要在此提字符串转换为“UTF-8”想要做的,因为创建JsonArray可能会抛出异常。 可能有更好的方法来做到这一点。 如果有任何建议



文章来源: Android Get video link from youtube