Guest User

Untitled

a guest
Jun 10th, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. # -*- mode: ruby; coding: utf-8 -*-
  3.  
  4. require 'base64'
  5. require 'pp'
  6. require 'rubygems'
  7. require 'rev'
  8. require 'json'
  9. require 'g'
  10.  
  11. $g_sticky = false
  12.  
  13. username = 'YOUR_TWITTER_SCREEN_NAME'
  14. password = 'YOUR_TWITTER_PASSWORD'
  15.  
  16. class TwitterStream < Rev::HttpClient
  17. attr_accessor :username, :password
  18.  
  19. def self.connect(username, password)
  20. client = super("stream.twitter.com", 80)
  21. client.username = username
  22. client.password = password
  23. client
  24. end
  25.  
  26. def on_body_data(data)
  27. @line ||= ""
  28. lines = data.split("\r")
  29.  
  30. return if lines.size == 0
  31. if lines.size == 1
  32. @line += lines.shift
  33. return
  34. end
  35.  
  36. while lines.size > 1
  37. @line += lines.shift
  38. if @line.length > 2
  39. json = JSON.parse(@line)
  40. g("[#{json['user']['screen_name']}] #{json['text']}")
  41. puts json
  42. @line = ''
  43. end
  44. end
  45.  
  46. @line = lines.shift
  47. @line = "" if @line =="\n"
  48. end
  49.  
  50. def statuses(keyword)
  51. request('GET', '/1/statuses/filter.json', :query => { :track => keyword }, :head => headers)
  52. end
  53.  
  54. def headers
  55. { :authorization => auth_header }
  56. end
  57.  
  58. def auth_header
  59. "Basic #{Base64.encode64("#{username}:#{password}").chomp}"
  60. end
  61. end
  62.  
  63.  
  64. l = Rev::Loop.default
  65. c = TwitterStream.connect(username, password).attach(l)
  66. c.statuses(ARGV[0])
  67. l.run
Add Comment
Please, Sign In to add comment