Merge branches 'vapoursynth' and 'fixes' into feature

This commit is contained in:
arch1t3cht 2023-07-31 23:55:51 +02:00
commit 239d585512
2 changed files with 11 additions and 6 deletions

View File

@ -100,7 +100,7 @@ function io.open(fname, mode)
local file = assert(orig_open("nul", "rb")) local file = assert(orig_open("nul", "rb"))
if ffi.C._wfreopen(wfname, wmode, file) == nil then if ffi.C._wfreopen(wfname, wmode, file) == nil then
local msg, errno = select(2, file:close()) local msg, errno = select(2, file:close())
return nil, fname .. ": " .. msg, errno return nil, fname .. ": " .. tostring(msg), errno
end end
return file return file

View File

@ -29,9 +29,8 @@ import os
import os.path import os.path
import re import re
from enum import Enum from enum import Enum
from tkinter.messagebox import askyesno
from collections import deque from collections import deque
from typing import Any, Dict, List, Tuple from typing import Any, Dict, List, Tuple, Callable
import vapoursynth as vs import vapoursynth as vs
core = vs.core core = vs.core
@ -224,8 +223,15 @@ class GenKeyframesMode(Enum):
ASK = 2 ASK = 2
def ask_gen_keyframes(_: str) -> bool:
from tkinter.messagebox import askyesno
return askyesno("Generate Keyframes", \
"No keyframes file was found for this video file.\nShould Aegisub detect keyframes from the video?\nThis will take a while.", default="no")
def get_keyframes(filename: str, clip: vs.VideoNode, fallback: str | List[int], def get_keyframes(filename: str, clip: vs.VideoNode, fallback: str | List[int],
generate: GenKeyframesMode = GenKeyframesMode.ASK, **kwargs: Any) -> str | List[int]: generate: GenKeyframesMode = GenKeyframesMode.ASK,
ask_callback: Callable = ask_gen_keyframes, **kwargs: Any) -> str | List[int]:
""" """
Looks for a keyframes file for the given filename. Looks for a keyframes file for the given filename.
If no file was found, this function can generate a keyframe file for the given clip next If no file was found, this function can generate a keyframe file for the given clip next
@ -244,8 +250,7 @@ def get_keyframes(filename: str, clip: vs.VideoNode, fallback: str | List[int],
if not os.path.exists(kffilename): if not os.path.exists(kffilename):
if generate == GenKeyframesMode.NEVER: if generate == GenKeyframesMode.NEVER:
return fallback return fallback
if generate == GenKeyframesMode.ASK and not askyesno("Generate Keyframes", \ if generate == GenKeyframesMode.ASK and not ask_callback(filename):
"No keyframes file was found for this video file.\nShould Aegisub detect keyframes from the video?\nThis will take a while.", default="no"):
return fallback return fallback
vs.core.log_message(vs.MESSAGE_TYPE_INFORMATION, "No keyframes file found, detecting keyframes...\n") vs.core.log_message(vs.MESSAGE_TYPE_INFORMATION, "No keyframes file found, detecting keyframes...\n")