love2d-signage/screens/misery_thread.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, '&lt;', '<' )
str = string.gsub( str, '&gt;', '>' )
str = string.gsub( str, '&quot;', '"' )
str = string.gsub( str, '&apos;', "'" )
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, '&amp;', '&' ) -- 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