SimplePie无法解析flickr feed

时间:2010-03-06 03:54:24

标签: rss parsing feed flickr simplepie

我正在尝试使用SimplePie来提取组池flickr提要:

$feed = new SimplePie();
$feed->set_feed_url('http://api.flickr.com/services/feeds/groups_pool.gne?id=25938750@N00&lang=en-us&format=rss_200');
$feed->init();
$feed->handle_content_type(); 

然后我使用典型的SimplePie php调用来遍历feed项。但是,没有返回任何内容。 HTML就在那里,但未插入Feed元素。

当我尝试使用标签的flickr提要时,例如:

$feed->set_feed_url('http://api.flickr.com/services/feeds/photos_public.gne?tags=architecture,building&lang=en-us&format=rss_200');

我从公共照片Feed中找回了一系列照片,但不考虑这些标记。

有什么想法吗?我唯一能想到的是我需要一个API密钥,但flickr网站上没有任何内容表明Feed调用需要密钥。另外,我可以在浏览器中打开这两种类型的Feed并获取我正在寻找的Feed。

5 个答案:

答案 0 :(得分:3)

'replace_invalid_with_pct_encoding'的目的是转义查询字符串中的所有无效字符。

所以只是删除它可能不是最安全的选择。从那时起,通过rss条目进入的链接中的无效字符也不再被转义。这可能不是你想要的。

您遇到的问题不是由问号引起的,而是由“=”和“&”的存在引起的您网址中的字符。

我遇到了同样的问题,并将这两个字符添加为“有效”字符,如下所示:

$ this-> query = $ this-> replace_invalid_with_pct_encoding($ query, '!ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -._〜$ \'()* +,;?:@ / =安培;');

答案 1 :(得分:2)

我能够找到答案 - 感谢ceejayoz帮助我找出要搜索的内容。

找到答案here

在simplepie.inc中,在第12146行附近,您应该看到以下函数:

function set_query($query)
{
if ($query === null || $query === '')
{
$this->query = null;
}
else
{
$this->query = $this->replace_invalid_with_pct_encoding($query,
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$\'()*+,;:@/?');
}
$this->valid[__FUNCTION__] = true;
return true;
}

将其更改为:

function set_query($query)
{
if ($query === null || $query === '')
{
$this->query = null;
}
else
{
$this->query = $query;
}
$this->valid[__FUNCTION__] = true;
return true;
}

我不确定这会如何影响代码中的其他内容,但它似乎可以用来提取查询的项目。

答案 2 :(得分:1)

"&="添加到set_query功能就像一个魅力! (感谢Patrice)

我觉得设置为null很不舒服,因为这个软件包的安全部分远远超出我的想象。我敲了几个小时,试图从我的phpBB论坛获取信息链接到姐妹网站。

get_links是最后一块拼图。适合我。

答案 3 :(得分:0)

这对于我正在编写的Flickr / ZenPhoto / Picasa Web RSS脚本很有用,它可以从Feed创建小方形拇指。

我想稍微改进一下,准备代码供其他人使用而不仅仅是我自己的,但是here它就是现在的样子。

答案 4 :(得分:0)

我遇到了同样的问题,解决方法是确保您获取群组图像池的RSS源,而不是群组讨论的RSS源,然后缩略图随时可用。