Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Youtube API v3中的内容详细信息、持续时间和统计信息存在问题_Javascript_Jquery_Youtube Api_Youtube Data Api - Fatal编程技术网

Javascript Youtube API v3中的内容详细信息、持续时间和统计信息存在问题

Javascript Youtube API v3中的内容详细信息、持续时间和统计信息存在问题,javascript,jquery,youtube-api,youtube-data-api,Javascript,Jquery,Youtube Api,Youtube Data Api,我正在尝试检索每个视频的duration和viewCount值,都在videos:list api下。我创建了一个单独的函数,它将返回每个视频的持续时间和统计信息。唯一有效的是在getPlaylist(…)功能中检索到的视频播放列表和videoId。我登录到控制台,这是我得到的: console.log("id: " + videoId + " duration: " + vidDuration + " viewCount: " + viewCount); // return value in

我正在尝试检索每个视频的
duration
viewCount
值,都在videos:list api下。我创建了一个单独的函数,它将返回每个视频的持续时间和统计信息。唯一有效的是在
getPlaylist(…)
功能中检索到的视频播放列表和
videoId
。我登录到控制台,这是我得到的:

console.log("id: " + videoId + " duration: " + vidDuration + " viewCount: " + viewCount); // return value in console
id:xxx持续时间:未定义视图计数:未定义

我从来没有得到工作的持续时间,但是我注意到带有
part:statistics
的api将从注释掉的通道中检索视图计数总和的值。但这不是我要找的。我希望它能够与每个视频一起使用:

GEThttps://www.googleapis.com/youtube/v3/videos

但由于某种原因,我不能让它工作。我有
videoId
属性和参数,因此playlid可以读取它并检索视频持续时间和查看计数的所述值,但它仍然未定义,即使定义了
videoId
。哦,警报对话框也没有出现

我错过了什么

脚本:

var channelName = 'ExampleChannel';
var vidWidth = 500;
var vidHeight = 400; 
var vidResults = 15; /* # of videos to show at once - max 50 */
var vidDuration = "";
var viewCount = 0;
var videoId = "";

