]> git.sesse.net Git - ultimatescore/commitdiff
Use the new subtitle functionality for getting Futatabi status.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 30 Dec 2018 12:17:57 +0000 (13:17 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 30 Dec 2018 12:19:34 +0000 (13:19 +0100)
nageru/ultimate.lua

index 63512bfad9c25cc886585995896ed4239e242124..7a9d97dab637dc006fa08a536706fcfb1e1c10e1 100644 (file)
@@ -1,8 +1,5 @@
 -- Nageru theme for TFK mini-tournament 2017, based on the default theme.
 
-local http_request = require("http.request")
-local cqueues = require("cqueues")
-local cq = cqueues.new()
 local futatabi_server = "http://gruessi.trd.sesse.net:9096"
 
 local state = {
@@ -39,30 +36,6 @@ local state = {
 }
 local NUM_CAMERAS = 6  -- Remember to update neutral_colors, too.
 
--- Update the Futatabi status in the title.
-replay_title = "IPTV"
-cq:wrap(function()
-       local req = http_request.new_from_uri(futatabi_server .. "/queue_status")
-       while true do
-               local headers, stream = req:go()
-               if headers == nil then
-                       replay_title = "IPTV"
-                       print(futatabi_server .. ": Could not connect to get queue_status")
-               elseif headers:get(":status") == "200" then
-                       local body = stream:get_body_as_string()
-                       if body then
-                               replay_title = "IPTV (" .. body .. ")"
-                       else
-                               replay_title = "IPTV"
-                               print(futatabi_server .. ": Empty body on HTTP request")
-                       end
-               else
-                       replay_title = "IPTV"
-                       print(futatabi_server .. ": HTTP error " .. headers:get(":status"))
-               end
-       end
-end)
-
 -- Valid values for live_signal_num and preview_signal_num.
 local INPUT0_SIGNAL_NUM = 0
 local INPUT1_SIGNAL_NUM = 1
@@ -491,6 +464,20 @@ function get_channel_resolution_raw(res)
        end
 end
 
+function get_futatabi_status(str)
+       local num_fields = 0
+       local fields = {}
+       for word in string.gmatch(str, '([^;]+)') do
+               table.insert(fields, word)
+               num_fields = num_fields + 1
+       end
+       if num_fields >= 4 then
+               return fields[4]
+       else
+               return "???"
+       end
+end
+
 -- API ENTRY POINT
 -- Returns the name for each additional channel (starting from 2).
 -- Called at the start of the program, and then each frame for live
@@ -514,8 +501,12 @@ function channel_name(channel)
        elseif signal_num == STATIC_SIGNAL_NUM then
                return "Static picture"
        elseif signal_num == VIDEO_SIGNAL_NUM then
-               -- return "IPTV input (" .. get_channel_resolution(iptv_video:get_signal_num()) .. ")"
-               return replay_title
+               local res = last_resolution[iptv_video:get_signal_num()]
+               if (not res) or res.last_subtitle == nil then
+                       return "IPTV"
+               else
+                       return "IPTV (" .. get_futatabi_status(res.last_subtitle) .. ")"
+               end
        elseif signal_num == OVERLAY_SIGNAL_NUM then
                return "Overlay"
        end
@@ -834,7 +825,8 @@ function fetch_input_resolution(signals, signal_num)
                has_signal = signals:get_has_signal(signal_num),
                is_connected = signals:get_is_connected(signal_num),
                frame_rate_nom = signals:get_frame_rate_nom(signal_num),
-               frame_rate_den = signals:get_frame_rate_den(signal_num)
+               frame_rate_den = signals:get_frame_rate_den(signal_num),
+               last_subtitle = signals:get_last_subtitle(signal_num)
        }
 
        if res.interlaced then