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

donc j'essaie d'obtenir des informations à partir d'une seule vidéo youtube via le format JSON. Comme la catégorie de description de titre, ect tout ce que je peux obtenir à part les commentaires. Je suis en train de le faire en Javascript. J'ai remarqué le lien ci-dessous mais tous leurs exemples sont comment obtenir des informations vidéo à partir de flux. J'aimerais obtenir l'information à partir d'une seule vidéo en supposant que je connaisse son identité.

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

je regardais aussi cette Question Stackoverflow mais j'ai un problème avec la demande de l'EEG il dit "test.js (ligne 10) Obtenir 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 id de vidéos youtube comme VA770wpLX-Q, À quoi ressemblerait l'url pour obtenir qui filme des informations dans JSON?

Merci

35
demandé sur Community 2012-04-09 01:22:24

4 réponses

MISE À JOUR MAI/2015:

cette solution ne fonctionne pas correctement, YouTube API v2 est en cours d'abandon bientôt.

plus d'informations à: 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 le retour de JSON 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"
        }
    }
}
40
répondu stewe 2015-05-06 20:29:40

mise à JOUR 2018

API V2 obsolète. La nouvelle api V3 de youtube ne fonctionne qu'avec le développeur token et a une limitation 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 2018 réponse json 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 maximale

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

Mini-pouce:

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

parse la page mobile de 16 ko

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

comment intégrer youtube live

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 "mon canal" lien.

en Direct de pouce

https://i.ytimg.com/vi/W-fSCPrYSL8/hqdefault_live.jpg
51
répondu Alexufo 2018-07-04 21:13:20

problème

L'API YouTube ne supporte pas JSONP comme il se doit - voir Issue 4329: oEmbed callback for JSONP . Aussi, API de données YouTube V2 est déprécié .

Solution

Vous pouvez utiliser le bouton Noembed service oembed, il "151970920 de données" avec JSONP pour les vidéos YouTube.

Bonus

  • pas d'API clés sont nécessaires
  • aucun mandataire côté serveur n'est requis

exemple

pour votre vidéo VA770wpLX-Q , vous pouvez essayer un lien comme ceci:

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 passée comme le paramètre url . Il fonctionne non seulement avec YouTube, mais aussi avec Vimeo et autres sites avec des URLs 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

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

plus d'information

Voir aussi ces questions:

13
répondu rsp 2016-05-06 09:01:16

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 a @Jonathan via server side, 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
répondu Mario Gonzales Flores 2015-08-25 15:34:35