Getting all videos of a channel using youtube API

后端 未结 3 1379
醉酒成梦
醉酒成梦 2021-02-04 12:05

I want to get all videos of a single channel that i have its Id. The problem that I am getting only the channel informations. this is the link that I am using:

相关标签:
3条回答
  • 2021-02-04 12:27

    I thought I would share my final result using JavaScript. It uses the Google YouTube API key and UserName to get the channel ID, then pulls the videos and displays in a list to a given div tag.

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>YouTube Channel Listing</title>
        <script type="text/javascript">
            function getJSONData(yourUrl) {
                var Httpreq = new XMLHttpRequest();
                try {
                    Httpreq.open("GET", yourUrl, false);
                    Httpreq.send(null);
                } catch (ex) {
                    alert(ex.message);
                }
                return Httpreq.responseText;
            }
            function showVideoList(username, writediv, maxnumbervideos, apikey) {
                try {
                    document.getElementById(writediv).innerHTML = "";
                    var keyinfo = JSON.parse(getJSONData("https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=" + username + "&key=" + apikey));
                    var userid = keyinfo.items[0].id;
                    var channeltitle = keyinfo.items[0].snippet.title;
                    var channeldescription = keyinfo.items[0].snippet.description;
                    var channelthumbnail = keyinfo.items[0].snippet.thumbnails.default.url; // default, medium or high
                    //channel header
                    document.getElementById(writediv).innerHTML += "<div style='width:100%;min-height:90px;'>"
                        + "<a href='https://www.youtube.com/user/" + username + "' target='_blank'>"
                        + "<img src='" + channelthumbnail + "' style='border:none;float:left;margin-right:10px;' alt='" + channeltitle + "' title='" + channeltitle + "' /></a>"
                        + "<div style='width:100%;text-align:center;'><h1><a href='https://www.youtube.com/user/" + username + "' target='_blank'>" + channeltitle + "</a></h1>" + channeldescription + "</div>"
                        + "</div>";
                    var videoinfo = JSON.parse(getJSONData("https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId=" + userid + "&maxResults=" + maxnumbervideos + "&key=" + apikey));
                    var videos = videoinfo.items;
                    var videocount = videoinfo.pageInfo.totalResults;
                    // video listing
                    for (var i = 0; i < videos.length; i++) {
                        var videoid = videos[i].id.videoId;
                        var videotitle = videos[i].snippet.title;
                        var videodescription = videos[i].snippet.description;
                        var videodate = videos[i].snippet.publishedAt; // date time published
                        var videothumbnail = videos[i].snippet.thumbnails.default.url; // default, medium or high
                        document.getElementById(writediv).innerHTML += "<hr /><div style='width:100%;min-height:90px;'>"
                            + "<a href='https://www.youtube.com/watch?v=" + videoid + "' target='_blank'>"
                            + "<img src='" + videothumbnail + "' style='border:none;float:left;margin-right:10px;' alt='" + videotitle + "' title='" + videotitle + "' /></a>"
                            + "<h3><a href='https://www.youtube.com/watch?v=" + videoid + "' target='_blank'>" + videotitle + "</a></h3>" + videodescription + ""
                            + "</div>";
                    }
                } catch (ex) {
                    alert(ex.message);
                }
            }
        </script>
    </head>
    <body>
        <div id="videos"></div>
        <script type="text/javascript">
            showVideoList("USER_NAME", "videos", 25, "YOUR_API_KEY");
        </script>
    </body>
    </html>
    

    ADDITION - I also wrote a function to handle if you are using a channel ID instead of a UserName based account.

    Here is that code:

            function showVideoListChannel(channelid, writediv, maxnumbervideos, apikey) {
            try {
                document.getElementById(writediv).innerHTML = "";
                var vid = getJSONData("https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId=" + channelid + "&maxResults=" + (maxnumbervideos + 1) + "&key=" + apikey);
                var videoinfo = JSON.parse(vid);
                var videos = videoinfo.items;
                var videocount = videoinfo.pageInfo.totalResults;
                var content = "<div style='height:600px;overflow-y:auto;'>";
                for (var i = 0; i < videos.length - 1; i++) {
                    var videoid = videos[i].id.videoId;
                    var videotitle = videos[i].snippet.title;
                    var videodescription = videos[i].snippet.description;
                    var videodate = videos[i].snippet.publishedAt; // date time published
                    var newdate = new Date(Date.parse((videodate + " (ISO 8601)").replace(/ *\(.*\)/, "")));
                    var min = newdate.getMinutes();
                    if (min < 10) {
                        min = "0" + min;
                    }
                    if (newdate.getHours() > 12) {
                        newdate = newdate.getMonth() + 1 + "/" + newdate.getDate() + "/" + newdate.getFullYear() + " " + (newdate.getHours() - 12) + ":" + min + " PM";
                    } else if (newdate.getHours() == 12) {
                        newdate = newdate.getMonth() + 1 + "/" + newdate.getDate() + "/" + newdate.getFullYear() + " " + newdate.getHours() + ":" + min + " PM";
                    } else {
                        newdate = newdate.getMonth() + 1 + "/" + newdate.getDate() + "/" + newdate.getFullYear() + " " + newdate.getHours() + ":" + min + " AM";
                    }
                    var videothumbnail = videos[i].snippet.thumbnails.default.url; // default, medium or high
                    content += "<hr /><div style='width:100%;min-height:90px;'>"
                        + "<a href='https://www.youtube.com/watch?v=" + videoid + "' target='_blank'>"
                        + "<img src='" + videothumbnail + "' style='border:none;float:left;margin-right:10px;' alt='" + videotitle + "' title='" + videotitle + "' /></a>"
                        + "<h3><a href='https://www.youtube.com/watch?v=" + videoid + "' target='_blank'>" + videotitle + "</a></h3>" + videodescription + "<br />"
                        + "<span style='color:#738AAD;font-size:Small;'>" + newdate + "</span>"
                        + "</div>";
                }
                content += "</div>";
                document.getElementById(writediv).innerHTML = content;
            } catch (ex) {
                alert(ex.message);
            }
        }
    
    0 讨论(0)
  • 2021-02-04 12:27

    It is very easy method to get channel videos using your channel API key:
    Step 1: You must have an YouTube account.
    Step 2: Create your YouTube channel API key
    Step 3: Create project console.developers.google.com,

    <?php
    $API_key    = 'Your API key'; //my API key dei;
    $channelID  = 'Your Channel ID'; //my channel ID
    $maxResults = 5;
    $video_list = 
    json_decode(file_get_contents('https://www.googleapis.com/youtube/v3/search? 
    order=date&part=snippet&channelId='.$channelID.
    '&maxResults='.$maxResults.'&key='.$API_key.''));
    ?>
    
    
    
    Example : https://www.googleapis.com/youtube/v3/channelspart=snippet&forUsername= 
    {username}&key={YOUR_API_KEY}
    
    0 讨论(0)
  • 2021-02-04 12:30

    That link is for the now-retired V2 API, so it will not return any data. Instead, you'll want to use V3 of the API. The first thing you'll need to do is register for an API key -- you can do this by creating a project at console.developers.google.com, setting the YouTube data API to "on," and creating a public access key.

    Since you have your user channel ID already, you can jump right into getting the videos from it; note, however, that if you ever don't know the channel ID, you can get it this way:

    https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername={username}&key={YOUR_API_KEY}
    

    With the channel ID, you can get all the videos from the channel with the search endpoint, like this:

    https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId={channel id here}&maxResults=25&key={YOUR_API_KEY}
    

    In this case, ordering by date is the same as the old V2 parameter for ordering by "published."

    There are also a lot of other parameters you can use to retrieve videos while searching a channel; see https://developers.google.com/youtube/v3/docs/search/list for more details.

    0 讨论(0)
提交回复
热议问题