web-dev-qa-db-fra.com

Obtenez des informations Youtube via JSON pour une seule vidéo (pas de flux) en Javascript

J'essaie donc d'obtenir des informations à partir d'une seule vidéo youtube via au format JSON. Comme la catégorie de description du titre, ect tout ce que je peux obtenir en plus des commentaires. J'essaie de le faire en Javascript. J'ai remarqué le lien ci-dessous, mais tous leurs exemples montrent comment obtenir des informations vidéo à partir de flux. Je voudrais obtenir les informations d'une seule vidéo en supposant que je connaisse son ID.

https://developers.google.com/youtube/2.0/developers_guide_json

Je regardais également ce Stackoverflow Question mais j'ai un problème avec la demande get, il dit "test.js (ligne 10) GET http://gdata.youtube.com/feeds /api/videos/VA770w...v=2&alt=json-in-script&callback=listInfo

200 OK 9ms "

En bref, si j'ai un seul identifiant de vidéos YouTube comme VA770wpLX-Q, à quoi ressemblerait l'URL pour obtenir les informations de ces vidéos en JSON?

Merci

41
Frank Visaggio

MISE À JOUR MAI/2015:

Cette solution ne fonctionne pas correctement, l'API YouTube v2 est en cours de suppression sous peu.

Plus d'informations sur: https://www.youtube.com/devicesupport


Essayez quelque chose comme ceci:

var video_id='VA770wpLX-Q';

$.getJSON('http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc',function(data,status,xhr){
    alert(data.data.title);
    // data contains the JSON-Object below
});

Démo: http://jsfiddle.net/wqwxg/

Le JSON retourné ressemble à ceci:

{
    "apiVersion": "2.1",
    "data": {
        "id": "VA770wpLX-Q",
        "uploaded": "2011-02-24T22:31:02.000Z",
        "updated": "2012-04-08T21:37:06.000Z",
        "uploader": "drdrevevo",
        "category": "Music",
        "title": "Dr. Dre - I Need A Doctor (Explicit) ft. Eminem, Skylar Grey",
        "description": "Music video by Dr. Dre performing I Need A Doctor featuring Eminem and Skylar Grey (Explicit). © 2011 Aftermath Records",
        "tags": ["Dr", "Dre", "Eminem", "New", "Song", "Skylar", "Grey", "GRAMMYs", "Dr.", "Need", "Doctor", "video", "Eazy", "N.W.A.", "NWA", "easy", "drdre", "and", "em"],
        "thumbnail": {
            "sqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/default.jpg",
            "hqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/hqdefault.jpg"
        },
        "player": {
            "default": "http://www.youtube.com/watch?v=VA770wpLX-Q&feature=youtube_gdata_player"
        },
        "content": {
            "5": "http://www.youtube.com/v/VA770wpLX-Q?version=3&f=videos&app=youtube_gdata"
        },
        "duration": 457,
        "aspectRatio": "widescreen",
        "rating": 4.902695,
        "likeCount": "430519",
        "ratingCount": 441253,
        "viewCount": 88270796,
        "favoriteCount": 306556,
        "commentCount": 270597,
        "status": {
            "value": "restricted",
            "reason": "requesterRegion"
        },
        "restrictions": [{
            "type": "country",
            "relationship": "deny",
            "countries": "DE"
        }],
        "accessControl": {
            "comment": "allowed",
            "commentVote": "allowed",
            "videoRespond": "allowed",
            "rate": "allowed",
            "embed": "allowed",
            "list": "allowed",
            "autoPlay": "denied",
            "syndicate": "allowed"
        }
    }
}
39
stewe

MISE À JOUR 2018

API v2 déconseillée. La nouvelle API YouTube v3 ne fonctionne qu'avec le jeton de développeur et est limitée pour les connexions gratuites.

Vous pouvez obtenir JSON sans API:

http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=ojCkgU5XGdg&format=json

Ou xml

http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=ojCkgU5XGdg&format=xml



nouvelle réponse json 2018 a

