36 lines
1.0 KiB
Lua
36 lines
1.0 KiB
Lua
|
local socket = require("socket")
|
||
|
local http = require("socket.http")
|
||
|
local json = require("vendor.json")
|
||
|
local lume = require("vendor.lume")
|
||
|
|
||
|
local miseryURL = 'http://oodviewer.q3k.me/term/_,'
|
||
|
|
||
|
math.randomseed( os.time() )
|
||
|
|
||
|
function unescape(str)
|
||
|
str = string.gsub( str, '<', '<' )
|
||
|
str = string.gsub( str, '>', '>' )
|
||
|
str = string.gsub( str, '"', '"' )
|
||
|
str = string.gsub( str, ''', "'" )
|
||
|
str = string.gsub( str, '&#(%d+);', function(n) return string.char(n) end )
|
||
|
str = string.gsub( str, '&#x(%d+);', function(n) return string.char(tonumber(n,16)) end )
|
||
|
str = string.gsub( str, '&', '&' ) -- Be sure to do this after all others
|
||
|
return str
|
||
|
end
|
||
|
|
||
|
local r, c, h = http.request(miseryURL)
|
||
|
if c == 200 then
|
||
|
local data = {}
|
||
|
for item, desc in string.gmatch(r, '<li>([^\n]*) <i>([^<]*)</i>') do
|
||
|
data[#data + 1] = {
|
||
|
text = unescape(item:gsub('<[^>]*>', '')),
|
||
|
description = unescape(desc),
|
||
|
}
|
||
|
end
|
||
|
|
||
|
love.thread.getChannel('misery'):push(lume.randomchoice(data))
|
||
|
print("Update finished")
|
||
|
else
|
||
|
print("Update failed")
|
||
|
end
|