From 660dccea48b128b6d2af1861f48c2dd760e455b6 Mon Sep 17 00:00:00 2001 From: garret Date: Sun, 25 Apr 2021 01:00:10 +0100 Subject: add chapter-maker --- chapters.lua | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 chapters.lua diff --git a/chapters.lua b/chapters.lua new file mode 100644 index 0000000..fa81714 --- /dev/null +++ b/chapters.lua @@ -0,0 +1,75 @@ +script_name = "Chapter Generator" +script_description = "makes chapters" +script_author = "garret" +script_version = "2021-04-25" + +language = "eng" +language_ietf = "en" + +function ms_to_human(start) -- From Significance + timecode=math.floor(start/1000) + tc1=math.floor(timecode/60) + tc2=timecode%60 + tc3=start%1000 + tc4="00" + if tc2==60 then tc2=0 tc1=tc1+1 end + if tc1>119 then tc1=tc1-120 tc4="02" end + if tc1>59 then tc1=tc1-60 tc4="01" end + if tc1<10 then tc1="0"..tc1 end + if tc2<10 then tc2="0"..tc2 end + if tc3<100 then tc3="0"..tc3 end + linetime=tc4..":"..tc1..":"..tc2.."."..tc3 + if linetime=="00:00:00.00" then linetime="00:00:00.033" end + return linetime +end + +function get_sane_path() + script_path = aegisub.decode_path("?script") + audio_path = aegisub.decode_path("?audio") + video_path = aegisub.decode_path("?video") + if script_path ~= "?script" then + return script_path + elseif video_path ~= "?video" then + return video_path + elseif audio_path ~= "?audio" then + return audio_path + else + return nil + end +end + +function main(sub) + local times = {} + local names = {} + for i=1,#sub do + local line = sub[i] + if line.class == "dialogue" then + if line.effect == "chapter" then + line.comment = true + table.insert(times, line.start_time) + table.insert(names, line.text) + sub[i] = line + end + end + end + aegisub.set_undo_point(script_name) + local chapters = "\n\n\n\n \n" + for j, k in ipairs(times) do + local humantime = ms_to_human(k) + local name = names[j] + chapters = chapters.." \n "..humantime.."\n \n "..name.."\n "..language_ietf.."\n "..language.."\n \n \n" + end + chapters = chapters.." \n" + path = get_sane_path() + if path ~= nil then + local chapfile = io.open(path.."/chapters.xml", "w") + chapfile:write(chapters) + chapfile:close() + aegisub.log("saved to "..path.."/chapters.xml") + else + aegisub.log("\n\n") + aegisub.log(chapters) + end +end + +aegisub.register_macro(script_name, script_description, main) -- cgit v1.2.3-70-g09d2