Skip to content

Instantly share code, notes, and snippets.

@willnet
Last active April 20, 2023 09:28
Show Gist options
  • Select an option

  • Save willnet/8a446aae5248033c6e9012eb937a11d8 to your computer and use it in GitHub Desktop.

Select an option

Save willnet/8a446aae5248033c6e9012eb937a11d8 to your computer and use it in GitHub Desktop.

Revisions

  1. willnet revised this gist Apr 20, 2023. 1 changed file with 19 additions and 13 deletions.
    32 changes: 19 additions & 13 deletions video.rb
    Original file line number Diff line number Diff line change
    @@ -2,17 +2,23 @@
    require 'base64'

    browser = Ferrum::Browser.new(logger: File.open('/tmp/hoge.log', 'w'))
    browser.on('Page.screencastFrame') do |params, index, total|
    File.open("/tmp/#{Time.now.strftime('%Y%m%d%H%M%S%L.jpeg')}", 'w') do |f|
    f.write(Base64.decode64(params['data']))

    Dir.mktmpdir do |dir|
    browser.on('Page.screencastFrame') do |params, index, total|
    File.open("#{dir}/#{Time.now.strftime('%Y%m%d%H%M%S%L.jpeg')}", 'w') do |f|
    f.write(Base64.decode64(params['data']))
    end
    browser.page.command('Page.screencastFrameAck', sessionId: params['sessionId'])
    rescue
    warn $!
    end
    browser.page.command('Page.screencastFrameAck', sessionId: params['sessionId'])
    end
    browser.go_to("https://google.com")
    browser.page.command('Page.startScreencast', format: 'jpeg', quality: 50, everyNthFramge: 5)
    input = browser.at_xpath("//input[@name='q']")
    input.focus.type("hoge", :Enter)
    sleep 1
    browser.page.command('Page.stopScreencast')
    browser.reset
    browser.quit
    browser.go_to("https://google.com")
    browser.page.command('Page.startScreencast', format: 'jpeg', quality: 50, everyNthFramge: 5)
    input = browser.at_xpath("//textarea[@name='q']")
    input.focus.type("hoge", :Enter)
    sleep 1
    browser.page.command('Page.stopScreencast')
    browser.reset
    browser.quit
    system("ffmpeg -f image2 -pattern_type glob -framerate 5 -i '#{dir}/*.jpeg' #{Time.now.strftime('%Y%m%d%H%M%S%L')}.mp4")
    end
  2. willnet created this gist Jan 20, 2023.
    18 changes: 18 additions & 0 deletions video.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    require 'ferrum'
    require 'base64'

    browser = Ferrum::Browser.new(logger: File.open('/tmp/hoge.log', 'w'))
    browser.on('Page.screencastFrame') do |params, index, total|
    File.open("/tmp/#{Time.now.strftime('%Y%m%d%H%M%S%L.jpeg')}", 'w') do |f|
    f.write(Base64.decode64(params['data']))
    end
    browser.page.command('Page.screencastFrameAck', sessionId: params['sessionId'])
    end
    browser.go_to("https://google.com")
    browser.page.command('Page.startScreencast', format: 'jpeg', quality: 50, everyNthFramge: 5)
    input = browser.at_xpath("//input[@name='q']")
    input.focus.type("hoge", :Enter)
    sleep 1
    browser.page.command('Page.stopScreencast')
    browser.reset
    browser.quit