local chapter = { number = 0, title = "", length = 0, available = false } local function seconds_to_minutes(total_seconds) local minutes = math.floor(total_seconds / 60) local seconds = total_seconds % 60 return minutes, seconds end local function showChapterTitle() local message = "" if (chapter.available == true) then local minutes, seconds = seconds_to_minutes(chapter.length) local formatted_time = string.format("%02d:%02d", minutes, seconds) message = string.format("Chapter (%s): %s (%s)", chapter.number, chapter.title, formatted_time) else message = "No chapters available" end mp.osd_message(message) end local function chapter_info_update() local chapterList = mp.get_property_native("chapter-list") if not chapterList or #chapterList == 0 then chapter.available = false return end chapter.available = true local chapterCount = (mp.get_property_number("chapter-list/count") or 0) local currentChapterIndex = (mp.get_property_number("chapter") or 0) + 1 chapter.number = currentChapterIndex local currentChapter = chapterList[currentChapterIndex] chapter.title = currentChapter.title or "" local nextChapterIndex = currentChapterIndex + 1 if (nextChapterIndex > chapterCount) then local durationFull = mp.get_property_number("duration/full") or 0 if durationFull ~= 0 then chapter.length = durationFull - currentChapter.time end else local nextChapter = chapterList[nextChapterIndex] chapter.length = nextChapter.time - currentChapter.time end end local function onChapterChange() chapter_info_update() showChapterTitle() end mp.register_event("file-loaded", chapter_info_update) mp.observe_property("chapter", nil, function() onChapterChange() end) mp.add_key_binding(nil, "show-chapter-title", function() showChapterTitle() end) -- don't display the native OSD -- when changing chapters as it overlaps -- with ours but only sometimes -- so it creates this janky feeling mp.add_key_binding("PGUP", "next-chapter", function() mp.command("no-osd add chapter 1") end) mp.add_key_binding("PGDWN", "prev-chapter", function() mp.command("no-osd add chapter -1") end)