Module: AtCoderFriends::Scraping::Tasks

Included in:
Agent
Defined in:
lib/at_coder_friends/scraping/tasks.rb

Overview

fetch problems from tasks page

Instance Method Summary collapse

Instance Method Details

#fetch_allObject



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/at_coder_friends/scraping/tasks.rb', line 7

def fetch_all
  puts "***** fetch_all #{contest} *****"
  fetch_assignments.map do |q, url|
    pbm = fetch_problem(q, url)
    yield pbm if block_given?
    pbm
  rescue StandardError => e
    puts e
    puts e.backtrace
  end
end

#fetch_assignmentsObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/at_coder_friends/scraping/tasks.rb', line 19

def fetch_assignments
  url = contest_url('tasks')
  puts "fetch list from #{url} ..."
  page = fetch_with_auth(url)
  page
    .search('//table[1]//td[1]//a')
    .each_with_object({}) do |a, h|
      h[a.text] = a[:href]
    end
end

#fetch_problem(q, url) ⇒ Object



30
31
32
33
34
35
# File 'lib/at_coder_friends/scraping/tasks.rb', line 30

def fetch_problem(q, url)
  puts "fetch problem from #{url} ..."
  page = fetch_with_auth(url)
  page.search('br').each { |br| br.replace("\n") }
  Problem.new(q, page)
end