Advertisement
LPGhatguy

ROBLOX Trade Currency Logger

Feb 19th, 2013
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.79 KB | None | 0 0
  1. local http = require("socket.http")
  2. local ltn12 = require("ltn12")
  3.  
  4. http.TIMEOUT = 3
  5.  
  6. local file_pattern = "tc_%s.csv"
  7.  
  8. local tc_url = "http://www.roblox.com/My/Money.aspx"
  9. local tc_cookies = ""
  10.  
  11. local poll_minute = 5
  12. local poll_accuracy = 5
  13. local poll_check_elapsed = 0
  14. local auto_log_after = 1
  15.  
  16. local recorded = {}
  17. local unwritten = {}
  18.  
  19. local last_date = os.date("%y.%m.%d")
  20. local last_minute = os.date("%M")
  21.  
  22. function date_label()
  23.     return os.date("%y.%m.%d")
  24. end
  25.  
  26. function time_label()
  27.     return os.time()
  28. end
  29.  
  30. function do_request(url, headers)
  31.     local response = {}
  32.     local result, code, header, result_word = http.request({
  33.         url = url,
  34.         sink = ltn12.sink.table(response),
  35.         headers = headers
  36.     })
  37.  
  38.     return table.concat(response)
  39. end
  40.  
  41. function tc_request(retry)
  42.     local response = do_request(tc_url, {cookie = tc_cookies})
  43.  
  44.     local bux, tix = response:match('<div class="Rate">([%d%.]+)/([%d%.]+)</div>')
  45.     local num_bux, num_tix = tonumber(bux), tonumber(tix)
  46.  
  47.     if (num_tix == 0 or num_bux == 0) then
  48.         if (retry) then
  49.             return tc_request()
  50.         else
  51.             return
  52.         end
  53.     else
  54.         return num_bux, num_tix
  55.     end
  56. end
  57.  
  58. function log_request()
  59.     local bux, tix = tc_request(true)
  60.     local request_time = time_label()
  61.  
  62.     if (bux and tix) then
  63.         last_minute = os.date("%M")
  64.  
  65.         if (date_label() ~= last_date) then
  66.             write_log()
  67.  
  68.             last_date = date_label()
  69.         end
  70.  
  71.         local log_data = {request_time, bux, tix}
  72.  
  73.         table.insert(recorded, log_data)
  74.         table.insert(unwritten, log_data)
  75.         print(unpack(log_data))
  76.  
  77.         if (#unwritten >= auto_log_after) then
  78.             write_log()
  79.         end
  80.     end
  81. end
  82.  
  83. function write_log()
  84.     local out = love.filesystem.newFile(file_pattern:format(last_date))
  85.  
  86.     if (out:open("a")) then
  87.         local outstring = ""
  88.  
  89.         for key, value in next, unwritten do
  90.             outstring = outstring .. string.format("%s,%s,%s\n", unpack(value))
  91.         end
  92.  
  93.         unwritten = {}
  94.  
  95.         out:write(outstring)
  96.     end
  97.  
  98.     out:close()
  99. end
  100.  
  101. function love.load()
  102.     if (love.filesystem.isFile("cookie.txt")) then
  103.         tc_cookies = love.filesystem.read("cookie.txt")
  104.     end
  105.  
  106.     log_request()
  107. end
  108.  
  109. function love.update(delta)
  110.     poll_check_elapsed = poll_check_elapsed + delta
  111.  
  112.     if (poll_check_elapsed >= poll_accuracy) then
  113.         poll_check_elapsed = poll_check_elapsed - poll_accuracy
  114.         local minute = os.date("%M")
  115.  
  116.         if (tonumber(minute) % poll_minute == 0 and minute ~= last_minute) then
  117.             log_request()
  118.         end
  119.     end
  120. end
  121.  
  122. function love.draw()
  123.     love.graphics.print(([[
  124. Polled for %s values
  125. %s values left to log
  126. Last poll: %s
  127. Last rates: %s/%s
  128. ]]):format(#recorded, #unwritten, unpack(recorded[#recorded] or {1, 2, 3})), 0, 0)
  129. end
  130.  
  131. function love.quit()
  132.     write_log()
  133. end
  134.  
  135. function love.keypressed(key)
  136.     if (key == " ") then
  137.         write_log()
  138.     elseif (key == "return") then
  139.         log_request()
  140.     end
  141. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement