aboutsummaryrefslogtreecommitdiffstats
path: root/chapters.lua
diff options
context:
space:
mode:
authorgarret <garret@airmail.cc>2021-09-30 00:23:28 +0100
committergarret <garret@airmail.cc>2021-09-30 00:37:09 +0100
commit04a61982e82a5df1cb2ec77a5d9752782a7c41e0 (patch)
tree35ec751a28b717a7cc6158f84357408173339bff /chapters.lua
parent2a9e07ff9a5f7084d3e2e54ff5d065f9b0a93591 (diff)
downloadaegisub-scripts-04a61982e82a5df1cb2ec77a5d9752782a7c41e0.tar.gz
aegisub-scripts-04a61982e82a5df1cb2ec77a5d9752782a7c41e0.tar.bz2
aegisub-scripts-04a61982e82a5df1cb2ec77a5d9752782a7c41e0.zip
macro folder
the beginning of becoming like every other cartel-aproved script repo in existence
Diffstat (limited to 'chapters.lua')
-rw-r--r--chapters.lua80
1 files changed, 0 insertions, 80 deletions
diff --git a/chapters.lua b/chapters.lua
deleted file mode 100644
index 0dab8bd..0000000
--- a/chapters.lua
+++ /dev/null
@@ -1,80 +0,0 @@
-script_name = "Chapter Generator"
-script_description = "Makes XML chapters for matroska."
-script_author = "garret"
-script_version = "2.0.0"
-
-language = "eng"
-language_ietf = "en"
-
-function ms_to_human(start) -- From Significance
- local timecode=math.floor(start/1000)
- local tc1=math.floor(timecode/60)
- local tc2=timecode%60
- local tc3=start%1000
- local 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 ""
- end
-end
-
-function get_user_path(default_dir)
- local path = aegisub.dialog.save("Save Chapter File", default_dir, "chapters.xml", "XML files|*.xml|All Files|*", false)
- return path
-end
-
-function main(sub)
- local times = {}
- local names = {}
- for i=1,#sub do
- local line = sub[i]
- if line.class == "dialogue" then
- local fx = line.effect
- if fx:match("[Cc]hapter") or fx:match("[Cc]hptr") or fx:match("[Cc]hap") 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 = "<?xml version=\"1.0\"?>\n<!-- <!DOCTYPE Chapters SYSTEM \"matroskachapters.dtd\"> -->\n<Chapters>\n <EditionEntry>\n"
- for j, k in ipairs(times) do
- local humantime = ms_to_human(k)
- local name = names[j]
- chapters = chapters.." <ChapterAtom>\n <ChapterTimeStart>"..humantime.."</ChapterTimeStart>\n <ChapterDisplay>\n <ChapterString>"..name.."</ChapterString>\n <ChapLanguageIETF>"..language_ietf.."</ChapLanguageIETF>\n <ChapterLanguage>"..language.."</ChapterLanguage>\n </ChapterDisplay>\n </ChapterAtom>\n"
- end
- chapters = chapters.." </EditionEntry>\n</Chapters>"
- sane_path = get_sane_path()
- path = get_user_path(sane_path)
- if path ~= nil then
- local chapfile = io.open(path, "w")
- chapfile:write(chapters)
- chapfile:close()
- else
- aegisub.cancel()
- end
-end
-
-aegisub.register_macro(script_name, script_description, main)