Scriptdd.com

บทความบ้าบ่นของคนทำเว็บ ปี 8

เขียน Script ต่อ API กับ pg.in.th

หัวข้อ บทความ แทก API | PHP

สารภาพว่าพักหลังนี่เรียกว่า ผมติด Playground งอมแงมเลยตั้งแต่ไปโคราชมาทำให้รู้สึกว่ามันสนุกมาก ที่เราไปถ่ายรูปที่ไหนมาแล้วเข้ามาดู web พบว่ามีชาวบ้านมา comment รูปเรามากมาย มาครับวันนี้ผมจะพาทุกคนไปรู้จักกับ Playground ถ่ายรูปสุดเด็ด อัพขึ้นเน็ตทันที มันเป็นยังไง

Website Playground http://www.pg.in.th
Website ของ Playground


รู้จักกับ Playground กันก่อน

Playground คือ Software ในมือถือ ที่มีบริการให้คุณใช้มือถือของคุณถ่ายรูปหรือวีดีโอ (ในอนาคต) มาแล้ว สามารถส่งรูปเข้าสู่ Server ของ Playground และแบ่งปันให้กับเพื่อนๆได้ทันที เสมือนว่าเพื่อนๆก็ได้สนุกไปกับคุณในงานนั้นๆด้วย Playground ถูกพัฒนาจาก บริษัท ครีเอ้ จำกัดโดยน่าจะได้การสนับสนุนจาก DTAC สังเกตเห็นจากรูปที่ Post เข้ามา มีพนักงาน DTAC น่ารักๆ เต็มไปหมด ^^

Call Center DTAC น่ารักนะจ้ะ

http://www.pg.in.th/tags/DTAC

เรามีหลักฐานครับ ว่า พนักงาน Call Center ของ DTAC น่ารัก ^^

ความสนุกของ Playground ก็เหมือนสังคม Social Network ตามปกติที่มีการแสดงออกและการแสดงความคิดเห็นร่วมกับ ของคนในสังคมออนไลน์ คุณถ่ายรูปสนุกๆ แล้วกลับบ้านมา ยังเห็นเพื่อนมา Comment รูปของคุณอีก แถมระบบของ Playground ยังให้คุณสามารถเขียน Blog ได้ทันทีด้วยรูปต่างๆที่คุณเองถ่ายมานั้นแหล่ะ เป็นระบบรวมในจุดเดียวไม่ต้องไปเสียเวลา Load รูปออกมาจากกล้อง เอามาใส่ Computer กันอีกต่อไป

ยังครับยังไม่พอ Playground ยังสามารถผูกตัวเองเข้ากับระบบ Social Network อื่นๆอีกด้วย เช่น เมื่อคุณ ส่งรูปเข้า Playground แล้วระบบของ Playground จะไป Post บอกต่อใน Twitter จะเอารูปของคุณไป Post บอกใน Hi5 อะไรแบบนี้ได้อีก

สุดยอดไหมละพี่น้อง :P


ไปหามาลองเล่นกันซะ

วิธีการใช้ก็เหมือนๆ Website ทั่วไปคือไปสมัครลงทะเบียนไว้ก่อนที่ http://www.pg.in.th เสร็จแล้วก็ Download Software มาติดตั้งในมือถือของคุณ ที่ http://www.pg.in.th/pgclient จุดเด่นที่สำคัญของ Playground คือ ตัว Software ในมือถือ มีหลาย Version สนับสนุนกับมือถือในหลายๆยี่ห้อ

ไม่ว่าจะเป็น Nokia , SAMSUNG, Sony Ericsson, MOTOROLA, ASUS, Apple iPhone, HTC เรียกว่าเกือบทุกรุ่นที่ขายในไทยนั้นแหล่ะ

เลือกรุ่นมือถือให้ถูกต้องเยอะแยะมากมาย
ใน Playground มีให้เลือกรุ่นมากมาย เลือกให้ตรงรุ่นของคุณแล้วระบบจะส่ง SMS เป็น Link มาให้ Download ฟรีครับไม่เสียค่าใช้จ่าย

