From 0b05f44ff7d9483bba8d02e71fa842ec808cca63 Mon Sep 17 00:00:00 2001 From: Mike Lowis Date: Thu, 14 Mar 2024 14:47:19 -0400 Subject: [PATCH] added save and restor of state of channel --- atv/lib/atv/channel.rb | 25 ++++++++++++++++++++++--- atv/lib/atv/player.rb | 10 ++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/atv/lib/atv/channel.rb b/atv/lib/atv/channel.rb index 461b096..35cfe9d 100644 --- a/atv/lib/atv/channel.rb +++ b/atv/lib/atv/channel.rb @@ -4,15 +4,12 @@ module ATV @name = name @db = db @selectors = selectors - @time = 0 @index = 0 @queue = [] @current = files[@index] if files.length > 0 end - - def update(playing) return false if !@current || items.length == 0 @time += 1 if playing @@ -45,6 +42,28 @@ module ATV } end + def export_state() + { + "name" => @name, + "time" => @time, + "index" => @index, + "queue" => @queue, + "current" => @current + } + end + + def import_state(state) + # "name" is ignored so we ensure the config value is used. + if @name == state["name"] then + @time = state["time"] + @index = state["index"] + @queue = state["queue"] + @current = state["current"] + else + puts "Rejecting channel state import: #{@name} != #{state["name"]}" + end + end + def items() # pp filedata[:tree] { "items" => filedata[:tree] } diff --git a/atv/lib/atv/player.rb b/atv/lib/atv/player.rb index f1c269f..d22ad01 100644 --- a/atv/lib/atv/player.rb +++ b/atv/lib/atv/player.rb @@ -5,13 +5,23 @@ module ATV @channel = 0 @channels = channels @playing = true + if File.exist? "/tmp/atv.json" + data = JSON.parse(File.read("/tmp/atv.json")) + data.each_with_index {|e, i| channels[i].import_state e } + end end def update() + export_data = [] updated = false @channels.each do |c| updated ||= c.update(@playing) + export_data << c.export_state + end + File.open("/tmp/atv.json", "wb") do |f| + f.write JSON.dump(export_data) end + pp export_data updated end -- 2.52.0