wake-up-neo.com

Abrufen von YouTube-Videoinformationen mit JavaScript/JQuery

    <script type= "text/javascript">
var url = "http://gdata.youtube.com/feeds/api/videos/VA770wpLX-Q?v=2&amp;alt=json-in-script&amp;callback=";
var title;
var description;
var viewcount;
var views;
var author;
$.getJSON(url,
    function(data){
        title = data.entry.title.$t;
        description = data.entry.media$group.media$description.$t;
        viewcount = data.entry.yt$statistics.viewCount;
        views = numberFormat (viewcount);
        author = data.entry.author[0].name.$t;
        listInfo (title,description,author,views);
});

</script>

Das ist also mein Code, um Informationen aus einem einzelnen Video abzurufen. Nachdem die Informationen empfangen wurden, ruft er diese Funktion auf, um sie anzuzeigen:

    <script type="text/javascript">
function listInfo (title,description,author,views) {
    var html = ['<dl>'];
      html.Push('<dt>','<span class="titleStyle">', title,'</span><span class="descriptionStyle">',description, '</span><span class="authorStyle">',author,'</span><span class="viewsStyle">',' Views:',views,'</span></dt>');

    html.Push('</dl>');
    document.getElementById("agenda").innerHTML = html.join("");
}
     function numberFormat(nStr,prefix){
    var prefix = prefix || '';
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1))
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    return prefix + x1 + x2;
}
  </script>

Danach legt es die Definitionsliste in einem div ab, das ich in einer Tabelle habe

<table width="485"><tr><td><div id="agenda"></div></td></tr></table>

all diese Informationen sind im Körper zu finden. Ich scheine nicht in der Lage zu sein, sie zum Laufen zu bringen. Ich habe es seit einer Woche versucht und ich kann keine Möglichkeit finden, sie zum Laufen zu bringen

15
Ali

Da die YouTube-API nicht zulässt, dass mehr als 50 Kommentare zu einer einzelnen Anfrage zurückgegeben werden, musst du einen URL-Parameter namens "start-index" hinzufügen, der YouTube mitteilt, dass du von dort aus Kommentare abrufen möchtest. Unten ist ein Beispiel. Ich habe es so gemacht, dass, solange die Antwort JSON 50 Kommentare zurückgibt, die Funktion für die nächsten 50 Kommentare erneut aufgerufen wird.

<html>
<head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
        <script type= "text/javascript">
        function getYouTubeInfo() {
                $.ajax({
                        url: "http://gdata.youtube.com/feeds/api/videos/<?php echo $_GET['v']; ?>?v=2&alt=json",
                        dataType: "jsonp",
                        success: function (data) { parseresults(data); }
                });
        }

        function parseresults(data) {
                var title = data.entry.title.$t;
                var description = data.entry.media$group.media$description.$t;
                var viewcount = data.entry.yt$statistics.viewCount;
                var author = data.entry.author[0].name.$t;
                $('#title').html(title);
                $('#description').html('<b>Description</b>: ' + description);
                $('#extrainfo').html('<b>Author</b>: ' + author + '<br/><b>Views</b>: ' + viewcount);
                getComments(data.entry.Gd$comments.Gd$feedLink.href + '&max-results=50&alt=json', 1);
        }

        function getComments(commentsURL, startIndex) {
                $.ajax({
                        url: commentsURL + '&start-index=' + startIndex,
                        dataType: "jsonp",
                        success: function (data) {
                        $.each(data.feed.entry, function(key, val) {
                                $('#comments').append('<br/>Author: ' + val.author[0].name.$t + ', Comment: ' + val.content.$t);
                        });
                        if ($(data.feed.entry).size() == 50) { getComments(commentsURL, startIndex + 50); }
                        }
                });
        }

        $(document).ready(function () {
                getYouTubeInfo();
        });
        </script>
        <title>YouTube</title>