{
  "html": "<iframe width=\"480\" height=\"270\" src=\"https://www.youtube.com/embed/ojCkgU5XGdg?feature=oembed\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>",
  "title": "Creativity and Drugs (Eng Sub)",
  "thumbnail_height": 360,
  "provider_name": "YouTube",
  "author_url": "https://www.youtube.com/user/serebniti",
  "thumbnail_width": 480,
  "height": 270,
  "provider_url": "https://www.youtube.com/",
  "type": "video",
  "width": 480,
  "version": "1.0",
  "author_name": "serebniti",
  "thumbnail_url": "https://i.ytimg.com/vi/ojCkgU5XGdg/hqdefault.jpg"
}

Pouces:

hqdefault.jpg a moins de qualité mais existe toujours.

http://img.youtube.com/vi/ojCkgU5XGdg/hqdefault.jpg

http://img.youtube.com/vi/ojCkgU5XGdg/sddefault.jpg

Taille max

https://i.ytimg.com/vi/ojCkgU5XGdg/maxresdefault.jpg

Mini pouces:

http://img.youtube.com/vi/ojCkgU5XGdg/0.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/1.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/2.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/3.jpg

Annotations

http://www.youtube.com/annotations_invideo?cap_hist=1&video_id=ojCkgU5XGdg

analyser la page mobile 16kb

https://m.youtube.com/watch?v=ojCkgU5XGdg

n'oubliez pas de changer l'agent utilisateur en iOS / Safari 7

aussi

http://www.youtube.com/get_video_info?html5=1&video_id=ojCkgU5XGdg

aussi comment intégrer youtube en direct

https://www.youtube.com/embed/live_stream?channel=UCkA21M22vGK9GtAvq3DvSlA

Où UCkA21M22vGK9GtAvq3DvSlA est votre identifiant de canal. Vous pouvez le trouver dans le compte youtube sur le lien "Ma chaîne".

pouce en direct

https://i.ytimg.com/vi/W-fSCPrYSL8/hqdefault_live.jpg
61
Alexufo

Problème

L'API YouTube ne prend pas en charge JSONP comme il se doit - voir problème 4329: rappel oEmbed pour JSONP . Aussi, YouTube Data API v2 est obsolète .

Solution

Vous pouvez utiliser le service Noembed pour obtenir des données oEmbed avec JSONP pour les vidéos YouTube.

Prime

  • aucune clé API n'est nécessaire
  • aucun proxy côté serveur n'est requis

Exemple

Pour votre VA770wpLX-Q vidéo, vous pouvez essayer un lien comme celui-ci:

https://noembed.com/embed?url=http://www.youtube.com/watch?v=VA770wpLX-Q

Ou ceci pour JSONP:

https://noembed.com/embed?callback=example&url=http://www.youtube.com/watch?v=VA770wpLX-Q

Ces liens ont une URL standard d'une vidéo YouTube transmise en tant que paramètre url. Cela fonctionne non seulement avec YouTube mais aussi avec Vimeo et autres sites avec des URL comme:

https://noembed.com/embed?url=https://vimeo.com/45196609

Démo

Voici un exemple simple utilisant jQuery:

var id = 'VA770wpLX-Q';
var url = 'https://www.youtube.com/watch?v=' + id;

$.getJSON('https://noembed.com/embed',
    {format: 'json', url: url}, function (data) {
    alert(data.title);
});

Voir: [~ # ~] démo [~ # ~] sur JS Bin.

Autres options

  • Intégré (service commercial, gratuit jusqu'à 5000 URL/mois)
  • Oohembed (mise à jour: maintenant acheté par Embedly, mais la source est disponible)
  • AutoEmbed (mise à jour: semble être en panne ou interrompue)

Plus d'informations

Voir aussi ces questions:

18
rsp

en v3:

$.getJSON('https://www.googleapis.com/youtube/v3/videos?id={videoId}&key={myApiKey}&part=snippet&callback=?',function(data){

 if (typeof(data.items[0]) != "undefined") {
     console.log('video exists ' + data.items[0].snippet.title);
   } else {
     console.log('video not exists');
 }   
});

En réponse, un @Jonathan via le serveur, en utilisant PHP et CURL:

$url = "https://www.googleapis.com/youtube/v3/videos?id=".$videoId."&key=".$miApikey."&part=snippet";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$output=curl_exec($ch);                 
$response = json_decode($output, TRUE);
print_r($response);
10