Como obtenho o título de um vídeo do YouTube se eu tiver o ID de vídeo?
-
21-09-2019 - |
Pergunta
Estou jogando agora com a API do YouTube e comecei um pequeno projeto (por diversão).
O problema é que eu não consigo encontrar o caminho para obter o título de um vídeo do ID. (Exemplo: yllzyhk54z0)
Eu olhei na documentação da API de dados e player e não consigo encontrá -los.
Se alguém souber como fazer isso ou se alguém poderia me ajudar a encontrar o caminho para fazer isso, por favor me ajude.
Nota: Estou usando JavaScript. Será um aplicativo da web.
EDIT: Eu tenho uma ideia. Talvez usando uma expresso regular para analisar o título do título da página. Estou trabalhando nisso.
Solução
Não é totalmente possível no JavaScript, pois você está tentando obter um documento de um domínio diferente. Se você estiver feliz em jogar um pouco de PHP, tente isso. Testado OK:
<?
$vidID = $_POST['vidID'];
$url = "http://gdata.youtube.com/feeds/api/videos/". $vidID;
$doc = new DOMDocument;
$doc->load($url);
$title = $doc->getElementsByTagName("title")->item(0)->nodeValue;
?>
<html>
<head>
<title>Get Video Name</title>
</head>
<body>
<form action="test.php" method="post">
<input type="text" value="ID Here" name="vidID" />
<input type="submit" value="Get Name" />
</form>
<div id="page">URL: [<?= $url ?>]</div>
<div id="title">Title: [<?= $title ?>]</div>
</body>
</html>
Outras dicas
É assim que você pode fazer isso com o JavaScript e a API de dados V3 do YouTube.
var ytApiKey = "...";
var videoId = "ylLzyHk54Z0";
$.get("https://www.googleapis.com/youtube/v3/videos?part=snippet&id=" + videoId + "&key=" + ytApiKey, function(data) {
alert(data.items[0].snippet.title);
});
Ligar http://gdata.youtube.com/feeds/api/videos/ylLzyHk54Z0
.
Neste arquivo XML, leia o valor do <title>
marcação.
Você pode usar uma solicitação JSON para: http://gdata.youtube.com/feeds/api/videos/ylLzyHk54Z0?v=2&alt=jsonc
Esta resposta é precisa em dezembro de 2015.
Para obter o título de vídeo de um ID de vídeo do YouTube, você precisará construir a seguinte URL, usando a API de dados do YouTube (você deve usar uma chave da API, caso contrário, a solicitação falhará):
https://www.googleapis.com/youtube/v3/videos?part=snippet&id={YOUTUBE_VIDEO_ID}&fields=items(id%2Csnippet)&key={YOUR_API_KEY}
Faça uma solicitação GET e você receberá uma resposta JSON semelhante ao pedaço abaixo. Para o título, ele existe no snippet/title
chave.
{
"items":[
{
"id":"Jglv0A0qLI8",
"snippet":{
"publishedAt":"2014-06-30T03:42:20.000Z",
"channelId":"UCdTU5vd37FlTZ-xoB0xzRDA",
"title":"AIA Malaysia - A-Plus Venus Plan - Comprehensive Female Protection and Insurance Plan",
"description":"A comprehensive female protection plan for the modern women\n\nFor more information visit: http://www.aia.com.my/en/individuals/products-and-services/health/a-plus-venus-a-plus-venus-extra.html\n\nFor more products, visit AIA Malaysia's Products and Services playlist:\nhttps://www.youtube.com/playlist?list=PLSrgVT3aQ1fZ3SCe-dEVnFJDApBYkqolP\n\nFor more videos. subscribe to AIA Malaysia's YouTube channel:\nhttps://www.youtube.com/channel/UCdTU5vd37FlTZ-xoB0xzRDA",
"thumbnails":{
"default":{
"url":"https://i.ytimg.com/vi/Jglv0A0qLI8/default.jpg",
"width":120,
"height":90
},
"medium":{
"url":"https://i.ytimg.com/vi/Jglv0A0qLI8/mqdefault.jpg",
"width":320,
"height":180
},
"high":{
"url":"https://i.ytimg.com/vi/Jglv0A0qLI8/hqdefault.jpg",
"width":480,
"height":360
},
"standard":{
"url":"https://i.ytimg.com/vi/Jglv0A0qLI8/sddefault.jpg",
"width":640,
"height":480
},
"maxres":{
"url":"https://i.ytimg.com/vi/Jglv0A0qLI8/maxresdefault.jpg",
"width":1280,
"height":720
}
},
"channelTitle":"AIA Malaysia",
"tags":[
"aia",
"aia malaysia",
"a-plus venus",
"female health insurance",
"female life insurance",
"female insurance",
"female medical insurance"
],
"categoryId":"27",
"liveBroadcastContent":"none",
"localized":{
"title":"AIA Malaysia - A-Plus Venus Plan - Comprehensive Female Protection and Insurance Plan",
"description":"A comprehensive female protection plan for the modern women\n\nFor more information visit: http://www.aia.com.my/en/individuals/products-and-services/health/a-plus-venus-a-plus-venus-extra.html\n\nFor more products, visit AIA Malaysia's Products and Services playlist:\nhttps://www.youtube.com/playlist?list=PLSrgVT3aQ1fZ3SCe-dEVnFJDApBYkqolP\n\nFor more videos. subscribe to AIA Malaysia's YouTube channel:\nhttps://www.youtube.com/channel/UCdTU5vd37FlTZ-xoB0xzRDA"
}
}
}
]
}
Para mais informações visite a página de documentação da API.
O título do vídeo está na API e acessível em JavaScript usando a notação de pontos:
the_name_of_your_video_object.A.videoData.title
As respostas de Robert Sim e CbAigorri foram as melhores, essa é a maneira correta de fazê -lo neste momento com JS, faça solicitação para:
https://www.googleapis.com/youtube/v3/videos?part=snippet&id={YOUTUBE_VIDEO_ID}&fields=items(id,snippet)&key={YOUR_API_KEY}
Uma pequena especificação sobre isso: você pode usar IDs de vídeo do YouTube separados por vírgula para obter várias informações de vídeos em uma solicitação.
Para obter 1 vídeo, substitua {YOUTUBE_VIDEO_ID}
com ID de vídeo (ex: 123456
) Para obter mais vídeos em uma solicitação, substitua {YOUTUBE_VIDEO_ID}
com IDs separados por vírgula (Ex: 123456,234567,345678,456789
)
Isso contará como uma única solicitação nas cotas, dessa maneira você pode obter muitos detalhes de vídeo com apenas um custo de cota/solicitação.
Minha solução é:
$xmlInfoVideo = simplexml_load_file("http://gdata.youtube.com/feeds/api/videos/".$videoId."?v=2&fields=title");
foreach($xmlInfoVideo->children() as $title) { $videoTitle = strtoupper((string) $title); }
Isso obtém o título do vídeo.
Ao invés de usar http://gdata.youtube.com/feeds/api/videos/....
Se você tiver o vídeo carregado, poderá usar o método getVideodata () do objeto Player para recuperar informações no vídeo, incluindo o título. Ele retornará um objeto que contém: video_id, autor, título.