Получить название YouTube с идентификатором видео в Android с помощью API 3.0

Я пробовал несколько способов и искал весь день. Самый короткий путь, который я могу найти, это поместить videoID в проигрыватель YouTube, а затем получить его название. Но я уверен, что есть более короткий / более чистый способ.

Я также согласен использовать PHP вместо API, но я не знаю как, потому что методы изменились.

Заранее спасибо.

0

Решение

Я сделал это с помощью PHP. Я все еще хочу знать, как сделать это с API 3.0, но это выглядит проще. Метод просто получает строку, анализирует ее (получает идентификатор) и затем отправляет ее в asynktask, которая устанавливает соединение с файлом PHP и извлекает строку в EditText.

Вам не нужен PHP-файл, потому что вы можете получить его с самого YouTube. Что вам всегда нужно, это ключ API YouTube.

Это метод Java:

private void getVideoTitle(String t) {
String id = "---";
int i = 0;
if (t.length() == 11) {
id = t;
}
else {
i = t.toLowerCase().indexOf("https://youtu.be/".toLowerCase());
if (i > -1) {
id = t.substring(i + 17, i + 28);
}
else {
i = t.toLowerCase().indexOf("v=".toLowerCase());
if (i > -1) {
id = t.substring(i + 2, i + 13);
}
}
}

class YTF extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
edtTitle.setText(s);
}

@Override
protected String doInBackground(String... p) {
BufferedReader br = null;
try {
URL url = new URL("personal php file that gets title from id?id=" + p[0]);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
return br.readLine();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
return null;
}
}
}
if(id.length()>3){
YTF ytf = new YTF();
ytf.execute(id);
}
else{
Snackbar.make(getWindow().getDecorView(), "Not a YT Link", Snackbar.LENGTH_SHORT).setAction("YT", null).show();
}
}

Это файл PHP:

<?php
$data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id=".$_GET['id']."&key=1234567890&fields=items(id,snippet(title),statistics)&part=snippet,statistics");
$json = json_decode($data, true);
$videoTitle = $json['items'][0]['snippet']['title'];
if(empty($videoTitle)){echo "Uops.";}else{echo $videoTitle;}
?>

Я надеюсь, что это помогает кому-то.

0

Другие решения

Ты пробовал это. https://developers.google.com/youtube/v3/getting-started Для этого есть различные примеры.

URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,contentDetails,statistics,status

Description: This example retrieves a video resource and identifies several
resource parts that should be included in the API response.

API response:

{
"kind": "youtube#videoListResponse",
"etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA\"",
"videos": [
{
"id": "7lCDEYXw3mM",
"kind": "youtube#video",
"etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q\"",
"snippet": {
"publishedAt": "2012-06-20T22:45:24.000Z",
"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"title": "Google I/O 101: Q&A On Using Google APIs",
"description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg"},
"medium": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg"},
"high": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg"}
},
"categoryId": "28"},
"contentDetails": {
"duration": "PT15M51S",
"aspectRatio": "RATIO_16_9"},
"statistics": {
"viewCount": "3057",
"likeCount": "25",
"dislikeCount": "0",
"favoriteCount": "17",
"commentCount": "12"},
"status": {
"uploadStatus": "STATUS_PROCESSED",
"privacyStatus": "PRIVACY_PUBLIC"}
}
]
}
0