在 Flickr 中, 有許多照片(廢話), 而這些照片, 也有放在相簿集(set)裡, 如何把相簿集裡的相片的 url 取出來呢?
首先我們先來看一個工具, 叫做 YQL (Yahoo! Query Language): http://en.wikipedia.org/wiki/Yahoo!_query_language , 這個語言是望文生義, 就是用來進行查詢 Yahoo! 服務的語言, 而我們需要的功能, 剛好裡面有提供, 所以我們就利用這個查詢語言來進行查詢, 先來看看語法, 到這個 YQL Console 來看: http://developer.yahoo.com/yql/console/
來到這裡, 真是開發者的天堂, Yahoo! 的服務查詢, 這裡幾乎都有提供, 而今天我們要查找的正是這個 table: flickr.photosets.photos, 假設今天要查的 photo set 是這個 url: http://www.flickr.com/photos/okilyt/sets/72157600079438372/, 則 set_id 就是 72157600079438372, 於是輸入如下的語法:
select * from flickr.photosets.photos where photoset_id = 72157600079438372
就會生出如下的 xml:
<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
yahoo:count="10" yahoo:created="2010-08-06T11:19:06Z" yahoo:lang="en-US">
<diagnostics>
<publiclyCallable>true</publiclyCallable>
<url execution-time="141"><![CDATA[http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&photoset_id=72157600079438372&page=1&per_page=10]]></url>
<user-time>142</user-time>
<service-time>141</service-time>
<build-version>8771</build-version>
</diagnostics>
<results>
<photo farm="1" id="460118008" isprimary="1" secret="4d856aaa72"
server="239" title="DSC_3989"/>
<photo farm="1" id="460125135" isprimary="0" secret="15a3d24484"
server="208" title="DSC_3987"/>
<photo farm="1" id="460117456" isprimary="0" secret="76bdfd928c"
server="191" title="DSC_3986"/>
<photo farm="1" id="460117112" isprimary="0" secret="515535f02e"
server="253" title="DSC_3983"/>
<photo farm="1" id="460116928" isprimary="0" secret="68286fc46a"
server="200" title="DSC_3981"/>
<photo farm="1" id="460116620" isprimary="0" secret="4245ef4c5a"
server="183" title="DSC_3980"/>
<photo farm="1" id="460123637" isprimary="0" secret="68351dfe14"
server="236" title="DSC_3963"/>
<photo farm="1" id="460123365" isprimary="0" secret="80edceee74"
server="243" title="DSC_3961"/>
<photo farm="1" id="460115832" isprimary="0" secret="80b8d482bf"
server="246" title="DSC_3958"/>
<photo farm="1" id="460122569" isprimary="0" secret="2ee7c9e00e"
server="242" title="DSC_3954"/>
</results>
</query>
真是方便耶, 不過筆數好像只有十筆, 全部應該要有 18筆才對, 所以查了一下資料, http://developer.yahoo.com/yql/guide/paging.html , 發現可以在 table 後方加上 (0) 來進行全部查出, 於是調整一下語法如下:
select * from flickr.photosets.photos(0) where photoset_id = 72157600079438372
就可以方便地把整個 photo set 中的相片查找出來了, 而相片的 url 就可以利用這些 xml 來組合出來, 語法如下:
http://farm[farm].flickr.com/[server]/[id]_[secret].jpg
很容易吧! 這樣一來, 要取出某相簿的照片 url 就方便多了, 寫成小工具, 放在這裡: http://sample.diary.tw/flickrset/
參考資料: http://www.nakedtechnologist.com/?p=476