时间:2010-07-25 19:22:05

标签: php yql flickr

1 个答案:

答案 0 :(得分:0)

还没有用于针对Flickr API调用flickr.photosets.getList方法的内置表(这是您想要的)。有两种方法可以获取您正在寻找的数据:使用xml YQL表查询Flickr,或创建自己的表,这可以抽象出访问Flickr API的详细信息。

1。使用XML表

查询Flickr的API

这种方法涉及了解有关Flickr REST API的一些细节,如何构造URL以对其进行查询,以及获取用于对请求进行签名的Flickr API密钥。这些是YQL经常抽象出来的细节,因此您不需要关心它们,但稍后会更多关注它们。

此处的方法是使用XML表,当使用特制URL查询并获得我们想要的结果路径时,将返回所需的照片集。下面,我们将使用我的API密钥进行查询(以节省您自己的密钥,虽然这是一个好主意),并要求在雅虎工作的developer evangelist的照片集(我必须选择某人,他的Flickr是第一个浮现在脑海中的人。)

select * from xml
where url="http://api.flickr.com/services/rest/?method=flickr.photosets.getList&api_key=9aae7ac1770fdd8027b7aec220ae6400&user_id=11414938@N00"
and itemPath="rsp.photosets.photoset"

Try this query in the YQL console)功能

从那里返回的XML结构(以及通常的YQL内容)看起来像下面的片段(除非你返回JSON,它将包含不是XML格式的相同信息)。

    <photoset farm="5" id="72157624272957243" photos="16"
        primary="4751612752" secret="b799dcf7d6" server="4139" videos="0">
        <title>Mozilla Add-Ons</title>
        <description/>
    </photoset>
    <photoset farm="5" id="72157624375645496" photos="83"
        primary="4741533835" secret="f6e66e4aef" server="4122" videos="0">
        <title>Carter Steam Fair in Clissold Park</title>
        <description/>
    </photoset>
    <photoset farm="5" id="72157624250084729" photos="27"
        primary="4741892180" secret="c7001a3307" server="4141" videos="0">
        <title>Stokey</title>
        <description>Stuff happening in Stoke Newington in London</description>
    </photoset>

然后,无论你想要什么,你都可以随意使用这个结果。由于这个问题更多的是要查询来自Flickr的特定信息,而不是如何使用YQL,我将忽略在您选择的编程语言中使用它并使用结果的详细信息。如果你不知道那种事情,请开始一个新问题。

早些时候,我说过另一种方式。

2。制作自定义的flickr.photosets.getList表

构建要查询的定制表的详细信息将超出合理答案的范围:阅读基础知识和详细信息,请转到{QQL上的这个主题的YQL文档。 {3}}

表本身是非常基本的,除了上面的原始查询之外不会做更多的事情;好处只是隐藏了细节。所以,我先显示表格,然后再使用它。

该表是一个XML文档,描述了如何与Flickr的flickr.photosets.getList方法进行对话

<?xml version="1.0" encoding="UTF-8"?>
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
  <meta>
    <sampleQuery>select * from {table} where user_id="11414938@N00"</sampleQuery>
    <description>Retrieve the photosets belonging to the specified user.</description>
    <documentationURL>http://www.flickr.com/services/api/flickr.photosets.getList.html</documentationURL>
    <author>Peter Cowburn</author>
  </meta>
  <bindings>
   <select itemPath="rsp.photosets.photoset" produces="XML">
      <urls>
        <url env="all">http://api.flickr.com/services/rest/?method=flickr.photosets.getList</url>
      </urls>
      <inputs>
        <key id="user_id" type="xs:string" paramType="query" />
        <key id="api_key" type="xs:string" const="true" private="true" paramType="query" default="9aae7ac1770fdd8027b7aec220ae6400"/>
      </inputs>
    </select>
  </bindings>
</table>

要使用此自定义表,您需要在YQL可以看到它的位置在线托管它。我已将其上传到Yahoo!的存储空间,这就是为什么URL(store://…)可能看起来有些奇怪。

现在你正在等待的东西:对你有用的东西!

如何使用我们的自定义表

use "store://github.com/flickr/photosets/getList" as photosets;
select * from photosets where user_id="11414938@N00"

http://developer.yahoo.com/yql/guide/yql-creating-opentables-chapter.html)功能

结论

以上(只是最后一个查询,因为我已经为你制作了表格)是获取Flickr用户照片集列表所需的全部内容。简单地:

use "store://github.com/flickr/photosets/getList" as photosets;
select * from photosets where user_id="11414938@N00"

最后,要获取属于某个集合的照片,已经有一个名为flickr.photosets.photos的内置表,因此您甚至不需要use自定义表格:

select * from flickr.photosets.photos where photoset_id='72157624272957243'