こんにちは、Android アプリケーションを開発しています。私のアプリケーションの一部は、曲のタイトルを YouTube に解析し、ビデオ リンクを取得したいと考えています。100% 正しいビデオを取得することは重要ではありません。YouTubeからデータを取得するにはどうすればよいですか?
誰かが解決策を見つけるのを手伝ってくれますか?
ありがとう
こんにちは、Android アプリケーションを開発しています。私のアプリケーションの一部は、曲のタイトルを YouTube に解析し、ビデオ リンクを取得したいと考えています。100% 正しいビデオを取得することは重要ではありません。YouTubeからデータを取得するにはどうすればよいですか?
誰かが解決策を見つけるのを手伝ってくれますか?
ありがとう
これを行う最も一般的な方法は、YouTube データ API を使用することです。この API は、動画の URL などを取得するために解析できる XML/Json を返します。
更新 (2017/01/24) (v3)
検索クエリを使用して YouTube 動画を検索するには、次の呼び出しを使用します。
https://www.googleapis.com/youtube/v3/search?part=snippet&q=fun%20video&key=YOUR-API-KEY
検索用に次の基本パラメータがサポートされています。
その他のパラメータについては、Google API ドキュメントを参照してください
Java ライブラリの使用
Android では、プラットフォームで利用可能な標準の HTTP リクエスト クラスを使用して URL への HTTP リクエストを実行するか、以下に示すようにGoogle 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());
}
こんにちは私が休耕したい方法を私に指摘してくれた皆さんに感謝します。私はついに何かを思いついたし、また私の有効期限を共有したい
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に渡すことで、結果をカスタマイズできます。
まず、Youtube apiにデータをリクエストする必要があります。次に、情報のどの部分を配列から選択するかを選択する必要があります。私の場合、「データ」と「アイテム」を使用してビデオIDを取得しました。videoIdを追加した後、次のようにビデオURLを作成できます。
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」に変換する際に言及したい重要なことの1つは、JsonArrayの作成で例外がスローされる可能性があるためです。これを行うためのより良い方法があるかもしれません。何か提案があれば
公式の Youtube API を探す必要があります。
https://developers.google.com/youtube/code?hl=fr#Java
解析する必要がある Json を返します。