Я не уверен, куда мне звонить, чтобы получить миниатюру.
Прямо сейчас я назвал это внутри:
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
timestamp_callback();
}
switch(event.data) {
case YT.PlayerState.PLAYING:
// get video title
// get video date
// get video thumbnail
"играет" часть, так как я также проанализировал заголовок видео и другую информацию там, и это работает, оно также меняется при смене видео, но миниатюры меняются только для некоторых видео.
В любом случае, это функция, которую я использую внутри вышеупомянутого onPlayerStateChange (событие) :
// get video thumbnail
$.get("https://www.googleapis.com/youtube/v3/videos?part=snippet&id=" + curvideID + "&key=" + ytApiKey, function(data) {
var snip = data.items[0].snippet.thumbnails;
quality = snip.maxres.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
quality = snip.standard.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
quality = snip.high.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
quality = snip.medium.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
quality = snip.default.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
bgThumb.style.setProperty("display", "none");
}
}
}
}
}
});
пожалуйста, не возражайте против сомнительной последовательности if, я уверен, что есть более короткие способы сделать это, но именно так я и решил проверить максимальное разрешение, доступное для воспроизведения видео (если только это не является причиной моего отказ).
ОБНОВЛЕНИЕ: Я обнаружил, что вызов функции находится в правильном месте, что-то не так с цепочкой if, на самом деле он только пробует первый, если видео не соответствует в этом разрешении цепочка «если» не идет вниз, поэтому просто ничего не показывает.