class AtCoderVcFriends::Scraping::Agent
scraping agent for virtual contest
Public Instance Methods
fetch_all_vc(contest_url) { |pbm| ... }
click to toggle source
# File lib/at_coder_vc_friends/scraping/agent.rb, line 9 def fetch_all_vc(contest_url) puts '***** fetch_all_vc *****' fetch_assignments_vc(contest_url).map do |pbm_url| pbm = fetch_problem_vc(pbm_url) yield pbm if block_given? pbm end end
fetch_assignments_vc(contest_url)
click to toggle source
# File lib/at_coder_vc_friends/scraping/agent.rb, line 18 def fetch_assignments_vc(contest_url) puts "fetch list from #{contest_url} ..." page = agent.get(contest_url) page .search('//table[1]//thead//a') .map { |a| a[:href] } end
fetch_problem_vc(pbm_url)
click to toggle source
# File lib/at_coder_vc_friends/scraping/agent.rb, line 26 def fetch_problem_vc(pbm_url) m = pbm_url.match('/contests/(?<contest>.+)/tasks/(?<task>.+)') contest = m[:contest] key = task_key(pbm_url) q = "#{contest}##{key}" fetch_problem(q, pbm_url) end
post_submit(q, lang, src)
click to toggle source
Calls superclass method
# File lib/at_coder_vc_friends/scraping/agent.rb, line 43 def post_submit(q, lang, src) super(q.split('#')[1], lang, src) end
task_key(pbm_url)
click to toggle source
# File lib/at_coder_vc_friends/scraping/agent.rb, line 34 def task_key(pbm_url) tasks_url = File.dirname(pbm_url) page = fetch_with_auth(tasks_url) page .search('//table[1]//td[1]//a') .find { |a| pbm_url.end_with?(a[:href]) } .text end