Flickr APIのREST APIを、XPath4AS2で読んで写真を表示するのを作ってみた。
前のXPathTesterを改造して、50行ぐらいで完成した。
タグを適当に入れて、Loadボタンを押すと動く
SourceCode(Flash8), Archive
(XPath4AS2にクラスパスが通ってないとコンパイルできません。また、1フレーム目4行目のAPI Keyは各自で取得してください)
■API Keyを取得する
Flickr ServicesからAPI-Keyを取得する。名前とメールアドレスが必要。
今回はKeyだけで良いが、アップロードする時などはSecretとAuth_tokenも必要になる→ s.h.log: Flickr::Uploadで写真をアップロード
■コード
Flickrの画像のアドレスは
http://static.flickr.com/サーバー名/id_secret.jpg
になっている。XMLをパースして、それぞれの値を結合して画像のURLを作る。
Loaderコンポーネントを1つステージに配置して、loader.contentPath にURLを指定すると自動で写真が読み込まれて表示される。
API Explorerで同じXMLが読めるので写真のURLと一緒に確認すると、わかると思う
import com.xfactorstudio.xml.xpath.*;
// config
api_key = ”your own key”;// initalize
var xml:XML = new XML();
xml.ignoreWhite = false;
selectButton.enabled = false;
var xmlUrlTmp = ”http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=”+api_key+”&tags=”;
var num:Number = 1; // 写真の初期番号
xml.onLoad = function(success:Boolean) {
if(success){
trace(”XML load success!!”);
trace(xml);
loadPhoto(num); // 写真を読み込む
}
else{
trace(”XML load error!!”);
}
trace(”input XPath”);
}/* 写真を読む */
function loadPhoto(num:Number){
var photoUrl = ”http://static.flickr.com/”+
XPath.selectNodes(xml, ”rsp/photos/photo["+num+"]/@server”) + ”/” +
XPath.selectNodes(xml, ”rsp/photos/photo["+num+"]/@id”) + ”_” +
XPath.selectNodes(xml, ”rsp/photos/photo["+num+"]/@secret”) + ”.jpg”;
trace(photoUrl);
imageLabel.text = photoUrl
loader.contentPath = photoUrl;
}loadButton.onRelease = function(){
loader.contentPath = ”";
trace(”loading…”);
num = 1; // 初期化
var requestUrl = xmlUrlTmp+tagLabel.text;
trace(requestUrl);
xml.load(requestUrl);
}tR.onRelease = function(){
if(num < 50){
loadPhoto(++num);
}
}tL.onRelease = function(){
if(num > 1){
loadPhoto(–num);
}
}
タグ: Tech