เรื่องการหัดใช้งาน ผมว่า ... ไปลองเล่นกันเองดีกว่า ขี้เกียจโม้ บทความนี้ของโม้ในมุมอื่นดีกว่า


สนุกแบบ 9AuM มันต้องเขียน Script ติดต่อกันเอง

ความสนุกของผมคือ ตัว Web Playground นี้ทางทีมงานเองก็แจก API ให้กับบุคคลภายนอกสามารถเขียน Program เข้าไปติดต่อใช้งานได้ด้วย API ย่อมาจาก Application Programming Interface หมายถึงมาตรฐานหรือข้อกำหนดในการเชื่อมต่อกันระหว่าง Program เนื่องจากแนวคิดของ Web 2.0 การแบ่งปัน ข้อมูลเพื่อประโยชน์ร่วมกันทำให้การพัฒนาเรื่อง API ใน Website ต่างๆนั้น จำเป็นอย่างมาก ใน Playground นี้ก็มี API หลายๆแบบให้เลือกใช้กันอย่างสนุกสนาน

หน้าแสดงรายละเอียดของ Playground API

http://www.pg.in.th/developer หน้าแสดงรายละเอียดของ Playground API

ผมจะขอหยิบเฉพาะอันที่ผมใช้งานมาแนะนำกันครับ :P อ้อ พวก API ของ PlayGround นี้เกิดปิ๊ปไอเดียก็ลองเสนอทีมงานไปได้ครับ เดี๋ยวเค้าจะพัฒนา API แบบที่อยากได้ออกมาให้ ^^

1. ดึงรูปของตัวเองออกมาดูเล่น

API : photos
URL : http://www.pg.in.th/oapi/photos/{id ของ user}/{จำนวนข้อมูลที่เอามาแสดง (optional)}
Description : list รายละเอียดของรูปล่าสุดของ user ที่ระบุ
Format : json
Method : GET, POST
Parameters : N/A
Response Example : {"StatusCode": "200", "Photos": [{"Src": "/photo/square/39601", "UploadTime": "04.11.2008 23:24", "PhotoId": 39601, "Description": "", "Tags": "", "Title": "Android tmobile g1", "Longitude": "100.51", "Place": "หมู่บ้านปากเกร็ด", "Latitude": "13.91"}, {"Src": "/photo/square/39599", "UploadTime": "04.11.2008 23:21", "PhotoId": 39599, "Description": "", "Tags": "", "Title": "Android tmobile g1", "Longitude": "100.51", "Place": "หมู่บ้านปากเกร็ด", "Latitude": "13.91"}, {"Src": "/photo/square/39597", "UploadTime": "04.11.2008 23:19", "PhotoId": 39597, "Description": "", "Tags": "", "Title": "Android tmobile g1", "Longitude": "100.51", "Place": "หมู่บ้านปากเกร็ด", "Latitude": "13.91"}]}

Status Codes :
    * 200 : success
    * 100 : ไม่มี user นี้

 

เวลาอ่าน API ไม่ยากครับก็ดูว่ามีการเรียกใช้แบบไหน อันนี้เป็นแบบ URL ตาม Link ที่ให้ไว้ เนื่องจาก id ใน Playground ของผมคือ 1230 ผมต้องการ เอารูปของตัวเองล่าสุดออกมาดูเล่นซัก 20 รูปผมก็เรียกไปที่ URL

http://www.pg.in.th/oapi/photos/1230/20

ข้อมูลที่ Server ส่งกลับมาให้ก็จะเป็นข้อมูลที่อยู่ในรูปแบบ JSON
JSON ย่อมาจาก (JavaScript Object Notation) คือข้อมูลอยู่ในรูปข้อความธรรมดาลักษณะโครงสร้างคล้ายกับ XML แต่จะดูและเข้าใจง่ายกว่า Format การรับส่งข้อมูลแบบ JSON นี้ถูกนำเอามาใช้ใน Web Application พวก AJAX เยอะมากย้ำนะครับ JSON ไม่ใช่ภาษาใหม่ แต่เป็นแค่ข้อกำหนดโครงสร้าง ของข้อมูลเท่านั้น

