Class: YoutubeAudio::ScriptParser

Inherits:
Object
  • Object
show all
Defined in:
lib/youtube_audio/script_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(script) ⇒ ScriptParser

Returns a new instance of ScriptParser.

Parameters:

  • script (String)


6
7
8
# File 'lib/youtube_audio/script_parser.rb', line 6

def initialize(script)
  @script = script
end

Instance Method Details

#player_responseYoutubeAudio::PlayerResponse



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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