อยากเรียนรู้เขียน Twitter application ด้วย Ruby? คุณมาถูกที่แล้ว!
ในบทความนี้จะสอนทีละขั้นตอน สร้างโปรแกรมที่ interact กับ Twitter API ได้: ค้นหา keywords, ส่ง auto replies, และอื่นๆ
มาเริ่มกัน!
การ Setup
ก่อนอื่น ติดตั้ง twitter gem ขั้นตอนง่ายมาก:
gem install twitter
จากนั้นไปที่ https://apps.twitter.com/ setup application ใหม่ กดปุ่ม 'Create New App' ขวามือ

กรอกฟอร์ม ข้อมูลอะไรก็ได้ก่อน นี่คือที่ผมทำ:

ไม่ต้องกังวล website field ใช้ https://example.com เป็น placeholder ได้
ยอมรับ Twitter terms ติ๊ก 'Yes, I agree' แล้วกด 'Create your Twitter application' ถ้าทุกอย่างถูกต้องจะเห็นหน้าจอ:

กด 'Keys and Access Tokens' หน้านี้มี API keys สำหรับเชื่อม Twitter API ซึ่งเป็นจุดประสงค์ของ setup นี้
ขั้นตอนต่อไป ใส่รายละเอียดของคุณใน template นี้:
require 'twitter' client = Twitter::REST::Client.new do |config| config.consumer_key = "YOUR_CONSUMER_KEY" config.consumer_secret = "YOUR_CONSUMER_SECRET" config.access_token = "YOUR_ACCESS_TOKEN" config.access_token_secret = "YOUR_ACCESS_SECRET" end
ต้องกด 'Generate access tokens' เพื่อได้ 2 ค่าสุดท้าย
เสร็จ setup แล้วพร้อมทำงานกับ API!
การทำงานกับ Tweets
ตอนนี้เข้าถึง Twitter API ทั้งหมดผ่าน client object ตัวอย่าง: ดึง 20 tweets ล่าสุดจาก @rubyinside บันทึกลง YAML ไฟล์เพื่อวิเคราะห์ภายหลัง
ใช้ user_timeline method ดึง timeline ของ user ใดๆ:
tweets = client.user_timeline('rubyinside', count: 20)
Return array ของ Tweet objects แล้ว interact ยังไง? อ่าน docs ได้ แต่สนุกกว่าคือใช้ pry รันโค้ดใน pry แล้วใช้ ls Twitter::Tweet จะ list เมธอดทั้งหมดของ object/class นั้น
ในกรณีนี้:

เห็นว่ามี full_text method ใช้มันพิมพ์ tweet contents:
tweets.each { |tweet| puts tweet.full_text }
ลองเมธอดอื่นๆ เพื่อสนุกได้ 🙂
การบันทึก Tweets
ทำอะไรกับ tweets ทั้งหมดนี้ดี? เขียนลงไฟล์เพื่อวิเคราะห์ภายหลัง วิธีง่ายคือใช้ YAML format:
require 'yaml'
# ... rest of the code here ...
File.write('tweets.yml', YAML.dump(tweets))
โหลดทweets กลับมาได้ด้วย YAML.load_file:
require 'yaml'
require 'twitter'
tweets = YAML.load_file('tweets.yml')
Tweets พร้อมใช้งานในรูปแบบเดิม เหมือนเพิ่ง request ใหม่ ไม่เก๋ไหม? 🙂
การส่ง Tweets
อะไรทำได้อีกเยอะ เช่นส่งข้อความให้ user ที่ mention keyword เฉพาะ ใช้ update method ส่ง tweet ใหม่:
client.update("I'm having some fun with the Twitter gem!")
ทำแบบนี้ได้:
client.search('#ruby').take(3).each do |tweet|
client.update("@#{tweet.user} Hey I love Ruby too, what are your favorite blogs? :)")
end
อีกทางคือ streaming API ให้ 'live' events real-time ดูรายละเอียดใน documentation
สรุป
Twitter gem ทำให้ใช้ Twitter API ง่ายมากหลัง setup ครั้งแรก ตอนถึงคุณลองสร้างอะไรสนุกๆ ไป!
อย่าลืมแชร์บทความนี้เพื่อให้ผมเขียนต่อได้ 🙂