ซึ่งภาษา Web Application ต่างๆ ก็สนับสนุน format JSON ด้วยกันทั้งสิ้น ว่าแล้วก็ดู Script ที่ผมเขียนเพื่อดึงรูปของตัวเองออกมาครับ

<?
### lastphoto.php ##
$pg_id        =    1230;
$photo_num    =    10;

$c = curl_init("http://www.pg.in.th/oapi/photos/$pg_id/$photo_num");
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_VERBOSE, 0);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$json_content = curl_exec($c);
curl_close($c);

echo "<p><b>ข้อมูลที่ได้รับใน Format JSON</b></p>\n";
echo "<p>".$json_content."</p>";
$json_decode    =    json_decode($json_content);
echo "<p>";
 for ($i=0;$i<=$photo_num-1;$i++) {
    $Src                =    $json_decode->Photos[$i]->Src;
    $UploadTime            =    $json_decode->Photos[$i]->UploadTime;
    $PhotoId            =    $json_decode->Photos[$i]->PhotoId;
    $Description        =    $json_decode->Photos[$i]->Description;
    $Tags                =    $json_decode->Photos[$i]->Tags;
    $Title                =    $json_decode->Photos[$i]->Title;
    $Longitude            =    $json_decode->Photos[$i]->Longitude;
    $Place                =    $json_decode->Photos[$i]->Place;
    $Latitude            =    $json_decode->Photos[$i]->Latitude;
    $imglink            =    $Src;

    $imglink            =    str_replace("48x48","medium",$imglink);

    if ($Src !="") {
        echo "<a href='http://www.pg.in.th$imglink' target='_blank' title='$Title'><img src='http://www.pg.in.th$Src' border='0' /></a>\n";
   }
 }
 echo "</p>";

 ?>

Download

Script นี้ก็จะทำการดึงรูปจาก API ของ Playground โดยใช้ Function CURL ของ PHP ดึงออกมา เสร็จแล้วก็นำค่าที่ได้เข้า json_decode เพื่อถอดข้อมูลออกมาจาก Format ของ JSON เสร็จแล้วก็วนข้อมูลเอาออกมาตามจำนวนรูปที่ตั้งไว้ แค่นี้คุณก็สามารถดึงรูปของคุณออกมาไว้ใน Blog ของตัวเองได้แล้ว ^^

ตัวอย่างหน้าจอดูรูปของตัวเองออกมาโชว์

ตัวอย่างหน้าจอดูรูปของตัวเองออกมาโชว์

ตัวอย่างผมนำ Script มาเพิ่มใน blog ตัวเอง

ชักสนุกผมเลยติดต่อกับทางทีมงานของ Playground ว่าอยากได้ API ที่ดึงรูปออกมาจาก Tag ที่ระบุไปที่ Software ที่มือถือนั้นเวลาส่งรูปเข้า Server จะให้เราระบุว่า รูปนี้เกี่ยวกับ Tag อะไรเช่น ถ้ามีคนไปเที่ยวปาย แล้วผูกรูปไว้กับ Tag "ปาย"

ที่นี่ถ้าเรามี API ที่สามารถดึงรูปออกจาก Tag ที่กำหนดได้ เราก็จะสามารถได้รูปจากสถานที่หรือเหตุการณ์นั้นๆได้ทันที จากทุกๆคนที่ช่วยกันส่งรูปเข้ามา ผ่านไปอาทิตย์เดียวทางทีมงานก็จัดการให้เรียบร้อย รวดเร็วจริงๆ

2. ดึงรูปที่เกี่ยวข้องกับ Tag นั้นๆมาดูเล่น

