dict api over http

ผมอยากให้ basa-asa (ซึ่งเป็นโปรแกรมช่วยแปลภาษา เช่น ช่วยเปิด dictionary ให้ ไม่ใช่โปรแกรมแปลภาษาอัตโนมัติแบบ Google translation) เปิด dictionary ผ่าน dict protocol ได้ เพราะว่าจะได้สะดวกทั้ง dictionary ที่ download มาได้และ dictionary ของชาวบ้านที่เขาไม่ให้ download (ไม่รู้ว่าจริงๆ แล้วมีหรือเปล่า dictionary ที่ใช้ผ่าน dict protocol ได้แต่ไม่ให้ download).  แต่ว่า dict protocol นี้อาจจะเขียน javascript ไปเปิดตรงๆ ลำบากสักหน่อย มากไปกว่านั้น protocol ต่างๆ ที่ไม่ใช่ http ก็มักจะโดนปิดกั้นอย่างน่าเศร้าใจ. ด้วยเหตุผลดังกล่าวผมก็เลยทำ dicthttp ขึ้นมาเป็นตัวหุ้ม (wrapper) dict server ไว้อีกที แล้วก็แปลง ผลที่ได้เป็นแบบ json ส่งผ่าน web (http) ไป.

เวลาใช้ dict protocol เราอาจจะค้นหาคำโดยใช้ url แบบ dict://hostname/d:word:database อะไรทำนองนี้ เวลาทำ wrapper ผมก็ทำให้ใช้ประมาณนั้นคือ http://hostname/d:word:database ได้เหมือนกัน แล้วผลก็ return มาเป็น json. โดยเป็น list ของ {ชื่อ database, คำที่ใช้ค้นหา, definition}.


$ curl http://localhost:8000/d:computer:gcide
[{“word”: “Computer”, “def”: “Computer \\Com*put\”er\\ (k[o^]m*p[=u]t\”[~e]r), n.\n1. One who computes.\n\n2. (Computers) an electronic device for performing\ncalculations automatically. It consists of a clock to\nprovide voltage pulses to synchronize the operations of\nthe devices within the computer, a central processing\nunit, where the arithmetical and logical operations are\nperformed on data, a random-access memory, where the\nprograms and data are stored for rapid access, devices to\ninput data and output results, and various other\nperipheral devices of widely varied function, as well as\ncircuitry to support the main operations.\n\nNote: This modern sense of computer comprises the\nstored-program computers, in which multiple steps in a\ncalculation may be stored within the computer itself as\n{instructions} in a {program}, and are then executed by\nthe computer without further intervention of the\noperator. Different types of computer are variously\ncalled {analog computer}, {number cruncher,\nnumber-cruncher}, {digital computer}, and {pari-mutuel\nmachine, totalizer, totaliser, totalizator,\ntotalisator}.\n\nSyn: data processor, electronic computer, information\nprocessing system.\n[WordNet 1.5 +PJC]\n\n3. (Computers) same as {digital computer}.\n[PJC]”, “database”: “gcide”}, {“word”: “computer”, “def”: “electronic device \\electronic device\\ n.\na device depending on the principles of electronics and using\nthe manipulation of electron flow for its operation.\n[PJC]\n\nNote: Numerous electronic devices are in daily use, among\nthem the {television}, {radio}, {computer}, {robot},\n{transmitter}, {receiver}, {VCR}, {CD player}, etc.\n[PJC]”, “database”: “gcide”}]

ขยุกขยุยไปบ้าง … แต่มันก็เป็นแบบนี้ล่ะ

นอกจากคำสั่ง define ใน dict protocol แล้วก็ใช้ match ได้ด้วย แบบ http://hostname/m:คำ:database:strategy ได้ด้วย. แต่เหมือน n ยังใส่ไม่ได้ หาไม่เจอว่าจะใส่ตรงไหนของ dictclient (python).

โปรแกรม dicthttp อยู่ที่ http://code.google.com/p/basaasa/source/browse/#svn/trunk/dicthttp ใช้ wsgi พื้นๆ


4 thoughts on “dict api over http


Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s