javascript - YouTube上的Wonder Plugin Carousel多个播放列表请求崩溃

标签 javascript wordpress youtube carousel youtube-data-api

我使用的是Wonder Plugin Carousel版本15.1。我正在尝试从超过15个的youtube channel 中检索播放列表。

我正在使用轮播播放列表集成,并且已经在我的网页上显示了2 channel 的播放列表。但是,当我尝试像我一样将第三 channel 的播放列表添加为单独的轮播时,会抛出错误。

我检查了控制台,并看到以下错误:

2wonderplugincarousel.js:216 Uncaught TypeError: Cannot read property 'replace' of undefined
    at Object.success (wonderplugincarousel.js:216)
    at i (jquery.js:2)
    at Object.fireWith [as resolveWith] (jquery.js:2)
    at y (jquery.js:4)
    at XMLHttpRequest.c (jquery.js:4)

这是wonderplugincarousel.js的getingplaylist参数,看起来像
  getYouTubePlaylist: function(youtubeapikey, youtubeplaylistid, youtubeplaylistmaxresults, index, insert_index, onsuccess, instance, pagetoken) {
                var youtube_url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=" + youtubeplaylistid + "&key=" + youtubeapikey;
                if (youtubeplaylistmaxresults)
                    if (youtubeplaylistmaxresults > 50)
                        youtube_url += "&maxResults=50";
                    else
                        youtube_url += "&maxResults=" + youtubeplaylistmaxresults;
                if (pagetoken)
                    youtube_url += "&pageToken=" + pagetoken;
                var all_done = true;
                $.getJSON(youtube_url, function(data) {
                    if (data && data.items) {
                        var original_item = $("li.amazingcarousel-item", instance.container).eq(index);
                        for (var i = 0; i < data.items.length; i++) {
                            var video_id = data.items[i]["snippet"]["resourceId"]["videoId"];
                            var thumbnail = "https://img.youtube.com/vi/" + video_id + "/0.jpg";
                            var image = "https://img.youtube.com/vi/" + video_id + "/0.jpg";
                            if (data.items[i]["snippet"]["thumbnails"] && data.items[i]["snippet"]["thumbnails"]["maxres"])
                                image = data.items[i]["snippet"]["thumbnails"]["maxres"]["url"];
                            var video = "https://www.youtube.com/embed/" + video_id;
                            var title = data.items[i]["snippet"]["title"];
                            var description = data.items[i]["snippet"]["description"];
                            var new_item = original_item.clone();
                            new_item.removeAttr("data-youtubeapikey").removeAttr("data-youtubeplaylistid").removeAttr("data-youtubeplaylistmaxresults");
                            var item_html = new_item.html().replace(/data-srcyt=/g, "src=").replace(/__IMAGE__/g, image).replace(/__THUMBNAIL__/g, thumbnail).replace(/__VIDEO__/g, video).replace(/__TITLE__/g, title).replace(/__DESCRIPTION__/g, description);
                            new_item.html(item_html);
                            if (instance.options.lightboxobject && new_item.find("a").hasClass("wondercarousellightbox"))
                                new_item.find("a").each(function() {
                                    instance.options.lightboxobject.push(this);
                                    $(this).off("click").click(instance.options.lightboxobject.clickHandler)
                                });
                            $("li.amazingcarousel-item", instance.container).eq(insert_index).after(new_item);
                            insert_index++
                        }
                    }
                    if (data && data.nextPageToken && youtubeplaylistmaxresults && youtubeplaylistmaxresults > 50) {
                        all_done = false;
                        instance.getYouTubePlaylist(youtubeapikey, youtubeplaylistid, youtubeplaylistmaxresults - 50, index, insert_index, onsuccess, instance, data.nextPageToken)
                    }
                }).always(function() {
                    if (all_done) {
                        $("li.amazingcarousel-item", instance.container).eq(index).remove();
                        onsuccess(instance)
                    }
                })
            },

我期望显示我所有 channel 的播放列表,总共可能超过50个视频。

youtube是否有任何限制才能获得视频过多的结果?我还尝试通过插件增加视频响应总数,但未进行任何更改。

最佳答案

我有同样的问题,可能是由于Youtube V3 Api的配额使用引起的。

这是链接:https://developers.google.com/youtube/v3/getting-started#quota

关于javascript - YouTube上的Wonder Plugin Carousel多个播放列表请求崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55885663/

相关文章:

html - 具有基本 css 类的多种变体(即 h1、h2、p)

javascript - Youtube JavaScript API分页参数

url - 如何获取 YouTube FLV 网址?

javascript - 添加画廊图像的链接

c# - 如何将元素的背景颜色与 2 个半透明元素背景颜色相匹配

WordPress - 按帖子 ID 删除所有标签

Wordpress cron – 事件添加到队列但不触发

javascript - YouTube 嵌入视频播放器的外部播放按钮

javascript - 有什么方法可以在 JavaScript 中卡住 document.body.innerHTML 吗?

javascript - 在此 JS slider 中的图像下方添加文本