Youtube API;洗牌播放列表?

Youtube API;洗牌播放列表?,youtube,youtube-api,shuffle,Youtube,Youtube Api,Shuffle,因此,有一段时间,我正在尝试使用youtube api制作一个合适的随机播放脚本,以便播放我的youtube播放列表。 我已经找到了很多例子,但似乎没有一个效果很好。有些人洗牌列表,但不是第一首歌曲正在播放,有些人做的恰恰相反 我想要的是洗牌完整的播放列表,然后开始播放。因此,第一首播放的歌曲应该是随机的,下一首播放的歌曲也应该是随机/随机播放的 我找到下面的脚本来洗牌播放列表。但是,播放的第一首歌不会被洗牌。有人能帮我解决这个问题吗? 万分感谢 <html> <body&

因此,有一段时间,我正在尝试使用youtube api制作一个合适的随机播放脚本,以便播放我的youtube播放列表。 我已经找到了很多例子,但似乎没有一个效果很好。有些人洗牌列表,但不是第一首歌曲正在播放,有些人做的恰恰相反

我想要的是洗牌完整的播放列表,然后开始播放。因此,第一首播放的歌曲应该是随机的,下一首播放的歌曲也应该是随机/随机播放的

我找到下面的脚本来洗牌播放列表。但是,播放的第一首歌不会被洗牌。有人能帮我解决这个问题吗? 万分感谢

<html>
  <body>
    <div id="player"></div>
    <script>
        // 2. This code loads the IFrame Player API code asynchronously.
        var tag = document.createElement('script');

        tag.src = "https://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName('script')[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        // 3. This function creates an <iframe> (and YouTube player)
        //    after the API code downloads.
        function onYouTubeIframeAPIReady() {
            var player = new YT.Player("player", {
                height: '390',
                width: '640',
                events: {
                    'onReady': function (event) {
                        event.target.cuePlaylist({list: "PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT"});
                        event.target.playVideo();
                        setTimeout(function() {
                            event.target.setShuffle({'shufflePlaylist' : true});
                        }, 1000);
                    }
                }
            });
        }
    </script>
  </body>
</html>

// 2. 此代码异步加载IFrame播放器API代码。
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
// 3. 此函数用于创建(和YouTube播放器)
//API代码下载后。
函数onyoutubeiframeapiredy(){
var player=新的YT.player(“player”{
高度:“390”,
宽度:“640”,
活动:{
“onReady”:函数(事件){
event.target.cuePlaylist({list:“PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT”});
event.target.playVideo();
setTimeout(函数(){
event.target.setShuffle({'shufflePlaylist':true});
}, 1000);
}
}
});
}
这对我很有效

<html>
  <body>
    <div id="player"></div>
    <script>
        // 2. This code loads the IFrame Player API code asynchronously.
        var tag = document.createElement('script');

        tag.src = "https://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName('script')[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        // 3. This function creates an <iframe> (and YouTube player)
        //    after the API code downloads.
        function onYouTubeIframeAPIReady() {
            var numPl = Math.floor((Math.random() * 50) + 1);
            var player = new YT.Player("player", {
                height: '390',
                width: '640',
                playerVars: {
                    listType:'playlist',
                    list:'PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT',
                    index: numPl,
                    autoplay: 1,
    },
                events: {
                    'onReady': function (event) {
                        //event.target.cuePlaylist({list: "PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT"});
                        //event.target.playVideo();
                        setTimeout(function() {
                            event.target.setShuffle({'shufflePlaylist' : true});
                        }, 1000);
                    }
                }
            });
        }
    </script>
  </body>
</html>

// 2. 此代码异步加载IFrame播放器API代码。
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
// 3. 此函数用于创建(和YouTube播放器)
//API代码下载后。
函数onyoutubeiframeapiredy(){
var numPl=Math.floor((Math.random()*50)+1);
var player=新的YT.player(“player”{
高度:“390”,
宽度:“640”,
playerVars:{
列表类型:'playlist',
列表:'PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT',
索引:numPl,
自动播放:1,
},
活动:{
“onReady”:函数(事件){
//event.target.cuePlaylist({list:“PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT”});
//event.target.playVideo();
setTimeout(函数(){
event.target.setShuffle({'shufflePlaylist':true});
}, 1000);
}
}
});
}
这对我很有效

<html>
  <body>
    <div id="player"></div>
    <script>
        // 2. This code loads the IFrame Player API code asynchronously.
        var tag = document.createElement('script');

        tag.src = "https://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName('script')[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        // 3. This function creates an <iframe> (and YouTube player)
        //    after the API code downloads.
        function onYouTubeIframeAPIReady() {
            var numPl = Math.floor((Math.random() * 50) + 1);
            var player = new YT.Player("player", {
                height: '390',
                width: '640',
                playerVars: {
                    listType:'playlist',
                    list:'PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT',
                    index: numPl,
                    autoplay: 1,
    },
                events: {
                    'onReady': function (event) {
                        //event.target.cuePlaylist({list: "PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT"});
                        //event.target.playVideo();
                        setTimeout(function() {
                            event.target.setShuffle({'shufflePlaylist' : true});
                        }, 1000);
                    }
                }
            });
        }
    </script>
  </body>
</html>

// 2. 此代码异步加载IFrame播放器API代码。
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
// 3. 此函数用于创建(和YouTube播放器)
//API代码下载后。
函数onyoutubeiframeapiredy(){
var numPl=Math.floor((Math.random()*50)+1);
var player=新的YT.player(“player”{
高度:“390”,
宽度:“640”,
playerVars:{
列表类型:'playlist',
列表:'PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT',
索引:numPl,
自动播放:1,
},
活动:{
“onReady”:函数(事件){
//event.target.cuePlaylist({list:“PLFgquLnL59anYA8FwzqNFMp3KMcbKwMaT”});
//event.target.playVideo();
setTimeout(函数(){
event.target.setShuffle({'shufflePlaylist':true});
}, 1000);
}
}
});
}

这使用youtube api工作。youtube用户创建了播放列表。每次刷新页面时,将播放列表洗牌为新顺序

  • 加载YT播放器API
  • 加载YT播放列表用户播放列表id“**.youtube.com/playlist?list=PLo16**”
  • 要洗牌播放列表,请使用>player.setShuffle(true)
  • 要在无序播放列表中的视频1处启动YT播放器,请使用>player.playVideoAt(0)
  • 工作演示

    代码

    
    // 2. 此代码异步加载IFrame播放器API代码。
    var tag=document.createElement('script');
    tag.src=”https://www.youtube.com/iframe_api";
    var firstScriptTag=document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
    // 3. 此函数用于创建(和YouTube播放器)
    //API代码下载后。
    var播放器;
    函数onyoutubeiframeapiredy(){
    player=新的YT.player('player'{
    playerVars:{
    自动播放:0,
    循环:1,
    控制:1,
    展示信息:1,
    框架边界:1,
    '列表类型':'播放列表',
    '列表':“PLo16_DLriHp4A8BvkJFZfO_4kdv7yggy”//此处是您的YouTube播放列表id
    },
    活动:{
    “onReady”:onPlayerReady,
    “onStateChange”:onPlayerStateChange
    }
    });
    }
    // 4. 当视频播放器准备就绪时,API将调用此函数。
    函数onPlayerReady(事件){
    //第一个洗牌播放列表
    player.setShuffle(真);
    //Onload和on refresh会洗牌用户的YT播放列表,但始终会开始播放
    //原始列表中新索引p处的第一个视频