2

我正在尝试使用 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 调用来循环浏览提要项目。但是,没有返回任何内容。HTML 在那里,但没有插入提要元素。

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

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

我从公共照片提要中取回照片列表,但未考虑标签。

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

4

5 回答 5

3

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

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

您遇到的问题不是由问号引起的,而是由您的 url 中存在 '=' 和 '&' 字符引起的。

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

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

于 2010-08-19T19:55:21.360 回答
2

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

在这里找到了答案。

在 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;
}

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

于 2010-03-07T21:05:41.183 回答
1

将它添加"&="set_query函数中就像一个魅力!(感谢帕特里斯)

我对设置为 null 感到不舒服,因为这个包的安全部分超出了我的想象。几个小时都在敲我的脑袋,试图从我的 phpBB 论坛获取提要以链接到姊妹站点。

get_links是最后一块拼图。为我工作。

于 2010-11-10T15:17:55.163 回答
0

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

我想对其进行一些润色,并准备代码供他人使用,而不仅仅是我自己的,但它就是这样

于 2010-03-31T16:40:52.053 回答
0

我遇到了同样的问题,解决方案是确保您获得的是集团图像池的 RSS 提要,而不是集团讨论的 RSS 提要,然后缩略图就可以随时获得。

于 2012-03-05T03:54:49.623 回答