You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.3 KiB
34 lines
1.3 KiB
7 years ago
|
--sets the startime of a youtube video as specified in the "t=HHhMMmSSs" part of the url
|
||
|
--NOTE: This might become obsolete once youtube-dl adds the functionality
|
||
|
|
||
|
local msg = require 'mp.msg'
|
||
|
|
||
|
function youtube_starttime()
|
||
|
url = mp.get_property("path", "")
|
||
|
start = 0
|
||
|
|
||
|
if string.find(url, "youtu%.?be") and
|
||
|
((url:find("http://") == 1) or (url:find("https://") == 1)) then
|
||
|
time = string.match(url, "[#&%?]t=%d*h?%d*m?%d+s?m?h?")
|
||
|
--the time-string can start with #, & or ? followed by t= and the timing parameters
|
||
|
--at least one number needs to be present after t=, followed by h, m, s or nothing (>implies s)
|
||
|
|
||
|
if time then
|
||
|
for pos in string.gmatch(time,"%d+%a?") do
|
||
|
if string.match(pos,"%d+h") then --find out multiplier for
|
||
|
multiplier = 60*60 --hours
|
||
|
elseif string.match(pos,"%d+m") then
|
||
|
multiplier = 60 --minutes
|
||
|
else multiplier = 1 end --seconds
|
||
|
|
||
|
start = start + (string.match(pos,"%d+") * multiplier)
|
||
|
end
|
||
|
|
||
|
msg.info("parsed '" .. time .. "' into '" .. start .. "' seconds")
|
||
|
end
|
||
|
|
||
|
mp.set_property("file-local-options/start",start)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
mp.add_hook("on_load", 50, youtube_starttime)
|