นำภาพจาก Flickr มาแสดงด้วย Flickr_API (1)

หลังจากไม่มีเครื่องส่วนตัวใช้งาน ก็ไม่มีงานทำ จึงหาอะไรทำเล่นๆ แก้เบื่อไปพลางๆ ผมก็อยากลองดึงภาพจาก Flickr โดยใช้ API ที่มีให้ หลังจากเข้าไปดูที่ Flickr Services แล้วจะเห็นว่ามีการสนับสนุนหลายภาษา เช่น ActionScript, Delphi, Java, Objective-C, Perl, PHP, Python, Ruby เป็นต้น ซึ่งผมเลือกใช้ภาษา PHP และเลือกใช้ Flickr_API เพราะเครื่องผมติดตั้ง PEAR ไว้อยู่แล้ว (ดูการติดตั้งที่ Install PEAR in Mac OS X Leopard) ส่วนวิธีการติดตั้งนั้นก็ง่าย ดังนี้

1. เปิด Terminal จาก Applications/Utilities/Terminal

2. พิมพ์คำสั่งเพื่อติดตั้ง Flickr_API ดังนี้

$ pear install -of http://code.iamcal.com/php/flickr/Flickr_API-Latest.tgz

แต่หากต้องการ Upgrade ให้พิมพ์ดังนี้

$ pear -d preferred_state=beta upgrade -of http://code.iamcal.com/php/flickr/Flickr_API-Latest.tgz

ในขั้นตอนนี้ บางคนไม่อยากพิมพ์คำสั่งก็สามารถโหลดได้ที่ Flickr_API-Latest.tgz จากนั้นคลายไฟล์นี้ออก และแก้ชื่อโฟลเดอร์เป็น Flickr แล้วย้ายไปไว้ภายในโฟลเดอร์ PEAR (สำหรับคนที่ใช้ Windows และ AppServ นั้นจะนำไปไว้ที่ C:\AppServ\php5\PEAR\)

3. เนื่องจาก Flickr_API ต้องการใช้ PEAR::XML_Tree 2.0.0RC2 ด้วย แต่จำเป็นต้องติดตั้ง PEAR::XML_Parser ก่อน ใช้คำสั่ง

$ pear install XML_Parser

ต่อไปติดตั้ง install XML_Tree ด้วยคำสั่ง

$ pear -d preferred_state=beta install XML_Tree

ถ้ามี XML_Tree อยู่แล้ว แต่เป็นเวอร์ชัน 1.1 สามารถอัพเกรดให้เป็นเวอร์ชัน 2.0.0RC2 ด้วยคำสั่ง

$ pear -d preferred_state=beta upgrade XML_Tree

4. Flickr_API ยังต้องการ PEAR::HTTP_Request ดังนั้นให้ติดตั้งด้วยคำสั่ง

$ pear install HTTP_Request

หลังจากเสร็จสิ้นการลงสิ่งต่างๆ ข้างต้นแล้ว ให้เข้าไปขอ API Keys ได้ที่ http://www.flickr.com/services/api/keys/ เมื่อได้มาแล้วก็นำโค้ดด้านล่างนี้ไปทดสอบว่า Flickr_API สามารถใช้งานได้แล้วหรือยัง

<?php
require_once 'Flickr/API.php';

# create a new api object
$api =& new Flickr_API(array(
    
'api_key'  => '1234567890',
));

# call a method
$response $api->callMethod('flickr.test.echo', array(
    
'foo' => 'bar',
));


# check the response
if ($response) {
    
# response is an XML_Tree root object
    
echo $response->children[1]->name.' => '.$response->children[1]->content;
}
else {
    
# fetch the error
    
echo $api->getErrorMessage();
}
?>

หากผลการทดสอบได้

foo => bar

แสดงว่าใช้งาน Flickr_API ได้แล้วแต่ถ้าขึ้นข้อความอื่นๆ เช่น Invalid API Key หรือ Service currently unavailable แสดงว่ายังไม่สามารถใช้งานได้ (ดู Error Codes เพิ่มเติม)

แต่ถ้าขึ้นข้อความ Bad response from remote server: HTTP status code 404 เราจะต้องใส่ proxy ด้วย โดยทำดังนี้

1. เปิดไฟล์ API.php ที่ PEAR/Flickr/API.php

2. ดูที่บรรทัด 68 จะเห็น

$req =& new HTTP_Request($this->_cfg['endpoint'], array('timeout' => $this->_cfg['conn_timeout']));

ให้ขึ้นบรรทัดใหม่ เพื่อแทรกโค้ดนี้

$req->setProxy("proxy", port, "username", "password");

ใส่ข้อมูลของ proxy ที่ใช้งานให้ถูกต้อง แล้วลองทดสอบอีกครั้ง หากไม่มีอะไรผิดพลาดก็จะสามารถใช้งาน Flickr_API ได้

วันนี้พอกับการติดตั้งก่อนละกัน ต่อไปก็จะค้นหาและแสดงภาพที่ต้องการ