2016-05-30 19 views
3

ライブストリームのリストを取得することができます:https://developers.google.com/youtube/v3/live/docs/liveStreams/list#examples しかし、アンドロイドのYouTube v3 APIを使用して特定のチャンネルのライブストリームステータスとライブストリームリンクまたはIDを取得するにはどうすればよいですか?YouTubeのライブストリームをAndroid IDのYouTube API V3でチャンネルIDで取得する方法は?

+0

ANSはありますか? – Hamza

+0

あなたはそれを共有するPLSを得る場合、ANSはありません。 – YLS

+0

私もこれを探しています。しかし、あなたはYouTubeのチャンネルをスクラップし、ライブストリームのURLを取得するのはどうですか? – Hamza

答えて

1

私は同じ問題に直面し、同じ解決策を見つけ出すことができました。 YouTubeでは実際にこの目的のためのAPIを提供しています。チャネルIDを持っている場合は、検索APIを使用して現在アクティブなライブビデオIDを取得できます。

は、次のAPIを使用します。

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={YOUR_CHANNEL_ID}&eventType=live&type=video&key={YOUR_API_KEY} 

ここで重要な要因は、あなたがvideolivetypeeventTypeを設定する必要があります。

チャンネルIDを取得するには、チャンネルのユーザー名がある場合は次のリクエストを使用できます。これは、YouTubeは私がライブストリームのビデオを取得する方法この

https://www.googleapis.com/youtube/v3/search?part=snippet&q={YOUR_SEARCH_QuERY}&eventType=live&type=video&key={YOUR_YOUTUBE_API} 

あなたのすべてのライブストリームイベントを与えるように、あなたはまた、YouTubeにクエリを渡すことができるライブストリームID

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={CHANNEL_ID}&eventType=live&type=video&key={YOUR_API_KEY} 

を返します

https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername={CHANNEL_USER_NAME}&key={YOUR_API_KEY} 
+0

を追加しました。これはPUBLICのライブストリームでのみ機能します。 UNLISTEDまたはPRIVATEのライブストリームでは機能しません。 – jsherk

3

私のアプリ

private void initVolley(String[] urls) { 


     for (String url : urls) { 

      if (url.startsWith("https://www.googleapis.com/youtube/v3/")) { 
       jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 

         try { 
          JSONArray jsonArray = response.getJSONArray("items"); 
          if (jsonArray.length() > 0) { 
           for (int getItem = 0; getItem < jsonArray.length(); getItem++) { 

            JSONObject jsonObject = jsonArray.getJSONObject(getItem).getJSONObject("id"); 
            String videoID = jsonObject.getString("videoId"); 


            Log.d(TAG, "void id " + videoID); 

            mUrlList.add(new video(jsonArray.getJSONObject(getItem).getJSONObject("snippet").getString("title"), jsonArray.getJSONObject(getItem).getJSONObject("snippet").getJSONObject("thumbnails").getJSONObject("medium").getString("url"), " ", "https://www.youtube.com/watch?v=" + videoID, true)); 


            if (mAdapter != null) 
             mAdapter.notifyDataSetChanged(); 
            Log.d(TAG, videoID + jsonArray.length() + jsonArray.getJSONObject(getItem).getJSONObject("snippet").getJSONObject("thumbnails").getJSONObject("default").getString("url")); 

           } 

          } 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 
       }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 


        } 
       }); 
       requestQueue.add(jsonObjectRequest); 
      } 
     } 
} 

そして、あなたは多分あなたがデータベースにあなたを保存するYouTubeのリンクを持っている場合、あなたがしたい場合は、これはあなたにこの

 JsonObjectRequest obreq = new JsonObjectRequest(Request.Method.GET, JsonURL, null, 
        new Response.Listener<JSONObject>() { 

         @Override 
         public void onResponse(JSONObject response) { 
          try { 
           // mVideo = new video(response.getString("title"), response.getString("thumbnail_url"), response.getString("author_name")); 
           // mVideoDataSet.add(mVideo); 

           mVideo = new video(url); 
           mVideo.setVideoTitle(response.getString("title")); 
           mVideo.setVideoThimailUrl(response.getString("thumbnail_url")); 
           mVideo.setVideoChannalName(response.getString("author_name")); 
           mVideo.setLiveNow(false); 
           mVideoDataSet.add(mVideo); 
           Log.d(TAG, "inside the volly" + mVideo.getVideoTitle()); 
           // Log.d(TAG, mVideoDataSet.get(i).getVideoStreemUrl()); 



           if (mAdapter != null) { 
            mAdapter.notifyDataSetChanged(); 
//         if(mSwipeRefreshLayout.isRefreshing()) 
//          mSwipeRefreshLayout.setRefreshing(false); 

           } else { 
            Log.d(TAG, "setingAdupter"); 
//         if(mSwipeRefreshLayout.isRefreshing()) 
//          mSwipeRefreshLayout.setRefreshing(false); 
            mAdapter = new CustomAdapter(mVideoDataSet); 
            mRecyclerView.setAdapter(mAdapter); 

           } 
           i++; 
           if (i != mUrlList.size()) 
            initVolly(); 


          } catch (JSONException e) { 

           e.printStackTrace(); 
          } 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          // if(error) 
          i++; 
          initVolly(); 
          Log.e("Volley", "Error"); 
         } 
        } 
      ); 
      // Adds the JSON object request "obreq" to the request queue 
requestQueue.add(obreq); 

と最後のための

https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=lUOhCtXPN40&format=json 

とコードの下のキーアウトAPIといくつかの便利な情報を返します。ソースコードはこちらis link

+0

これは、PUBLICのライブストリームに対してのみ機能します。 UNLISTEDまたはPRIVATEのライブストリームでは機能しません。 – jsherk

+0

私はそれがプライベートなので理にかなっていると思う – Hamza

関連する問題