La question est très simple. Comment obtenir le nombre de visionnages de vidéos avec l'API YouTube?
La tâche est simple mais j’aimerais utiliser cette requête sur un grand nombre de vidéos très souvent. Est-il possible d'appeler leur API Youtube et de l'obtenir? (quelque chose comme facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com )
Je pense que le moyen le plus simple consiste à obtenir des informations vidéo au format JSON. Si vous voulez utiliser JavaScript, essayez jQuery.getJSON () ... Mais je préfère PHP:
<?php
$video_ID = 'your-video-ID';
$JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json");
$JSON_Data = json_decode($JSON);
$views = $JSON_Data->{'entry'}->{'yt$statistics'}->{'viewCount'};
echo $views;
?>
Ref: API Youtube - Récupération d'informations sur une seule vidéo
Vous pouvez utiliser la nouvelle API de données YouTube v3
si vous récupérez la vidéo, la partie statistique contient le viewCount :
de la doc:
https://developers.google.com/youtube/v3/docs/videos#resource
statistics.viewCount/Le nombre de fois que la vidéo a été visionnée.
Vous pouvez récupérer ces informations côté client ou côté serveur en utilisant certaines des bibliothèques clientes:
https://developers.google.com/youtube/v3/libraries
Et vous pouvez tester l'appel API à partir de la doc:
https://developers.google.com/youtube/v3/docs/videos/list
Échantillon:
Demande:
GET https://www.googleapis.com/youtube/v3/videos?part=statistics&id=Q5mHPo2yDG8&key={YOUR_API_KEY}
Authorization: Bearer ya29.AHES6ZSCT9BmIXJmjHlRlKMmVCU22UQzBPRuxzD7Zg_09hsG
X-JavaScript-User-Agent: Google APIs Explorer
Réponse:
200 OK
- Show headers -
{
"kind": "youtube#videoListResponse",
"etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/dZ8K81pnD1mOCFyHQkjZNynHpYo\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"id": "Q5mHPo2yDG8",
"kind": "youtube#video",
"etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/4NA7C24hM5mprqQ3sBwI5Lo9vZE\"",
"statistics": {
"viewCount": "36575966",
"likeCount": "127569",
"dislikeCount": "5715",
"favoriteCount": "0",
"commentCount": "20317"
}
}
]
}
La version 2 de l'API est obsolète depuis mars 2014 et est utilisée par certaines de ces autres réponses.
Voici un extrait de code très simple permettant d'obtenir le nombre de vues d'une vidéo à l'aide de JQuery dans l'API v3 de YouTube.
Vous devrez d'abord créer une clé API via console de développement Google .
<script>
$.getJSON('https://www.googleapis.com/youtube/v3/videos?part=statistics&id=Qq7mpb-hCBY&key={{YOUR-KEY}}', function(data) {
alert("viewCount: " + data.items[0].statistics.viewCount);
});
</script>
Voici un petit extrait de code pour obtenir des vues de vidéos Youtube à partir d'URL à l'aide de Javascript
démonstration du code ci-dessous
function videoViews() {
var rex = /[a-zA-Z0-9\-\_]{11}/,
videoUrl = $('input').val() === '' ? alert('Enter a valid Url'):$('input').val(),
videoId = videoUrl.match(rex),
jsonUrl = 'http://gdata.youtube.com/feeds/api/videos/' + videoId + '?v=2&alt=json',
embedUrl = '//www.youtube.com/embed/' + videoId,
embedCode = '<iframe width="350" height="197" src="' + embedUrl + '" frameborder="0" allowfullscreen></iframe>'
//Get Views from JSON
$.getJSON(jsonUrl, function (videoData) {
var videoJson = JSON.stringify(videoData),
vidJson = JSON.parse(videoJson),
views = vidJson.entry.yt$statistics.viewCount;
$('.views').text(views);
});
//Embed Video
$('.videoembed').html(embedCode);}
Vous pouvez aussi utiliser ceci:
<?php
$youtube_view_count = json_decode(file_get_contents('http://gdata.youtube.com/feeds/api/videos/wGG543FeHOE?v=2&alt=json'))->entry->{'yt$statistics'}->viewCount;
echo $youtube_view_count;
?>
Utilisez le client Google PHP API: https://github.com/google/google-api-php-client
Voici une petite mini-classe juste pour obtenir des statistiques YouTube pour un identifiant vidéo unique. Il peut évidemment être prolongé d'une tonne en utilisant le reste de l'API: https://api.kdyby.org/class-Google_Service_YouTube_Video.html
class YouTubeVideo
{
// video id
public $id;
// generate at https://console.developers.google.com/apis
private $apiKey = 'REPLACE_ME';
// google youtube service
private $youtube;
public function __construct($id)
{
$client = new Google_Client();
$client->setDeveloperKey($this->apiKey);
$this->youtube = new Google_Service_YouTube($client);
$this->id = $id;
}
/*
* @return Google_Service_YouTube_VideoStatistics
* Google_Service_YouTube_VideoStatistics Object ( [commentCount] => 0 [dislikeCount] => 0 [favoriteCount] => 0 [likeCount] => 0 [viewCount] => 5 )
*/
public function getStatistics()
{
try{
// Call the API's videos.list method to retrieve the video resource.
$response = $this->youtube->videos->listVideos("statistics",
array('id' => $this->id));
$googleService = current($response->items);
if($googleService instanceof Google_Service_YouTube_Video) {
return $googleService->getStatistics();
}
} catch (Google_Service_Exception $e) {
return sprintf('<p>A service error occurred: <code>%s</code></p>',
htmlspecialchars($e->getMessage()));
} catch (Google_Exception $e) {
return sprintf('<p>An client error occurred: <code>%s</code></p>',
htmlspecialchars($e->getMessage()));
}
}
}
Pourquoi utiliser une clé api pour récupérer une partie du code HTML public!
Exemple le plus simple de démonstration de ligne de commande unix, utilisant curl, grep et cut.
curl https://www.youtube.com/watch?v=r-y7jzGxKNo | grep watch7-views-info | cut -d">" -f8 | cut -d"<" -f1
Oui, la page HTML complète apparaît, cette perte n’a aucun sens face aux innombrables avantages.
regarder yt:statistics
balise. Il fournit viewCount
, videoWatchCount
, favoriteCount
etc.
Vous pouvez utiliser JQuery, n'oubliez pas de remplacer Your-Api-Key
chaîne du code ci-dessous, suivez le lien pour trouver votre propre clé Api console des développeurs Google
<script>
$.getJSON('https://www.googleapis.com/youtube/v3/videospart=statistics&id=Qq7mpb-hCBY&key=Your-Api-Key', function(data) {
console.log("viewCount: ", data.items[ 0 ].statistics.viewCount);
});
</script>
Voici un exemple que j'ai utilisé dans mon application TubeCount .
J'utilise également le paramètre fields pour filtrer le résultat JSON, de sorte que seuls les champs dont j'ai besoin sont renvoyés.
var fields = "fields=openSearch:totalResults,entry(title,media:group(yt:videoid),media:group(yt:duration),media:group(media:description),media:group(media:thumbnail[@yt:name='default'](@url)),yt:statistics,yt:rating,published,Gd:comments(Gd:feedLink(@countHint)))";
var channel = "wiibart";
$.ajax({
url: "http://gdata.youtube.com/feeds/api/users/"+channel+"/uploads?"+fields+"&v=2&alt=json",
success: function(data){
var len = data.feed.entry.length;
for(var k =0; k<len; k++){
var yt = data.feed.entry[k];
v.count = Number(yt.yt$statistics != undefined && yt.yt$statistics.viewCount != undefined ? yt.yt$statistics.viewCount : 0);
}
}
});
PHP JSON
$jsonURL = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id=$Videoid&key={YOUR-API-KEY}&part=statistics");
$json = json_decode($jsonURL);
Commencez par celui-ci en décommentant
//var_dump(json);
et obtenir des vues comptent comme:
$vcounts = $json->{'items'}[0]->{'statistics'}->{'viewCount'};
Voici une fonction simple dans [~ # ~] php [~ # ~] qui renvoie le nombre de vues d’une vidéo YouTube. Vous aurez besoin de la clé d’API de données YouTube (v3) pour que cela fonctionne. Si vous n'avez pas la clé, obtenez-en une gratuitement à l'adresse suivante: API de données YouTube
//Define a constant so that the API KEY can be used globally across the application
define("YOUTUBE_DATA_API_KEY", 'YOUR_YOUTUBE_DATA_API_KEY');
function youtube_video_statistics($video_id) {
$json = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=statistics&id=" . $video_id . "&key=". YOUTUBE_DATA_API_KEY );
$jsonData = json_decode($json);
$views = $jsonData->items[0]->statistics->viewCount;
return $views;
}
//Replace YOUTUBE_VIDEO_ID with your actual YouTube video Id
echo youtube_video_statistics('YOUTUBE_VIDEO_ID');
J'utilise cette solution dans mon application et cela fonctionne à partir d'aujourd'hui. Obtenez donc la clé d’API et l’ID de la vidéo YouTube et remplacez-les dans le code ci-dessus (Deuxième ligne et Dernière ligne) et vous devriez être prêt à partir.