我正在使用YQL来获取Feed列表,如下所示:
SELECT title, link, pubDate FROM rss
WHERE url IN ('.implode("','", array_values($urls)).')
Run Code Online (Sandbox Code Playgroud)
$urls 包含Feed网址:
$urls = array(
'delicious' => 'http://feeds.delicious.com/v2/rss/foo',
'delicious' => 'http://feeds.delicious.com/v2/rss/anotherfoo',
'lastfm' => 'http://ws.audioscrobbler.com/1.0/user/foo/recenttracks.rss',
...
);
Run Code Online (Sandbox Code Playgroud)
我得到一个带有title/link/pubdate字段的项目数组.除了"链接"字段,我没有得到任何可能告诉我项目来自何处的信息.
如何包含array_keys($urls)与URL(值)对应的附加字段?基本上,我需要告诉我是从哪个网站某个字段的项目来自像delicious,lastfm等等.
对于lastfm,我可以检查strpos是否存在"last.fm"字符串$item['url'],但有美味的链接,这是不可能的:(
我得到了一系列带有标题/链接/发布日期字段的项目。除了“链接”字段之外,我没有得到任何可以告诉我该项目来自哪里的信息。
要获取每个项目的来源信息,请添加字段source:
SELECT title, link, pubDate, source FROM rss
...
Run Code Online (Sandbox Code Playgroud)
然后,结果将source在每个条目中包含一个元素,该元素具有一个url属性,其中包含从中获取项目的 url:
<results>
<item>
<title>Git Immersion - Brought to you by EdgeCase</title>
<pubDate>Wed, 21 Dec 2011 22:15:44 +0000</pubDate>
<link>http://gitimmersion.com/</link>
<source url="http://feeds.delicious.com/v2/rss/geek">geek's links</source>
</item>
Run Code Online (Sandbox Code Playgroud)
YQL演示。
您可以使用 查找所有字段*,这就是我发现该source字段的方式:
SELECT * FROM rss
WHERE url IN ('http://feeds.delicious.com/v2/rss/geek', 'http://feeds.delicious.com/v2/rss/foo')
Run Code Online (Sandbox Code Playgroud)
我想这应该可以回答你的问题。为了减少传输的数据量,您也可以只选择源的 url 属性,如下所示:
SELECT title, link, pubDate, source.url FROM rss
...
Run Code Online (Sandbox Code Playgroud)
另请参阅使用 YQL 非常非常快地加载和转换 RSS 提要以及如何使用 YQL 合并按 pubDate 排序的 2 个 RSS 提要?。
以下是对 YQL 语法的较旧评论:
请注意,这implode("','", array_values($urls))将使您的 YQL 语法无效:
... IN( urlA','urlB','urlC )
您看到开头和结尾缺少单引号了吗?添加它们:
"'".implode("','", $urls)."'"
Run Code Online (Sandbox Code Playgroud)
你应该没问题。至少你应该少一个错误。
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |