mpv: Fix sponsorblock code and formatting
Fixed global variable naming (capitalized) and let code be formatted by formatter.
This commit is contained in:
parent
485730ba83
commit
a3b00c4693
1 changed files with 39 additions and 33 deletions
|
@ -5,7 +5,6 @@
|
|||
--
|
||||
-- original from https://codeberg.org/jouni/mpv_sponsorblock_minimal
|
||||
-- adapted for local playback skipping and some refactoring by me
|
||||
|
||||
local options = {
|
||||
API = "https://sponsor.ajay.app/api/skipSegments",
|
||||
|
||||
|
@ -15,36 +14,39 @@ local options = {
|
|||
|
||||
local function getranges()
|
||||
local args = {
|
||||
"curl",
|
||||
"-s",
|
||||
"-d",
|
||||
"videoID="..youtube_id,
|
||||
"-d",
|
||||
"categories=["..options.categories.."]",
|
||||
"-G",
|
||||
options.API}
|
||||
local sponsors = mp.command_native({name = "subprocess", capture_stdout = true, playback_only = false, args = args})
|
||||
"curl", "-s", "-d", "videoID=" .. Youtube_id, "-d",
|
||||
"categories=[" .. options.categories .. "]", "-G", options.API
|
||||
}
|
||||
local sponsors = mp.command_native({
|
||||
name = "subprocess",
|
||||
capture_stdout = true,
|
||||
playback_only = false,
|
||||
args = args
|
||||
})
|
||||
|
||||
if string.match(sponsors.stdout,"%[(.-)%]") then
|
||||
ranges = {}
|
||||
for i in string.gmatch(string.sub(sponsors.stdout,2,-2),"%[(.-)%]") do
|
||||
k,v = string.match(i,"(%d+.?%d*),(%d+.?%d*)")
|
||||
ranges[k] = v
|
||||
if string.match(sponsors.stdout, "%[(.-)%]") then
|
||||
Ranges = {}
|
||||
for i in string.gmatch(string.sub(sponsors.stdout, 2, -2), "%[(.-)%]") do
|
||||
local k, v = string.match(i, "(%d+.?%d*),(%d+.?%d*)")
|
||||
Ranges[k] = v
|
||||
end
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local function skip_ads(name,pos)
|
||||
local function skip_ads(name, pos)
|
||||
if pos ~= nil then
|
||||
for k,v in pairs(ranges) do
|
||||
for k, v in pairs(Ranges) do
|
||||
if tonumber(k) <= pos and tonumber(v) > pos then
|
||||
--this message may sometimes be wrong
|
||||
--it only seems to be a visual thing though
|
||||
mp.osd_message("[sponsorblock] skipping forward "..math.floor(tonumber(v)-mp.get_property("time-pos")).."s")
|
||||
--need to do the +0.01 otherwise mpv will start spamming skip sometimes
|
||||
--example: https://www.youtube.com/watch?v=4ypMJzeNooo
|
||||
mp.set_property("time-pos",tonumber(v)+0.01)
|
||||
-- this message may sometimes be wrong
|
||||
-- it only seems to be a visual thing though
|
||||
mp.osd_message("[sponsorblock] skipping forward " ..
|
||||
math.floor(
|
||||
tonumber(v) - mp.get_property("time-pos")) ..
|
||||
"s")
|
||||
-- need to do the +0.01 otherwise mpv will start spamming skip sometimes
|
||||
-- example: https://www.youtube.com/watch?v=4ypMJzeNooo
|
||||
mp.set_property("time-pos", tonumber(v) + 0.01)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
@ -54,19 +56,23 @@ end
|
|||
|
||||
local function file_loaded()
|
||||
local video_path = mp.get_property("path")
|
||||
local youtube_id1 = string.match(video_path, "https?://youtu%.be/([%w-_]+).*")
|
||||
local youtube_id2 = string.match(video_path, "https?://w?w?w?%.?youtube%.com/v/([%w-_]+).*")
|
||||
local youtube_id1 = string.match(video_path,
|
||||
"https?://youtu%.be/([%w-_]+).*")
|
||||
local youtube_id2 = string.match(video_path,
|
||||
"https?://w?w?w?%.?youtube%.com/v/([%w-_]+).*")
|
||||
local youtube_id3 = string.match(video_path, "/watch.*[?&]v=([%w-_]+).*")
|
||||
local youtube_id4 = string.match(video_path, "/embed/([%w-_]+).*")
|
||||
local localytfile = string.match(video_path, "-([%a%d%-_]+)%.[mw][kpe][v4b][m]?$")
|
||||
youtube_id = youtube_id1 or youtube_id2 or youtube_id3 or youtube_id4 or localytfile
|
||||
if not youtube_id or string.len(youtube_id) < 11 then return end
|
||||
youtube_id = string.sub(youtube_id, 1, 11)
|
||||
local localytfile = string.match(video_path,
|
||||
"-([%a%d%-_]+)%.[mw][kpe][v4b][m]?$")
|
||||
Youtube_id = youtube_id1 or youtube_id2 or youtube_id3 or youtube_id4 or
|
||||
localytfile
|
||||
if not Youtube_id or string.len(Youtube_id) < 11 then return end
|
||||
Youtube_id = string.sub(Youtube_id, 1, 11)
|
||||
|
||||
getranges()
|
||||
if ranges then
|
||||
if Ranges then
|
||||
ON = true
|
||||
mp.add_key_binding("b","sponsorblock",toggle)
|
||||
mp.add_key_binding("b", "sponsorblock", toggle)
|
||||
mp.observe_property("time-pos", "native", skip_ads)
|
||||
end
|
||||
return
|
||||
|
|
Loading…
Reference in a new issue