API : latest (tag)
URL : http://www.pg.in.th/oapi/latest/{จำนวนข้อมูลที่เอามาแสดง (optional)}
Description : list รายละเอียดของรูปหรือวิดีโอที่ถูกอัพโหลดมาล่าสุดและเกี่ยวข้องกับ tag ที่ต้องการค้นหา
Format : json
Method : GET, POST
Parameters : tag=tag ที่ถูก escape ตัวอักษร HTML แล้ว
Response Example : {"StatusCode": "200", "Items": [{"Src": "/photo/square/39704", "UploadTime": "05.11.2008 11:18", "MediaId": 39704, "Description": "", "Tags": "Sushi", "Title": ".", "UserId": "10095", "Place": "", "Type": "Photo"}, {"Src": "/photo/square/39703", "UploadTime": "05.11.2008 11:16", "MediaId": 39703, "Description": "", "Tags": "Sushi", "Title": ".", "UserId": "10095", "Place": "", "Type": "Photo"}, {"Src": "/photo/square/39702", "UploadTime": "05.11.2008 11:14", "MediaId": 39702, "Description": "", "Tags": "Sushi", "Title": "", "UserId": "69", "Place": "สุขุมวิท 1", "Type": "Photo"}]}

Status Codes :
    * 200 : success
    * 404 : ไม่พบ tag ที่ต้องการค้นหา

เหมือนเดิมครับ ดู Script ที่ผมเขียนเลย

<?
## lastphoto-tag.php ##
$photo_num    = 10;
$tag        = 'ปาย';

echo "<p>Tag : $tag</p>\n";

$c = curl_init("http://www.pg.in.th/oapi/latest/$photo_num?tag=$tag");
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_VERBOSE, 0);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);

$json_content = curl_exec($c);

curl_close($c);

echo "<p><b>ข้อมูลที่ได้รับใน Format JSON</b></p>\n";
echo "<p>".$json_content."</p>";

$json_decode    =    json_decode($json_content);

echo "<p>";

for ($i=0;$i<=$photo_num-1;$i++) {

    $Src                =    $json_decode->Items[$i]->Src;
    $UploadTime            =    $json_decode->Items[$i]->UploadTime;
    $MediaId            =    $json_decode->Items[$i]->MediaId;
    $Description        =    $json_decode->Items[$i]->Description;
    $Title                =    $json_decode->Items[$i]->Title;
    $Tags                =    $json_decode->Items[$i]->Tags;
    $UserId                =    $json_decode->Items[$i]->UserId;
    $Place                =    $json_decode->Items[$i]->Place;
    $Type                =    $json_decode->Items[$i]->Type;
    $imglink            =    $Src;
    $imglink            =    str_replace("30x30","medium",$Src);
    $Src                =    str_replace("30x30","48x48",$Src);

    if ($Type =="Photo") {
        echo "<a href='http://www.pg.in.th$imglink' title='$Title' rel='lightbox[PG$pg_id]'><img src='http://www.pg.in.th$Src' border='0' alt='$Title'/></a>\n";
    }
}

echo "</p>";

?>

Download
ไล่การทำงานดูคิดว่าไม่น่ายากแล้วละครับ API ตัวนี้จะเป็นประโยชน์กับผมมากๆ เพราะผมสามารถนำไปประยุกต์กับงานใน Songburi ได้ยกตัวอย่างเช่น ผมไปถ่ายรูปตามงานคอนเสิร์ตต่างๆ ผมอาจจะระบุไว้ใน Web ว่า ให้เพื่อนๆใช้ Playground แล้วระบุ Tag ในรูป ว่าเป็นชื่องานคอนเสิร์ตนั้นๆ แล้วผมก็จะเชื่อม Tag ดังกล่าวเข้ากับ API แล้วก็สามารถดึงรูปออกมาให้เพื่อนๆได้รับชมหน้า Web แบบ Realtime กันไปเลย ^^

ตัวอย่างดึงรูปจาก tag ปาย

นี่ก็เป็นตัวอย่างการเขียน PHP ให้เข้าไปติดต่อ API ต่างๆ Website อื่นๆก็สามารถเขียนได้แบบนี้เหมือนกันครับอยากเป็น Programmer เก่งๆ ต้องหัดอ่าน API พวกนี้ไว้นะครับสำหรับ Service ของ API อื่นๆ ลองๆเขียนเชื่อมต่อดูครับ คิดว่าไม่น่ายากแล้วเดี๋ยวตอนต่อไป ผมจะเอา API เหล่านี้ไปประกอบเป็น Plugin ใน Wordpress แจกนะครับ ^^ บทความนี้แค่นี้ล่ะครับผม


