web-dev-qa-db-fra.com

Comment obtenir le nombre de visionnages de vidéos avec l'API YouTube?

La question est très simple. Comment obtenir le nombre de visionnages de vidéos avec l'API YouTube?

enter image description here

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 )

77
Ante

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

74
Victor

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"
   }
  }
 ]
}
58
Matias Molinas

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>
9
steffanjj

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);}
8
SVS

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;
    ?>
3
dragos

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()));
        }
    }
}
2
zmonteca

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.

2
NVRM

regarder yt:statistics balise. Il fournit viewCount, videoWatchCount, favoriteCount etc.

1
Rajani Karuturi

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>
1
RegarBoy

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);
        }
    }
});
1
bartburkhardt

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'};
1
Shahzaib Chadhar
1
Code Spy

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.

1
Devner