$(document).ready(function() {
    $.get( // get channel name and load data
        "https://www.googleapis.com/youtube/v3/channels",
        {
            part: 'contentDetails',
            forUsername: channelName,
            key: 'XXXXXXXXXX'
        },

        function(data)
        {
            $.each(data.items, 
                function(i, item) {
                    console.log(item); // log all items to console
                    var playlistId = item.contentDetails.relatedPlaylists.uploads;
                    //var viewCount = console.log(item.statistics.viewCount);
                    getPlaylists(playlistId);

            })
        }         
    );

    // function that gets the playlists
    function getPlaylists(playlistId)
    {
        $.get(
            "https://www.googleapis.com/youtube/v3/playlistItems",
            {
                part: 'snippet',
                maxResults: vidResults,
                playlistId: playlistId,
                key: 'XXXXXXXXXX'
            },

            // print the results
            function(data)
            {
                var output;
                $.each(data.items, 
                    function(i, item) {
                        console.log(item);
                        var vidTitle = item.snippet.title; // video title
                        var vidDesc = item.snippet.description; // video description
                        var videoId = item.snippet.resourceId.videoId; // video id

                        // check if description is empty
                        if(vidDesc == null || vidDesc == "")
                        {
                            vidDesc = "No description was written."; // FIX: test msg to see where it still shows up
                            $('#desc').remove(); // remove video description
                        }
                        else vidDesc = item.snippet.description;

                        vidDuration = getVideoDuration(videoId);
                        viewCount = getViewCount(videoId);
                        console.log("id: " + videoId + " duration: " + vidDuration + " viewCount: " + viewCount); // return value in console

                        output = '<li><iframe height="' + vidHeight + '" width="' + vidWidth + '" src=\"//www.youtube.com/embed/' + videoId + '\"></iframe></li><div id="title">' + vidTitle + '</div><div id="desc">' + vidDesc + '</div><div id="duration">Length: ' + vidDuration + '</div><div id="stats">View Count: ' + viewCount + '</div>';

                    // Append results to list tag
                    $('#results').append(output);
                })
            }         
        );
    }

    // return video duration
    function getVideoDuration(videoId) 
    { 
        $.get(
            "https://www.googleapis.com/youtube/v3/videos",
            {
                part: 'contentDetails',
                id: videoId,
                key: 'XXXXXXXXXX',
            },

            function(data)
            {
                $.each(data.items,
                    function(i, item) {
                        //videoId = item.snippet.resourceId.videoId;

                        alert(item.contentDetails.duration); // video duration
                        //alert(videoId);
                    })    
            }
        );
    }

    // return video view count
    function getViewCount(videoId) 
    { 
        $.get(
            "https://www.googleapis.com/youtube/v3/videos",
            {
                part: 'contentDetails, statistics',
                id: videoId,
                key: 'XXXXXXXXXX',
            },

            function(data)
            {
                $.each(data.items,
                    function(i, item) {
                        //videoId = item.snippet.resourceId.videoId;

                        alert(item.statistics.viewCount); // view count
                        //alert(videoId);
                    })  
            }
        );
    } 
});
var channelName='ExampleChannel';
可变宽度=500;
高度=400;
var vidResults=15;/*#一次显示的视频数量-最多50个*/
var vidDuration=“”;
var viewCount=0;
var videoId=“”;
$(文档).ready(函数(){
$.get(//获取通道名称并加载数据
"https://www.googleapis.com/youtube/v3/channels",
{
第部分:“内容详细信息”,
forUsername:channelName,
关键字:“XXXXXXXXX”
},
功能(数据)
{
$。每个(数据项,
职能(一、项目){
console.log(item);//将所有项目记录到控制台
var playlaid=item.contentDetails.relatedPlaylists.uploads;
//var viewCount=console.log(item.statistics.viewCount);
获取播放列表(播放ID);
})
}         
);
//获取播放列表的函数
功能获取播放列表(播放ID)
{
美元(
"https://www.googleapis.com/youtube/v3/playlistItems",
{
部分:'代码片段',
maxResults:vidResults,
playlid:playlid,
关键字:“XXXXXXXXX”
},
//打印结果
功能(数据)
{
var输出;
$。每个(数据项,
职能(一、项目){
控制台日志(项目);
var vidTitle=item.snippet.title;//视频标题
var vidDesc=item.snippet.description;//视频描述
var videoId=item.snippet.resourceId.videoId;//视频id
//检查描述是否为空
if(vidDesc==null | | vidDesc==“”)
{
vidDesc=“没有编写任何描述。”;//修复:测试消息以查看它仍然显示在何处
$('#desc').remove();//删除视频描述
}
else vidDesc=item.snippet.description;
vidDuration=getVideoDuration(videoId);
viewCount=getViewCount(videoId);
log(“id:+videoId+”持续时间:+VideoDuration+”viewCount:+viewCount);//在控制台中返回值
输出='
  • '+vidTitle+''+vidDesc+'长度:'+vidDuration+'视图计数:'+viewCount+''; //将结果附加到列表标记 $(“#结果”)。追加(输出); }) } ); } //返回视频持续时间 函数getVideoDuration(videoId) { 美元( "https://www.googleapis.com/youtube/v3/videos", { 第部分:“内容详细信息”, id:videoId, 键:“XXXXXXXXX”, }, 功能(数据) { $。每个(数据项, 职能(一、项目){ //videoId=item.snippet.resourceId.videoId; 警报(item.contentDetails.duration);//视频持续时间 //警报(videoId); }) } ); } //返回视频视图计数 函数getViewCount(videoId) { 美元( "https://www.googleapis.com/youtube/v3/videos", { 第部分:“内容详细信息、统计”, id:videoId, 键:“XXXXXXXXX”, }, 功能(数据) { $。每个(数据项, 职能(一、项目){ //videoId=item.snippet.resourceId.videoId; 警报(item.statistics.viewCount);//视图计数 //警报(videoId); }) } ); } });
    截图:(更新)


    因为调用这些函数时,您不会等待函数完成。 您需要在Javascript中使用

    我对你的代码做了一点修改(用我的api密钥测试)

    说明:

    var channelName = 'ExampleChannel';
    var vidWidth = 500;
    var vidHeight = 400; 
    var vidResults = 15; /* # of videos to show at once - max 50 */
    var vidDuration = "";
    var viewCount = 0;
    var videoId = "";
    
    $(document).ready(function() {
        $.get( // get channel name and load data
            "https://www.googleapis.com/youtube/v3/channels",
            {
                part: 'contentDetails',
                forUsername: channelName,
                key: 'XXXXXXXXXX'
            },
    
            function(data)
            {
                $.each(data.items, 
                    function(i, item) {
                        console.log(item); // log all items to console
                        var playlistId = item.contentDetails.relatedPlaylists.uploads;
                        //var viewCount = console.log(item.statistics.viewCount);
                        getPlaylists(playlistId);
    
                })
            }         
        );
    
        // function that gets the playlists
        function getPlaylists(playlistId)
        {
            $.get(
                "https://www.googleapis.com/youtube/v3/playlistItems",
                {
                    part: 'snippet',
                    maxResults: vidResults,
                    playlistId: playlistId,
                    key: 'XXXXXXXXXX'
                },
    
                // print the results
                function(data)
                {
                    var output;
                    $.each(data.items, 
                        function(i, item) {
                            console.log(item);
                            var vidTitle = item.snippet.title; // video title
                            var vidDesc = item.snippet.description; // video description
                            var videoId = item.snippet.resourceId.videoId; // video id
    
                            // check if description is empty
                            if(vidDesc == null || vidDesc == "")
                            {
                                vidDesc = "No description was written."; // FIX: test msg to see where it still shows up
                                $('#desc').remove(); // remove video description
                            }
                            else vidDesc = item.snippet.description;
    
                            vidDuration = getVideoDuration(videoId);
                            viewCount = getViewCount(videoId);
                            console.log("id: " + videoId + " duration: " + vidDuration + " viewCount: " + viewCount); // return value in console
    
                            output = '<li><iframe height="' + vidHeight + '" width="' + vidWidth + '" src=\"//www.youtube.com/embed/' + videoId + '\"></iframe></li><div id="title">' + vidTitle + '</div><div id="desc">' + vidDesc + '</div><div id="duration">Length: ' + vidDuration + '</div><div id="stats">View Count: ' + viewCount + '</div>';
    
                        // Append results to list tag
                        $('#results').append(output);
                    })
                }         
            );
        }
    
        // return video duration
        function getVideoDuration(videoId) 
        { 
            $.get(
                "https://www.googleapis.com/youtube/v3/videos",
                {
                    part: 'contentDetails',
                    id: videoId,
                    key: 'XXXXXXXXXX',
                },
    
                function(data)
                {
                    $.each(data.items,
                        function(i, item) {
                            //videoId = item.snippet.resourceId.videoId;
    
                            alert(item.contentDetails.duration); // video duration
                            //alert(videoId);
                        })    
                }
            );
        }
    
        // return video view count
        function getViewCount(videoId) 
        { 
            $.get(
                "https://www.googleapis.com/youtube/v3/videos",
                {
                    part: 'contentDetails, statistics',
                    id: videoId,
                    key: 'XXXXXXXXXX',
                },
    
                function(data)
                {
                    $.each(data.items,
                        function(i, item) {
                            //videoId = item.snippet.resourceId.videoId;
    
                            alert(item.statistics.viewCount); // view count
                            //alert(videoId);
                        })  
                }
            );
        } 
    });
    
    调用函数
    getVideoDuration
    .done
    告诉函数
    getVideoDuration
    在我们解析承诺时将返回一个结果(
    dfrd1.resolve(r);
    )。同时函数
    返回dfrd1.promise()表示结果将被延迟。
    当承诺得到解决时,我们进入
    done
    ,剩下的事情我们可以做:)

    你在照片上看到了什么
    getVideoDuration(videoId).done(function(r)