From e2ae5cd409c1ee4ecc7a91caa8ac8333f0dc8979 Mon Sep 17 00:00:00 2001 From: JanBecker Date: Sun, 11 Apr 2021 19:12:52 +0200 Subject: [PATCH 1/4] Search for Youtube-IDs in local files If a file is downloaded with youtube-dl, the youtube-ID remains in the filename. sponsorblock-minimal should find that ID and skip segments in downloaded youtube-videos. --- sponsorblock_minimal.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sponsorblock_minimal.lua b/sponsorblock_minimal.lua index 9d96ec4..9920d23 100644 --- a/sponsorblock_minimal.lua +++ b/sponsorblock_minimal.lua @@ -55,7 +55,8 @@ function file_loaded() 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-_]+).*") - youtube_id = youtube_id1 or youtube_id2 or youtube_id3 or youtube_id4 + local youtube_id5 = string.match(video_path, ".*-([%w-_]+).*") + youtube_id = youtube_id1 or youtube_id2 or youtube_id3 or youtube_id4 or youtube_id5 if not youtube_id or string.len(youtube_id) < 11 then return end youtube_id = string.sub(youtube_id, 1, 11) From 65e13958f293bee6f31c265dff8245f517f4993f Mon Sep 17 00:00:00 2001 From: Jouni Date: Mon, 12 Apr 2021 19:55:31 +0300 Subject: [PATCH 2/4] add changes from the original mpv sponsorblock --- sponsorblock_minimal.lua | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/sponsorblock_minimal.lua b/sponsorblock_minimal.lua index 9920d23..3d1bac5 100644 --- a/sponsorblock_minimal.lua +++ b/sponsorblock_minimal.lua @@ -50,13 +50,21 @@ function skip_ads(name,pos) end 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_id3 = string.match(video_path, "/watch.*[?&]v=([%w-_]+).*") - local youtube_id4 = string.match(video_path, "/embed/([%w-_]+).*") - local youtube_id5 = string.match(video_path, ".*-([%w-_]+).*") - youtube_id = youtube_id1 or youtube_id2 or youtube_id3 or youtube_id4 or youtube_id5 + local video_path = mp.get_property("path", "") + local video_referer = string.match(mp.get_property("http-header-fields", ""), "Referer:([^,]+)") or "" + + local urls = { + "https?://youtu%.be/([%w-_]+).*", + "https?://w?w?w?%.?youtube%.com/v/([%w-_]+).*", + "/watch.*[?&]v=([%w-_]+).*", + "/embed/([%w-_]+).*", + ".*-([%w-_]+).*" + } + youtube_id = nil + for i,url in ipairs(urls) do + youtube_id = youtube_id or string.match(video_path, url) or string.match(video_referer, url) + end + if not youtube_id or string.len(youtube_id) < 11 then return end youtube_id = string.sub(youtube_id, 1, 11) From f1cf9f475295bfc480188e0fad8e9b0bb27fd3f7 Mon Sep 17 00:00:00 2001 From: JanBecker Date: Wed, 14 Apr 2021 16:38:47 +0200 Subject: [PATCH 3/4] Fixed Error with hypens in Youtube-IDs Changed regex to find the youtube-IDs in filenames like "This\ Epic\ Studio\ Tour\ Almost\ Killed\ Me\!\!-zk97ywS-fGc.mkv", where previously only "fGc" was matched. --- sponsorblock_minimal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sponsorblock_minimal.lua b/sponsorblock_minimal.lua index 9920d23..78dbb03 100644 --- a/sponsorblock_minimal.lua +++ b/sponsorblock_minimal.lua @@ -55,7 +55,7 @@ function file_loaded() 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 youtube_id5 = string.match(video_path, ".*-([%w-_]+).*") + local youtube_id5 = string.match(video_path, "-([%w-_]+)%.") youtube_id = youtube_id1 or youtube_id2 or youtube_id3 or youtube_id4 or youtube_id5 if not youtube_id or string.len(youtube_id) < 11 then return end youtube_id = string.sub(youtube_id, 1, 11) From a6a97fa09ce81bea65ed913d312d5b3427a600cb Mon Sep 17 00:00:00 2001 From: nixx Date: Sat, 7 Aug 2021 15:11:43 +0200 Subject: [PATCH 4/4] Unload ranges and turn off on end of file --- sponsorblock_minimal.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sponsorblock_minimal.lua b/sponsorblock_minimal.lua index 413f60c..cd323dc 100644 --- a/sponsorblock_minimal.lua +++ b/sponsorblock_minimal.lua @@ -77,6 +77,13 @@ function file_loaded() return end +function end_file() + if not ON then return end + mp.unobserve_property(skip_ads) + ranges = nil + ON = false +end + function toggle() if ON then mp.unobserve_property(skip_ads) @@ -91,3 +98,4 @@ function toggle() end mp.register_event("file-loaded", file_loaded) +mp.register_event("end-file", end_file)