mirror of
https://github.com/ksyasuda/aniwrapper.git
synced 2024-11-22 03:19:53 -08:00
add skip-intro.lua script and modify setup
This commit is contained in:
parent
a40e673ed3
commit
9e4722da4e
151
skip-intro.lua
Normal file
151
skip-intro.lua
Normal file
@ -0,0 +1,151 @@
|
||||
MAX_SPEED = 100
|
||||
NORMAL_SPEED = 1
|
||||
ONE_SECOND = 1
|
||||
skip = false
|
||||
-- Max noise (dB) and min silence duration (s) to trigger
|
||||
opts = { quietness = -45, duration = 0.85 }
|
||||
|
||||
|
||||
function setOptions()
|
||||
local options = require 'mp.options'
|
||||
options.read_options(opts)
|
||||
end
|
||||
|
||||
function setTime(time)
|
||||
mp.set_property_number('time-pos', time)
|
||||
end
|
||||
|
||||
function getTime()
|
||||
return mp.get_property_native('time-pos')
|
||||
end
|
||||
|
||||
function setSpeed(speed)
|
||||
mp.set_property('speed', speed)
|
||||
end
|
||||
|
||||
function setPause(state)
|
||||
mp.set_property_bool('pause', state)
|
||||
end
|
||||
|
||||
function setMute(state)
|
||||
mp.set_property_bool('mute', state)
|
||||
end
|
||||
|
||||
function initAudioFilter()
|
||||
local af_table = mp.get_property_native('af')
|
||||
af_table[#af_table + 1] = {
|
||||
enabled = false,
|
||||
label = 'silencedetect',
|
||||
name = 'lavfi',
|
||||
params = { graph = 'silencedetect=noise=' .. opts.quietness .. 'dB:d=' .. opts.duration }
|
||||
}
|
||||
mp.set_property_native('af', af_table)
|
||||
end
|
||||
|
||||
function initVideoFilter()
|
||||
local vf_table = mp.get_property_native('vf')
|
||||
vf_table[#vf_table + 1] = {
|
||||
enabled = false,
|
||||
label = 'blackout',
|
||||
name = 'lavfi',
|
||||
params = { graph = '' }
|
||||
}
|
||||
mp.set_property_native('vf', vf_table)
|
||||
end
|
||||
|
||||
function setAudioFilter(state)
|
||||
local af_table = mp.get_property_native('af')
|
||||
if #af_table > 0 then
|
||||
for i = #af_table, 1, -1 do
|
||||
if af_table[i].label == 'silencedetect' then
|
||||
af_table[i].enabled = state
|
||||
mp.set_property_native('af', af_table)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function dim(state)
|
||||
local dim = { width = 0, height = 0 }
|
||||
if state == true then
|
||||
dim.width = mp.get_property_native('width')
|
||||
dim.height = mp.get_property_native('height')
|
||||
end
|
||||
return dim.width .. 'x' .. dim.height
|
||||
end
|
||||
|
||||
function setVideoFilter(state)
|
||||
local vf_table = mp.get_property_native('vf')
|
||||
if #vf_table > 0 then
|
||||
for i = #vf_table, 1, -1 do
|
||||
if vf_table[i].label == 'blackout' then
|
||||
vf_table[i].enabled = state
|
||||
vf_table[i].params = { graph = 'nullsink,color=c=black:s=' .. dim(state) }
|
||||
mp.set_property_native('vf', vf_table)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function silenceTrigger(name, value)
|
||||
if value == '{}' or value == nil then
|
||||
return
|
||||
end
|
||||
|
||||
local skipTime = tonumber(string.match(value, '%d+%.?%d+'))
|
||||
local currTime = getTime()
|
||||
|
||||
if skipTime == nil or skipTime < currTime + ONE_SECOND then
|
||||
return
|
||||
end
|
||||
|
||||
stopSkip()
|
||||
setTime(skipTime)
|
||||
skip = false
|
||||
end
|
||||
|
||||
function setAudioTrigger(state)
|
||||
if state == true then
|
||||
mp.observe_property('af-metadata/silencedetect', 'string', silenceTrigger)
|
||||
else
|
||||
mp.unobserve_property(silenceTrigger)
|
||||
end
|
||||
end
|
||||
|
||||
function startSkip()
|
||||
startTime = getTime()
|
||||
-- This audio filter detects moments of silence
|
||||
setAudioFilter(true)
|
||||
-- This video filter makes fast-forward faster
|
||||
setVideoFilter(true)
|
||||
setAudioTrigger(true)
|
||||
setPause(false)
|
||||
setMute(true)
|
||||
setSpeed(MAX_SPEED)
|
||||
end
|
||||
|
||||
function stopSkip()
|
||||
setAudioFilter(false)
|
||||
setVideoFilter(false)
|
||||
setAudioTrigger(false)
|
||||
setMute(false)
|
||||
setSpeed(NORMAL_SPEED)
|
||||
end
|
||||
|
||||
function keypress()
|
||||
skip = not skip
|
||||
if skip then
|
||||
startSkip()
|
||||
else
|
||||
stopSkip()
|
||||
setTime(startTime)
|
||||
end
|
||||
end
|
||||
|
||||
setOptions(opts)
|
||||
initAudioFilter()
|
||||
initVideoFilter()
|
||||
|
||||
mp.add_key_binding('Tab', 'skip-key', keypress)
|
Loading…
Reference in New Issue
Block a user