获取youtube thumbnail simplepie

时间:2013-03-09 03:20:56

标签: youtube simplepie

所以我试图用简单的馅饼获取youtube视频的缩略图,我的问题是get_thumbnail()函数似乎没有拉它,因为get_enclosure函数似乎没有返回值。

是否必须要做一些事情才能初始化simplepie对象以正确获取机箱?

1 个答案:

答案 0 :(得分:1)

并非所有Feed都支持/使用RSS附件,它不是RSS标准的一部分,至少不是原始的RSS标准。它是MediaRSS的一部分。尽管如此,这可以做到。另一个问题是谷歌一直在改变GData API,这实际上是为YouTube提供的RSS源,或者它确实如此,您可能希望使用this API而不是生成Atom源。您可能想查看一些文档。

你必须使用SimplePie以外的其他代码为某些Feed创建缩略图,我使用了一个名为simple_html_dom的东西和另一个名为thumbnail.php的脚本来根据需要制作缩略图。如果您有像Flickr这样的Feed支持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";
}

格式化看起来有点奇怪,但是我的代码正在运行here。你最好不要从不支持它们的Feed中制作大量缩略图。