Итак, когда я пытался создать встроенный плейлист на своем веб-сайте и заставить его перетасовывать, я обнаружил, что в API YouTube есть ошибка, которая не была исправлена и не позволяет никому использовать функцию перемешивания.
Поэтому я пытаюсь создать обходной путь. Я подумал, что могу сделать случайным числом замену порядкового номера плейлиста. Это сработало нормально, и я позволил мне перетасовать список воспроизведения, если я вручную ввел Макс и Мин для генератора случайных чисел. см. здесь: http://jsfiddle.net/9kFyx/33/
Хотя я очень доволен этим, я бы предпочел иметь более динамичный код, который просто получал бы количество элементов в массиве списка воспроизведения и использовал их в качестве максимального числа для случайного фактора. Звучит достаточно легко? Я посмотрел ссылку на API для этого здесь: https://developers.google.com/youtube/js_api_reference#Retrieving_playlist_information
и нашел player.getPlaylist()
Я использовал array.length;
, чтобы получить элементы числового массива и ввести их в генератор случайных чисел. Но это не работает! Я не уверен, почему. Когда я попытался записать массив, он вернулся как неопределенный.
Вы можете помочь?
<div id="player"></div>
<div id="output" style="width:300px; height:20px; background:white; color:black;">maxNumber</div>
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '411',
width: '548',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
var playlistArray;
var playListArrayLength;
var maxNumber;
function onPlayerReady(event) {
player.loadPlaylist({
'listType': 'playlist',
'list': 'PLhaqVbVcY6UPkbjbeJM2CwRedCrr0rPJr'
});
playlistArray = player.getPlaylist();
playListArrayLength = playlistArray.length;
maxNumber = playListArrayLength;
document.getElementById('output').innerHTML = playListArrayLength;
next();
}
function next() {
player.loadPlaylist({
'listType': 'playlist',
'list': 'PLhaqVbVcY6UPkbjbeJM2CwRedCrr0rPJr',
'index': newRandomNumber(),
'startSeconds': '0',
'suggestedQuality': 'small'
});
player.setShuffle({
'shufflePlaylist': 'true'
});
}
var oldNumber = 0;
var NewNumber = 0;
function newRandomNumber() {
oldNumber = NewNumber;
NewNumber = Math.floor(Math.random() * maxNumber);
if (NewNumber == oldNumber) {
newRandomNumber();
} else {
return NewNumber;
}
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED) {
next();
}
}
</script>