PHP - Search image from Flickr.com

ค้นหารูปจากเว็บ Flickr.com บนเว็บของคุณเอง (^_^)

Flickr.com เปิดให้บริการค้นหารูปผ่าน webservice
โดยจะคืนผลลัพธ์ที่ได้มาในรูปแบบ xml ครับ

ดูวิธีการทำกันเลยดีกว่าครับ
Step 1
ก่อนอื่นต้องไปขอ API Key ก่อนนะครับ ไปขอตามลิืงก์นี้เลยครับ
http://flickr.com/services/api/

Step 2
เมื่อได้ API Key มาแล้ว ให้เรียก service ผ่าน url นี้ครับ
http://api.flickr.com/services/rest/?method=flickr.photos.search

โดยต้องส่ง query string ไปเพื่อกำหนดรูปที่เราต้องการค้นหาดังนี้
api_key = ค่า API Key ทีไ่ด้จาก step ที่ 1
tags = รูปที่ต้องการค้นหา
per_page = จำนวนรูปที่ต้องการแสดงต่อ 1 หน้า
page = หน้าที่ต้องการดึงรูปมาแสดง

ตัวอย่างนะครับ ถ้าผมต้องการ ดีงรูป กระต่าย(rabbit) มาแสดง โดยต้องการให้
แสดงหน้าละ 10 รูป เริ่มต้นที่หน้าที่ 1 ค่า parameter จะเป็นตามนี้ครับ
api_key = “xxxxxxxxxxx”  (ต้องใช้ค่า api key ของคุณเองนะครับ)
tags = rabbit
per_page = 10
page = 1
เมื่อรวมเป็น url จะได้ดังนี้

http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=xxxxxxxxxxxx&tags=rabbit&per_page=10&page=1

Step 3
เมื่อเรียก service ตาม url ใน step ที่ 2 จะได้ผลลัพธ์คืนมาเป็น xml
คลิกที่รูปเพื่อดูตัวอย่างเต็มๆ นะครับ

ความหมาย tag ต่างๆ นะครับ
stat = ใช้ตรวจสอบการเรียก service ว่าถูกต้องรึไม่ต้องเป็น ok เท่านั้น
page = หน้าปัจจุบัน
pages = จำนวนหน้าทั้งหมด
perpage = จำนวนรูปต่อ 1 หน้า
total = จำนวนรูปทั้งหมดที่ค้นหาพบ
id = รหัสรูป
owner = เจ้าของรูป
secret = รหัสลับสำหรับเข้าดูรูป
server = server ที่เก็บรูป *
farm = farm ที่เก็บรูป *
title = ชื่อรูป

*ขอนอกเรื่องอธิบายเรื่อง server กับ farm ก่อนนะครับ ตามที่ผมเข้าใจ
รูปใน Flickr.com จะเก็บเป็นลักษณะ farm และใน farm จะมีหลายๆ
server แล้วรูปจะอยู่ใน server อีกทีนะครับ

ต่อนะครับ เมื่อได้ผลลัพธ์ xml มาแล้ว เวลาจะอ้างอิงไปที่รูปให้ใช้ตามนี้นะครับ
http://farm{farm_id}.static.flickr.com/{server_id}/{photo_id}_{secret}_{size}.jpg
ตัวอย่าง
http://farm4.static.flickr.com/3257/2926756714_c56e46f446_s.jpg

ที่เหลือลองเขียนแสดงผลกันดูเองนะครับ  (^_^)

หน้าตัวอย่างครับ  Search images Flickr

load หน้าตัวอย่างคลิกทีนี่ครับ flickr_search.rar

ปล. - code ตัวอย่างผม limit ไว้แค่ 100 หน้านะครับ
- load หน้าตัวอย่างไปแล้ว อย่าลืมเปลี่ยน API Keys ด้วยนะครับ (^_^)”

6 Comments

  1. ่่โด้ Says:

    ขอเอพีไอคีกดไรง่า

  2. GolfT Says:

    เข้าไปที่ลิงก์นี้นะครับ
    http://flickr.com/services/api/

    แล้วจะมีลิงก์ให้คลิกต่อไปชื่อว่า API Keys เลยครับ
    แต่ต้องใช้ username, password นะครับ
    ถ้ายังไม่มีสามารถสมัครได้เลยครับแต่ต้องมีอีเมล์ของ yahoo ก่อนนะครับ

  3. zigap Says:

    รบกวนถามนิดนึงนะครับ

    คือผมลองเอาโค๊ดไปทดสอบดู

    พอป้อน keyword ภาษาไทยมัน not found อะครับ

    แต่ลองในหน้าเว็บของพี่มันใช้ได้

    ก็เลยงง มันจะเกี่ยวกับตัว Apache กับ PHP ที่ผมใช้ไหมคับเนี่ย

  4. GolfT Says:

    ลอง save ไฟล์ที่ไว้ search เป็น utf-8
    แล้วลอง echo ตัว url ที่เรียก flickr api ออกมาดูนะครับ
    keyword ที่ส่งไปต้องเป็นภาษาที่อ่านออกได้นะครับ

    เสร็จแล้วลองเทสดูอีกทีนะครับ

    ได้รึไม่ได้ยังไงรบกวนมาคอมเม้นบอกหน่อยนะครับ
    เผื่อมีใครติดปํญหาเหมือนกันนะครับ ขอบคุณมากครับ (^_^)

  5. zigap Says:

    ทำตามที่บอกแล้วครับ

    ยังไ่ม่ได้อยู่ดีครับ

    keywordภาษาอังกฤษใช้ได้นะครับแต่ภาษาไทยใช้ไม่ได้

    ถ้าเป็นไปได้รบกวน ช่วยผมหน่อยได้ไหมครับ

    คือผมต้องการแค่ให้มัน searchหารูปแล้วแสดงผลลัพธ์ไม่เกิน5รูปพออะครับ

    keywordเป็นภาษาไทยนะครับ

    รบกวนด้วยนะครับพี่

  6. GolfT Says:

    ถ้าต้องการให้ผลลัพธ์ไม่เกิน 5 รูปต้องกำหนด
    per_page=5 และ page=1 นะครับ

    ส่วนภาษาไทยลอง save file เป็น utf8
    กำหนด character set เป็น utf8 แล้วลองใหม่นะครับ
    น่าจะได้ ถ้าไม่ได้ลองเปลี่ยน keyword แล้วลอง search ใหม่นะครับ
    ถ้ายังไม่ขึ้นอีกลอง echo url ที่เรียก api ออกมาดูนะครับ
    แล้วลองเอา url ที่ได้มาโพสทิ้งไว้นะครับ รึจะส่งมาในอีเมล์ก็ได้นะครับ
    แล้วเดี๋ยวจะลองดูให้ครับว่าเป็นเพราะอะไร ลองดูนะครับ (^_^)

Leave a comment