pause issue - mpv-jellyfin - MPV script for adding an interface for Jellyfin.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit afadb0cc8bc8a0222580fe00b0ba1e5d8ceb4b37
(DIR) parent 107154084659d8f8946741de6817f81374f8c389
(HTM) Author: EmperorPenguin18 <60635017+EmperorPenguin18@users.noreply.github.com>
Date: Thu, 23 May 2024 15:57:41 -0400
pause issue
Diffstat:
M scripts/jellyfin.lua | 82 +++++++++++--------------------
1 file changed, 28 insertions(+), 54 deletions(-)
---
(DIR) diff --git a/scripts/jellyfin.lua b/scripts/jellyfin.lua
@@ -16,18 +16,16 @@ local connected = false
local shown = false
local user_id = ""
local api_key = ""
-local library_id = nil
-local library_selection = 1
-local title_id = nil
-local title_selection = 1
-local season_id = nil
-local season_selection = 1
-local video_id = ""
-local selection = 1
+
+local parent_id = {"", "", ""}
+local selection = {1, 1, 1}
+local layer = 1
+
local items = {}
local ow, oh, op = 0, 0, 0
+local video_id = ""
-local toggle_overlay
+local toggle_overlay -- function
local function send_request(method, url)
if connected then
@@ -61,15 +59,15 @@ end
local function update_data()
overlay.data = ""
for _, item in ipairs(items) do
- if _ > selection - (53 / op) then
- if _ < selection + (20 * op) then
+ if _ > selection[layer] - (53 / op) then
+ if _ < selection[layer] + (20 * op) then
local index
if item.IndexNumber and item.IsFolder == false then
index = item.IndexNumber..". "
else
index = ""
end
- if _ == selection then
+ if _ == selection[layer] then
overlay.data = overlay.data.."{\\fs16}{\\c&HFF&}"..index..item.Name.."\n"
else
overlay.data = overlay.data.."{\\fs16}"..index..item.Name.."\n"
@@ -78,7 +76,8 @@ local function update_data()
end
end
overlay:update()
- local id = items[selection].Id
+
+ local id = items[selection[layer]].Id
local width = math.floor(ow/3)
local height = 0
local filepath = ""
@@ -128,18 +127,11 @@ end
local function update_overlay()
overlay.data = "{\\fs16}Loading..."
overlay:update()
- local result
- if not library_id then
- result = send_request("GET", options.url.."/Items?api_key="..api_key.."&userID="..user_id)
- elseif not title_id then
- result = send_request("GET", options.url.."/Items?api_key="..api_key.."&userID="..user_id.."&parentId="..library_id.."&sortBy=SortName")
- elseif not season_id then
- result = send_request("GET", options.url.."/Items?api_key="..api_key.."&userID="..user_id.."&parentId="..title_id)
+ if layer == 2 then
+ items = send_request("GET", options.url.."/Items?api_key="..api_key.."&userID="..user_id.."&parentId="..parent_id[layer].."&sortBy=SortName").Items
else
- result = send_request("GET", options.url.."/Items?api_key="..api_key.."&userID="..user_id.."&parentId="..season_id)
+ items = send_request("GET", options.url.."/Items?api_key="..api_key.."&userID="..user_id.."&parentId="..parent_id[layer]).Items
end
- items = result.Items
- heights = {}
ow, oh, op = mp.get_osd_size()
update_data()
end
@@ -151,54 +143,36 @@ end
local function play_video()
toggle_overlay()
mp.commandv("loadfile", options.url.."/Videos/"..video_id.."/stream?static=true&api_key="..api_key)
- mp.set_property("force-media-title", items[selection].Name)
+ mp.set_property("force-media-title", items[selection[layer]].Name)
end
local function key_up()
- selection = selection - 1
- if selection == 0 then selection = table.getn(items) end
+ selection[layer] = selection[layer] - 1
+ if selection[layer] == 0 then selection[layer] = table.getn(items) end
update_data()
end
local function key_right()
- if items[selection].IsFolder == false then
- video_id = items[selection].Id
+ if items[selection[layer]].IsFolder == false then
+ video_id = items[selection[layer]].Id
play_video()
else
- if not library_id then
- library_id = items[selection].Id
- library_selection = selection
- elseif not title_id then
- title_id = items[selection].Id
- title_selection = selection
- elseif not season_id then
- season_id = items[selection].Id
- season_selection = selection
- end
- selection = 1
+ layer = layer + 1 -- shouldn't get too big
+ parent_id[layer] = items[selection[layer-1]].Id
+ selection[layer] = 1
update_overlay()
end
end
local function key_down()
- selection = selection + 1
- if selection > table.getn(items) then selection = 1 end
+ selection[layer] = selection[layer] + 1
+ if selection[layer] > table.getn(items) then selection[layer] = 1 end
update_data()
end
local function key_left()
- if not library_id then
- return
- elseif not title_id then
- library_id = nil
- selection = library_selection
- elseif not season_id then
- title_id = nil
- selection = title_selection
- else
- season_id = nil
- selection = season_selection
- end
+ if layer == 1 then return end
+ layer = layer - 1
update_overlay()
end
@@ -258,4 +232,4 @@ os.execute("mkdir -p "..options.image_path)
mp.add_periodic_timer(1, check_percent)
mp.add_key_binding("Ctrl+j", "jf", toggle_overlay)
mp.observe_property("osd-width", "number", width_change)
-mp.register_event("file-loaded", unpause)
+mp.register_event("end-file", unpause)