class YoutubeAudio::ScriptParser

Public Class Methods

new(script) click to toggle source

@param script [String]

# File lib/youtube_audio/script_parser.rb, line 6
def initialize(script)
  @script = script
end

Public Instance Methods

player_response() click to toggle source

@return [YoutubeAudio::PlayerResponse]

# File lib/youtube_audio/script_parser.rb, line 11
def player_response
  mini_racer_context = MiniRacer::Context.new
  # initialize mandatory variables to can parsed the youtube script
  mini_racer_context.eval('window = {}; function setTimeout() {}')
  # parse youtube script
  mini_racer_context.eval(@script)
  # get player response ...
  response = mini_racer_context.eval('ytInitialPlayerConfig')

  PlayerResponse.new(
    JSON.parse(response['args']['player_response']),
    script_player_url: response['assets']['js']
  )
end