mpv SponsorBlock - offline chapterskip
Преамбула:
-
yt-dlpможет вставлять данные из SponsorBlock как чаптеры. -
Для
mpvесть шкрипты, которые могут пропускать главы, но они для этого ломятся смотреть в API SB - мне такое не интересно. -
Есть шкрипты типа
chapterskip- но там нужно самому запиливать обработку SB. Ну я взял тот, что сделан попроще, и на его основе запилил.
Лень заливать в репу, проще результат на лоре запостить. Каждый тип блоков SB можно отдельно за-раскомментировать.
Содержимое блока кода сохранить в .lua файл и покласть в ~/.config/mpv/scripts
require 'mp.options'
local opt = {
patterns = {
"OP","[Oo]pening$", "^[Oo]pening:", "[Oo]pening [Cc]redits",
"ED","[Ee]nding$", "^[Ee]nding:", "[Ee]nding [Cc]redits",
"[Pp]review$"
},
sb_patterns = {
" Sponsor",
"Self Promotion",
"Endcards",
-- "Filler Tangent",
-- "Highlight",
"Interaction Reminder",
-- "Intermission",
-- "Non-Music Section",
-- "Recap"
}
}
read_options(opt)
function check_chapter(_, chapter)
if not chapter then
return
end
if string.match(chapter, "%[SponsorBlock%]") then
print("Found sponsorblock chapter:", chapter)
for _, p in pairs(opt.sb_patterns) do
if string.match(chapter, p) then
print("Skipping chapter:", chapter)
mp.command("no-osd add chapter 1")
return
end
end
end
for _, p in pairs(opt.patterns) do
if string.match(chapter, p) then
print("Skipping chapter:", chapter)
mp.command("no-osd add chapter 1")
return
end
end
end
mp.observe_property("chapter-metadata/by-key/title", "string", check_chapter)
Я никогда ничего сложнее приветмира на луа не писал, если что.