php - YouTube XML Feed 错误

标签 php xml api rss youtube

我在一个网站上有一个页面,它从 YouTube 中提取我最喜欢的提要并将它们嵌入到网站中。

问题是它在 80% 的时间内正常工作,但在另外 20% 的时间内我在页面上遇到错误 - 代码中没有任何更改导致此问题,所以我想知道可能是什么原因造成的这个,或者如果有更好的方法来做我正在做的事情......

我在检索 XML 提要时遇到的错误是 403 Forbidden...这是它的样子(注意:行号不会完全匹配,因为我已经简化了下面的代码示例。

有问题的 XML 提要在这里: https://gdata.youtube.com/feeds/api/users/umarchives/favorites

Warning: simplexml_load_file(https://gdata.youtube.com/feeds/api/users/umarchives/favorites) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /mnt/stor3-wc2-dfw1/web/content/videos.php on line 42

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "https://gdata.youtube.com/feeds/api/users/umarchives/favorites" in /mnt/stor3-wc2-dfw1/web/content/videos.php on line 42

Warning: Invalid argument supplied for foreach() in /mnt/stor3-wc2-dfw1/web/content/videos.php on line 47

这是我使用的代码:

<?php
    // set feed URL
    $YouTubeUsername = "umarchives";

    $feedURL = "https://gdata.youtube.com/feeds/api/users/".$YouTubeUsername."/favorites";

    // read feed into SimpleXML object
    $sxml = simplexml_load_file($feedURL);

    // iterate over entries in feed
    foreach ($sxml->entry as $entry) {  

    // get nodes in media: namespace for media information
    $media = $entry->children('http://search.yahoo.com/mrss/');
    $attrs = $media->group->content->attributes();

    $videoURL = $attrs['url'];
    $videoURL = preg_replace('/\?.*/', '', $videoURL);
    $videoURL = str_replace("/v/","/embed/",$videoURL);

    $videoTitle = $media->group->title;

    echo "<iframe class='youtube-player' width='300' height='225' src='$videoURL'></iframe>\n";
    echo "<br>\n";

    }

    ?>

最佳答案

您应该验证 $sxml = simplexml_load_file($feedURL); per the Google error validation docs 的结果.然后您可以打印出与 403 代码一起出现的实际消息,或者可能决定重试该请求。如果它是随机发生的,我猜是配额限制问题,但实际的错误信息可能会准确告诉您您想知道的内容。

关于php - YouTube XML Feed 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7093943/

相关文章:

php - Android 无法将图像上传到服务器。图片类型错误

php - 删除数组中的第一级标识符

php - 通过PHP获取数据库的列名

php - 选择一个月内的所有日期

xml - ASP.NET 网络 API : XMLFormatter thinks he can write Json-objects

Android - 使用 DOM 解析器的 KML 解析器

python - Python的xlrd如何防止 "billion laughs"DoS攻击?

c++ - 设置滚动条有问题

android - 为什么在HttpResponse response = client.execute(request)行之后进一步执行停止?

api - WooCommerce REST API 自定义字段