อ้างอิง

Website Playground
http://www.pg.in.th

นิยามของ API
http://en.wikipedia.org/wiki/API

นิยามของ JSON
http://json.org/ , http://th.wikipedia.org/wiki/สัญกรณ์วัตถุจาวาสคริปต์

 

รูปคุณ Read (18,669) Comments (8) 2009-01-31 20:01:07

ความคิดเห็น

เข้าไปลองเล่นมาแล้วครับ...

เจ๋งดี...ถ้าที่ทำงานใครบังคับให้ใช้ระบบนี้รายงานตัว...

ว่าอยู่ที่ไหนน่ะตอนนี้...คงโกหกยากแล้วล่ะ....

55555

รูปคุณ พงษ์ โดยคุณ พงษ์ 2009-02-01 14:04:22

ผมเอา plugin พี่ ไปแป่ะบล๊อคผมนานล่ะ แต่ดันใช้ Nokia 1110 ถ่ายรูปไม่ได้ สมัคร pg ไว้ก็ไม่ได้ใช้ เลยอดครับ อิอิ

รูปคุณ P@W โดยคุณ [email protected] 2009-02-01 15:33:24


ทุกอย่างเกิดจากเหตุ และปัจจัย ไม่ใช่อยู่ดี ๆ ก็เกิดขึ้น :: สร้างฝันบนจินตนาการ

www.konkeanweb.com , www.prawee.com ,www.tct15.com ,www.thaiagro.com

 

โอ้โห ไปกันไกลแล้ว ตามไม่ทัน เทคโนโลยีสมัยนี้

รูปคุณ kikok โดยคุณ kikok 2009-02-01 21:46:10


www.uttc.ac.th

วิทยาลัยเทคนิคอุตรดิตถ์

เยี่ยมมาก

รูปคุณ ple@playground โดยคุณ [email protected] 2009-02-02 10:22:58

ต้องไปทดสองเล่นดูบ้างแล้ว

รูปคุณ Edward โดยคุณ Edward 2009-02-02 19:46:39

เดี๋ยวขอไปลองดูบ้างครับ น่าสนใจดี

รูปคุณ ต้อม โดยคุณ ต้อม 2009-02-04 13:38:13

ติดตามๆ ค่ะ ไม่เคยรู้มาก่อนว่า API คืออะไร

รูปคุณ อ๊อฟ โดยคุณ อ๊อฟ 2009-03-29 14:09:52

อยากรู้ว่า "สัญกรณ์วัตถุจาวาสคริปต์" ชื่อนี้ท่านได้แต่ไรมาครับ?

รูปคุณ มะขวิด โดยคุณ มะขวิด 2010-04-28 16:06:34

ร่วมแสดงความคิดเห็น



ขอความกรุณา ปัญญาชน ทุกๆท่าน รณรงค์การใช้ภาษาไทยให้ถูกต้อง
กรุณา ลงความคิดเห็นโดยใช้ภาษาไทยให้เป็นภาษาไทย งดการใช้ภาษาวัยรุ่น,
แอ๊บแบ๊ว บอกตรงๆปัญญาอ่อน !! Admin นั่งอ่านแล้วปวดหัว

เข้าระบบ


จำไว้ด้วยนะจ้ะ

สมัครสมาชิก
ลืมรหัสผ่าน

บทความล่าสุด

Gallery

Tags

Home Decorate Mobile BarCampBangkok Windows Android Hacker FTR ล้อหมอบ TV Internet Notebook ASP AIS Perl Internet Explorer Shopping JavaScript PHP Clip Video ROM Gallery Movie Mozilla barcampbkk2 Search Engine Airnet Freeware Tablet Developer Linux

อื่นๆ ...

เพื่อนบ้าน

สถิติส่วนตัว

คลิกรับ Feed สิจ๊ะ

TwitterCounter for @9aum

Scriptdd.com | ctdd Version 3.0 ติดต่อฐานข้อมูลทิ้งสิ้น 6 ครั้งใช้เวลาประมวลผล 0.0512 วินาที
โปรแกรมโดย 9AuM | ออกแบบโดย styleshout