Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local http = require("socket.http")
- local ltn12 = require("ltn12")
- http.TIMEOUT = 3
- local file_pattern = "tc_%s.csv"
- local tc_url = "http://www.roblox.com/My/Money.aspx"
- local tc_cookies = ""
- local poll_minute = 5
- local poll_accuracy = 5
- local poll_check_elapsed = 0
- local auto_log_after = 1
- local recorded = {}
- local unwritten = {}
- local last_date = os.date("%y.%m.%d")
- local last_minute = os.date("%M")
- function date_label()
- return os.date("%y.%m.%d")
- end
- function time_label()
- return os.time()
- end
- function do_request(url, headers)
- local response = {}
- local result, code, header, result_word = http.request({
- url = url,
- sink = ltn12.sink.table(response),
- headers = headers
- })
- return table.concat(response)
- end
- function tc_request(retry)
- local response = do_request(tc_url, {cookie = tc_cookies})
- local bux, tix = response:match('<div class="Rate">([%d%.]+)/([%d%.]+)</div>')
- local num_bux, num_tix = tonumber(bux), tonumber(tix)
- if (num_tix == 0 or num_bux == 0) then
- if (retry) then
- return tc_request()
- else
- return
- end
- else
- return num_bux, num_tix
- end
- end
- function log_request()
- local bux, tix = tc_request(true)
- local request_time = time_label()
- if (bux and tix) then
- last_minute = os.date("%M")
- if (date_label() ~= last_date) then
- write_log()
- last_date = date_label()
- end
- local log_data = {request_time, bux, tix}
- table.insert(recorded, log_data)
- table.insert(unwritten, log_data)
- print(unpack(log_data))
- if (#unwritten >= auto_log_after) then
- write_log()
- end
- end
- end
- function write_log()
- local out = love.filesystem.newFile(file_pattern:format(last_date))
- if (out:open("a")) then
- local outstring = ""
- for key, value in next, unwritten do
- outstring = outstring .. string.format("%s,%s,%s\n", unpack(value))
- end
- unwritten = {}
- out:write(outstring)
- end
- out:close()
- end
- function love.load()
- if (love.filesystem.isFile("cookie.txt")) then
- tc_cookies = love.filesystem.read("cookie.txt")
- end
- log_request()
- end
- function love.update(delta)
- poll_check_elapsed = poll_check_elapsed + delta
- if (poll_check_elapsed >= poll_accuracy) then
- poll_check_elapsed = poll_check_elapsed - poll_accuracy
- local minute = os.date("%M")
- if (tonumber(minute) % poll_minute == 0 and minute ~= last_minute) then
- log_request()
- end
- end
- end
- function love.draw()
- love.graphics.print(([[
- Polled for %s values
- %s values left to log
- Last poll: %s
- Last rates: %s/%s
- ]]):format(#recorded, #unwritten, unpack(recorded[#recorded] or {1, 2, 3})), 0, 0)
- end
- function love.quit()
- write_log()
- end
- function love.keypressed(key)
- if (key == " ") then
- write_log()
- elseif (key == "return") then
- log_request()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement