Guest User

Untitled

a guest
Mar 9th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. #!/usr/bin/ruby
  2. require 'irb'
  3. require 'time'
  4. require 'net/https'
  5. require 'rubygems'
  6. require 'twitter'
  7. require 'rss'
  8. require 'hpricot'
  9.  
  10. UNAME = "udzura"
  11. PASSWD = Your::Passwd
  12. DISP_FORMAT = "%-12.12s: %s"
  13. $cli = Twitter::Client.new(
  14. :login => UNAME,
  15. :password => PASSWD
  16. )
  17.  
  18. #def method_missing(name, *args)
  19. # return [name.to_s, *args].join(" ")
  20. #end
  21.  
  22. def post(str)
  23. $cli.status(:post, str)
  24. return str
  25. end
  26.  
  27. def check_me(count=5)
  28. $cli.timeline_for(:me, :count => count) do |s|
  29. puts sprintf(DISP_FORMAT, s.user.screen_name, s.text)
  30. end
  31. return count
  32. end
  33.  
  34. TWHOST = "twitter.com"
  35. TWPORT = 80
  36. TWPORT_SSL = 443
  37. REP_URL = "/statuses/replies.json"
  38.  
  39. TWHEADER = {
  40. 'User-Agent' => 'Twitter4R',
  41. 'Accept' => 'text/json'
  42. }
  43.  
  44. def replies(count=5)
  45. @json
  46. @i = 0
  47. Net::HTTP.version_1_2
  48. net_http = Net::HTTP.new(TWHOST, TWPORT_SSL)
  49. net_http.use_ssl = true
  50. net_http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  51. req = Net::HTTP::Get.new(REP_URL, TWHEADER)
  52. req.basic_auth UNAME, PASSWD
  53. net_http.start do |http|
  54. @response = http.request(req)
  55. @json = JSON.parse(@response.body)
  56. end
  57. @json.each do |item|
  58. puts sprintf(DISP_FORMAT, item["user"]["screen_name"], item["text"])
  59. @i += 1
  60. break if @i >= count
  61. end
  62. return count
  63. end
  64.  
  65. def timeline(count=10)
  66. @i = 0
  67. $cli.timeline_for(:friends, :count => count) do |s|
  68. puts sprintf(DISP_FORMAT, s.user.screen_name, s.text)
  69. @i += 1
  70. break if @i >= count
  71. end
  72. return count
  73. end
  74.  
  75. def timeline_for(uid, count=10)
  76. @i = 0
  77. $cli.timeline_for(:user, :id => uid, :count => count) do |s|
  78. puts sprintf(DISP_FORMAT, s.user.screen_name, s.text)
  79. @i += 1
  80. break if @i >= count
  81. end
  82. return count
  83. end
  84.  
  85. FAVOTTER_HOST = "favotter.matope.com"
  86. FAV_FORMAT = " %2d fav by %s --"
  87. DESC_CORE_RE = /^\w*\s(.*)\d+\sfav\sby\s*$/
  88.  
  89. class Favotter503Error < Net::ProtoServerError
  90. end
  91.  
  92. def check_fav_for(uid, count=10)
  93. @rss
  94. @rss_url = "/userrss.php?user=#{uid}&mode=new"
  95. @i = 0
  96. Net::HTTP.version_1_2
  97. Net::HTTP.start(FAVOTTER_HOST, TWPORT) do |http|
  98. response = http.get(@rss_url)
  99. raise Favotter503Error, "you can't access Favotter server. please try it later." unless response.code == "200"
  100. @rss = RSS::Parser.parse(response.body, true)
  101. end
  102. @rss.channel.items.each do |item|
  103. @user = item.author
  104. @desc_raw = Hpricot.parse(item.description)
  105. @text = @desc_raw.inner_text.gsub(DESC_CORE_RE, '\1')
  106. puts sprintf(DISP_FORMAT, @user, @text)
  107. @faved_by = []
  108. @imgs = @desc_raw.search("img")
  109. @cnt = @imgs.length - 1
  110. @imgs[1..@cnt].each do |img|
  111. @faved_by << img.attributes["title"]
  112. end
  113. puts sprintf(FAV_FORMAT, @cnt, @faved_by.join(", ")).rjust(96, "-")
  114. @i += 1
  115. break if @i >= count
  116. end
  117. return count
  118. end
  119.  
  120. def check_fav(count=10)
  121. check_fav_for(UNAME, count)
  122. end
  123.  
  124. def boss # ボスが来た! 投げやり版
  125. @os_commands = ["free", "vmstat -d", "df", "/sbin/ifconfig"]
  126. @os_commands.each do |cmd|
  127. puts `#{cmd}`
  128. puts
  129. end
  130. gets
  131. return nil
  132. end
  133.  
  134. def b
  135. boss
  136. end
  137.  
  138. IRB.start
Add Comment
Please, Sign In to add comment