From 4a068267a3421e986ac762d41e9f81afb9d9381d Mon Sep 17 00:00:00 2001 From: sophie Date: Sat, 12 Jul 2025 09:18:13 +0000 Subject: [PATCH] Add bink.lua --- bink.lua | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 bink.lua diff --git a/bink.lua b/bink.lua new file mode 100644 index 0000000..f640782 --- /dev/null +++ b/bink.lua @@ -0,0 +1,81 @@ +-- follow the instructions on statuscafe.lua or last.lua +function shuffle(tbl) + for i = #tbl, 2, -1 do + local j = math.random(i) + tbl[i], tbl[j] = tbl[j], tbl[i] + end + return tbl +end +local function drawImage(monitor, image, x, y, palette) + for _, frame in ipairs(image) do + for y, row in ipairs(frame) do + monitor.setCursorPos(1, y) + monitor.blit(table.unpack(row)) + end + if frame.palette then for i = 0, #frame.palette do + local c = frame.palette[i] + if type(c) == "table" then monitor.setPaletteColor(2^i, table.unpack(c)) + else monitor.setPaletteColor(2^i, c) end + end end + if image.animation then sleep(frame.duration or image.secondsPerFrame or 0.05) end + end + monitor.setBackgroundColor(colors.black) + monitor.setTextColor(colors.white) + --monitor.clear() + monitor.setCursorPos(1, 1) + --for i = 0, 15 do monitor.setPaletteColor(2^i, monitor.nativePaletteColor(2^i)) end +end + +local binkies = textutils.unserialiseJSON('[["https://sad.ovh","sadovh.png"],["https://unnick.mice.tel","unnick.png"],["https://github.com/NotNite/eightyeightthirtyone","eighteightthirtyone.png"],["https://onz.ee","shame.png"],["https://moosyu.github.io","moosyu.gif"],["https://trademarkhell.net/","tm.png"],["https://thinliquid.dev","lqd.png"],["https://joosh.nekoweb.org/","joosh.gif"],["https://ctrlaustin.nekoweb.org","ctrlaustin.gif"],["https://satorikeiko.surge.sh","satorikeiko.png"],["https://nekoaerospace.nekoweb.org","nekoaerospace.png"],["https://derg.rest","tom.png"],["https://sillylaird.nekoweb.org/","sillylairdb.png"],["https://2rin.nekoweb.org","2rin.gif"],["https://status.cafe","statuscafe.png"],["https://windigone.nekoweb.org","windigone.gif"],["https://eye.nekoweb.org","eye.gif"],["https://yumeo.nekoweb.org","yumeo.gif"],["https://bee.nekoweb.org/","bee.png"],["https://ultrakill.nekoweb.org/","ultrakill.png"],["https://immjs.dev","immjs.gif"],["https://lel.nekoweb.org","lel.gif"],["https://lunaui.nekoweb.org","lunaui.gif"],["https://amoebalous.net","amoebalous.gif"],["https://darkosparko.nekoweb.org/","darkosparko.png"],["https://rice.place/","rice.place.gif"],["https://max.nekoweb.org/","maxpixels.gif"],["https://giikis2.nekoweb.org","giikis2.png"],["insane.gif","piracy.gif","dsb.gif","universe.gif","css.png","vscbutton.gif","ezgif.gif"]]') + +local display = {} +local currDisplay = 0 + + +local monitor = peripheral.find("monitor") +monitor.clear() + monitor.setTextScale(0.5) + +monitor.setCursorPos(2,2) +monitor.write("Loading..") + +for i, pair in ipairs(binkies) do + if type(pair) == "table" and #pair == 2 then + local url = pair[1] + local image = "https://sad.ovh/assets/binkies/" .. pair[2] + currDisplay = currDisplay + 1 + display[currDisplay] = image + end +end + +shuffle(display) + +local id = os.startTimer(15) +while true do + _, id = os.pullEvent('timer') + currDisplay = currDisplay + 1 + if currDisplay > #display then + currDisplay = 1 + shuffle(display) + end + + monitor.clear() + monitor.setCursorPos(2,2) + monitor.write("Loading..") + + local req = http.post({ + url = "https://sanjuuni.sad.ovh/render", + body = textutils.serialiseJSON({ + ["imageUrl"] = display[currDisplay] + }), + headers = { + ["Content-Type"] = "application/json", + ["Authorization"] = "<..>" + } + }) + + local data = req.readAll() -- actually read the data. + data = textutils.unserialize(data) -- convert the string file data into a usable lua object + drawImage(monitor, data, 0, 0) + id = os.startTimer(15) +end \ No newline at end of file