เขียน Script ต่อ API กับ pg.in.th
สารภาพว่าพักหลังนี่เรียกว่า ผมติด Playground งอมแงมเลยตั้งแต่ไปโคราชมาทำให้รู้สึกว่ามันสนุกมาก ที่เราไปถ่ายรูปที่ไหนมาแล้วเข้ามาดู web พบว่ามีชาวบ้านมา comment รูปเรามากมาย มาครับวันนี้ผมจะพาทุกคนไปรู้จักกับ Playground ถ่ายรูปสุดเด็ด อัพขึ้นเน็ตทันที มันเป็นยังไง
Website ของ Playground
รู้จักกับ Playground กันก่อน
Playground คือ Software ในมือถือ ที่มีบริการให้คุณใช้มือถือของคุณถ่ายรูปหรือวีดีโอ (ในอนาคต) มาแล้ว สามารถส่งรูปเข้าสู่ Server ของ Playground และแบ่งปันให้กับเพื่อนๆได้ทันที เสมือนว่าเพื่อนๆก็ได้สนุกไปกับคุณในงานนั้นๆด้วย Playground ถูกพัฒนาจาก บริษัท ครีเอ้ จำกัดโดยน่าจะได้การสนับสนุนจาก DTAC สังเกตเห็นจากรูปที่ Post เข้ามา มีพนักงาน 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 หลายๆแบบให้เลือกใช้กันอย่างสนุกสนาน
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>";
?>
Script นี้ก็จะทำการดึงรูปจาก API ของ Playground โดยใช้ Function CURL ของ PHP ดึงออกมา เสร็จแล้วก็นำค่าที่ได้เข้า json_decode เพื่อถอดข้อมูลออกมาจาก Format ของ JSON เสร็จแล้วก็วนข้อมูลเอาออกมาตามจำนวนรูปที่ตั้งไว้ แค่นี้คุณก็สามารถดึงรูปของคุณออกมาไว้ใน 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 กันไปเลย ^^
นี่ก็เป็นตัวอย่างการเขียน 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 (24,453)
Comments (8)
2009-01-31 20:01:07
ความคิดเห็น
เข้าไปลองเล่นมาแล้วครับ...
เจ๋งดี...ถ้าที่ทำงานใครบังคับให้ใช้ระบบนี้รายงานตัว...
ว่าอยู่ที่ไหนน่ะตอนนี้...คงโกหกยากแล้วล่ะ....
55555
โดยคุณ พงษ์
2009-02-01 14:04:22
ผมเอา plugin พี่ ไปแป่ะบล๊อคผมนานล่ะ แต่ดันใช้ Nokia 1110 ถ่ายรูปไม่ได้ สมัคร pg ไว้ก็ไม่ได้ใช้ เลยอดครับ อิอิ
ทุกอย่างเกิดจากเหตุ และปัจจัย ไม่ใช่อยู่ดี ๆ ก็เกิดขึ้น :: สร้างฝันบนจินตนาการ www.konkeanweb.com , www.prawee.com ,www.tct15.com ,www.thaiagro.com โดยคุณ [email protected]
2009-02-01 15:33:24
โอ้โห ไปกันไกลแล้ว ตามไม่ทัน เทคโนโลยีสมัยนี้
วิทยาลัยเทคนิคอุตรดิตถ์ โดยคุณ kikok
2009-02-01 21:46:10
www.uttc.ac.th
เยี่ยมมาก
โดยคุณ [email protected]
2009-02-02 10:22:58
ต้องไปทดสองเล่นดูบ้างแล้ว
โดยคุณ 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