</head>
<body bgcolor="grey">
        <div align="center">
                <br/><br/>
                <div id="title" style="color: #dddddd">Could not find a title</div><br/>
                <iframe title="Youtube Video Player" width="640" height="390" src="http://www.youtube.com/embed/<?php echo $_GET['v']; ?>?fs=1&autoplay=1&loop=0" frameborder="0" allowfullscreen style="border: 1px solid black"></iframe>
                <br/><br/>
                <div id="description" style="width:400px; background-color: #dddddd; font-size:10px; text-align:left;">Could not find a description</div>
                <div id="extrainfo" style="width:400px; background-color: #dddddd; font-size:10px; text-align:left;">Could not find extra information</div>
                <div id="comments" style="width:400px; background-color: #dddddd; font-size:10px; text-align:left;">Could not find comments</div>
        </div>
</body>
</html>

Wenn Sie weitere Fragen haben oder mit diesem Code nicht weiterkommen, zögern Sie nicht, noch einmal zu fragen :-)

Viel Glück, Tom

14
Tom

Sie sollten die YouTube-Bibliothek von jTube jquery ausprobieren. Es macht es ziemlich einfach, einfache Anrufe wie diesen zu tätigen. Code herunterladen/anzeigen unter: https://github.com/monkeecreate/jTube/blob/master/jTube/jquery.jTube.js

Verwenden Sie wie:

$.jTube({
    request: 'user',
    requestValue: 'defvayne23',
    requestOption: 'uploads',
    success: function(videos){
        ...code here
    }
});

Weitere Beispiele anzeigen: https://github.com/defvayne23/jTube

3
Danny

Obwohl ich nicht wirklich weiß, mit welchem ​​Problem Sie konfrontiert sind, habe ich unten ein kurzes Beispiel angeführt, um Ihre Frage zu beantworten, wie Sie Informationen aus einem YouTube-Video abrufen können.

Wenn Sie den YouTube-Videocode haben, ändern Sie ihn in PHP: $ _GET ['v'].

<html>
<head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
        <script type= "text/javascript">
        function getYouTubeInfo() {
                $.ajax({
                        url: "http://gdata.youtube.com/feeds/api/videos/<?php echo $_GET['v']; ?>?v=2&alt=json",
                        dataType: "jsonp",
                        success: function (data) {parseresults(data)}
                });
        }

        function parseresults(data) {
                var title = data.entry.title.$t;
                var description = data.entry.media$group.media$description.$t;
                var viewcount = data.entry.yt$statistics.viewCount;
                var author = data.entry.author[0].name.$t;
                $('#title').html(title);
                $('#description').html('<b>Description</b>: ' + description);
                $('#extrainfo').html('<b>Author</b>: ' + author + '<br/><b>Views</b>: ' + viewcount);
        }

$(document).ready(function () {
        getYouTubeInfo();
});
        </script>
        <title>YouTube</title>
</head>
<body bgcolor="grey">
        <div align="center">
                <br/><br/>
                <div id="title" style="color: #dddddd">Could not find a title</div><br/>
                <iframe title="Youtube Video Player" width="640" height="390" src="http://www.youtube.com/embed/<?php echo $_GET['v']; ?>?fs=1&autoplay=1&loop=0" frameborder="0" allowfullscreen style="border: 1px solid black"></iframe>
                <br/><br/>
                <div id="description" style="width:400px; background-color: #dddddd; font-size:10px; text-align:left;">Could not find a description</div>
                <div id="extrainfo" style="width:400px; background-color: #dddddd; font-size:10px; text-align:left;">Could not find extra information</div>
        </div>
</body>
</html>

Dies druckt den Titel über dem eingebetteten Video (iframe) und die Beschreibung, Ansichten und den Autor darunter.

Ich weiß nicht, was Sie noch tun möchten (Listeninfo, Zahlenformat), aber ich denke, Sie können es von hier aus herausfinden.

Hoffe das hilft.

Tom

0
Tom