我正在尝试使用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。
答案 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源,然后缩略图随时可用。