Получить эскиз миниатюры YouTube

Итак, я пытаюсь получить миниатюру видео на YouTube в простом круге, моя проблема в том, что функция get_thumbnail(), похоже, не тянет ее, потому что функция get_enclosure, похоже, не возвращает никаких значений.

Есть ли что-то, что нужно сделать, чтобы инициализировать простой объект, чтобы правильно получить корпус?


person Yout    schedule 09.03.2013    source источник


Ответы (1)


Не все каналы поддерживают/используют вложения RSS, это не часть стандарта RSS, по крайней мере, не исходный стандарт RSS. Это часть так называемого MediaRSS. Тем не менее это можно сделать. Еще одна проблема заключается в том, что Google меняет GData API, что фактически делает RSS-каналы для YouTube. , вы можете вместо этого использовать этот API, который создает фиды Atom. Вы, вероятно, хотите посмотреть на некоторые документы.

Вы должны использовать дополнительный код помимо SimplePie, чтобы создать миниатюру для некоторых каналов, я использовал что-то под названием simple_html_dom и другой скрипт, названный thumbnail.php, чтобы сделать миниатюры по мере необходимости. Ваша жизнь будет лучше, если у вас есть канал, такой как Flickr, который поддерживает MediaRSS, но если вам нужно принудительно создать миниатюру, я использовал этот код:

if ($enclosure = $item->get_enclosure())
{
// Check to see if we have a thumbnail.  We need it because this is going to display an image.
    if ($thumb = $enclosure->get_thumbnail())
{
    // Add each item: item title, linked back to the original posting, with a tooltip containing the description.
    $html .= '<li class="' . $item_classname . '">';
    $html .= '<a href="' . $item->get_permalink() . '" title="' . $title_attr . '">'; 
    $html .= '<img src="' . $thumb . '" alt="' . $item->get_title() . '" border="0" />';
    $html .= '</a>';
    $html .= '</li>' . "\n";
}
}
else
{
// There are feeds that don't use enclosures that none the less are desireable to dsipaly wide as they contain primarily images
// Dakka Dakka and some YouTube feeds fall into this category, not sure what is up with Chest of Colors...
$htmlDOM = new simple_html_dom();
$htmlDOM->load($item->get_content());

$image = $htmlDOM->find('img', 0);
$link = $htmlDOM->find('a', 0); 

// Add each item: item title, linked back to the original posting, with a tooltip containing the description.
$html .= '<li class="' . $item_classname . '">';
$html .= '<a href="' . $link->href . '" title="' . $title_attr . '">'; 
// Sometimes I'm not getting thumbnails, so I'm going to try to make them on the fly using this tutorial:
// http://www.webgeekly.com/tutorials/php/how-to-create-an-image-thumbnail-on-the-fly-using-php/
$html .= '<img src="thumbnail.php?file=' . $image->src . '&maxw=100&maxh=150" alt="' . $item->get_title() . '" border="0" />';
$html .= '</a>';
$html .= '</li>' . "\n";
}

Форматирование кажется немного странным, но оно взято прямо из моего кода, который выполняется здесь. Вам по-прежнему лучше не делать много миниатюр из фида, который их не поддерживает.

person Muskie    schedule 12.03.2013
comment
Во всех своих ответах вы не включили одну из ключевых частей информации, которая могла бы помочь пользователям понять. Вот как получить библиотеку Simple HTML Dom: github.com/simplehtmldom/simplehtmldom Ваш пример также не работает в текущей версии. new HtmlDocument() следует использовать вместо new simple_html_dom() - person Uriahs Victor; 23.11.2020
comment
Вы правы, мой почти 8-летний ответ и код больше не работают. Google и многие другие изменили свои API и кодовые базы. Может быть, я соберусь обновить его, но это выглядит все менее и менее вероятным, был занят. - person Muskie; 26.11.2020