summaryrefslogtreecommitdiffstats
path: root/TOOLS/lua/youtube-starttime.lua
blob: ea8e9abe3fe1055f320d185a56ab5750e03ec56e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
--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)