Merge pull request 'Adding support for lua-curl + indentation fix' (#5) from mva/mpv_sponsorblock_minimal:lua-curl into master
Reviewed-on: https://codeberg.org/jouni/mpv_sponsorblock_minimal/pulls/5
This commit is contained in:
		| @@ -4,27 +4,56 @@ | ||||
| -- using data from https://github.com/ajayyy/SponsorBlock | ||||
|  | ||||
| local options = { | ||||
|     API = "https://sponsor.ajay.app/api/skipSegments", | ||||
| 	server = "https://sponsor.ajay.app/api/skipSegments", | ||||
|  | ||||
| 	-- Categories to fetch and skip | ||||
|     categories = '"sponsor","intro","outro","interaction","selfpromo"' | ||||
| 	categories = [["sponsor","intro","outro","interaction","selfpromo"]] | ||||
| } | ||||
|  | ||||
| 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}) | ||||
| local ranges | ||||
|  | ||||
|     	if string.match(sponsors.stdout,"%[(.-)%]") then | ||||
| function getranges() | ||||
| 	local res | ||||
| 	local luacurl_available, cURL = pcall(require,'cURL') | ||||
|  | ||||
| 	local args = { | ||||
| 		([=[categories=[%s]]=]):format(options.categories), | ||||
| 		([=[videoID=%s]=]):format(youtube_id), | ||||
| 	} | ||||
|  | ||||
| 	local API = ("%s?%s"):format(options.server,table.concat(args,"&")) | ||||
|  | ||||
| 	if not(luacurl_available) then -- if Lua-cURL is not available on this system | ||||
| 		local curl_cmd = { | ||||
| 			"curl", | ||||
| 			"-L", | ||||
| 			"-s", | ||||
| 			"-G", | ||||
| 			"-A", "mpv_sponsorblock_minimal/0.0.0", | ||||
| 			API -- use inoptimal method of calling external cURL command | ||||
| 		} | ||||
|  | ||||
| 		local sponsors = mp.command_native{ | ||||
| 			name = "subprocess", | ||||
| 			capture_stdout = true, | ||||
| 			playback_only = false, | ||||
| 			args = curl_cmd | ||||
| 		} | ||||
| 		res = sponsors.stdout | ||||
| 	else -- otherwise use Lua-cURL (binding to libcurl) | ||||
| 		local buf={} | ||||
| 		local c = cURL.easy_init() | ||||
| 		c:setopt_followlocation(1) | ||||
| 		c:setopt_useragent"mpv_sponsorblock_minimal/0.0.0" | ||||
| 		c:setopt_url(API) | ||||
| 		c:setopt_writefunction(function(chunk) table.insert(buf,chunk); return true; end) | ||||
| 		c:perform() | ||||
| 		res = table.concat(buf) | ||||
| 	end | ||||
|  | ||||
| 	if string.match(res,"%[(.-)%]") then | ||||
| 		ranges = {} | ||||
| 		for i in string.gmatch(string.sub(sponsors.stdout,2,-2),"%[(.-)%]") do | ||||
| 		for i in string.gmatch(string.sub(res,2,-2),"%[(.-)%]") do | ||||
| 			k,v = string.match(i,"(%d+.?%d*),(%d+.?%d*)") | ||||
| 			ranges[k] = v | ||||
| 		end | ||||
| @@ -35,13 +64,15 @@ end | ||||
| function skip_ads(name,pos) | ||||
| 	if pos ~= nil then | ||||
| 		for k,v in pairs(ranges) do | ||||
| 			if tonumber(k) <= pos and tonumber(v) > pos then | ||||
| 			k = tonumber(k) | ||||
| 			v = tonumber(v) | ||||
| 			if k <= pos and 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") | ||||
| 				mp.osd_message(("[sponsorblock] skipping forward %ds"):format(math.floor(v-mp.get_property("time-pos")))) | ||||
| 				--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) | ||||
| 				mp.set_property("time-pos",v+0.01) | ||||
| 				return | ||||
| 			end | ||||
| 		end | ||||
| @@ -100,3 +131,4 @@ end | ||||
|  | ||||
| mp.register_event("file-loaded", file_loaded) | ||||
| mp.register_event("end-file", end_file) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user