uri_miner 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 33ae5b126779f8184fa0e0ae5903bb9983e6aed718046799a8c8427a1121965c
4
+ data.tar.gz: 33f005a038724aed05ac14777edf578d76d386e2a18a40f1100239da4f21edc2
5
+ SHA512:
6
+ metadata.gz: 10c4ee41572fd0b8af27790e016c1f8ec024b6afbe3a9b3100139d53593eb459b8a9f5bdeeaf4fa71eca00cdb0a9b652a5c3dc8d354a959105fd9527dce4f75f
7
+ data.tar.gz: dc5c39233648d42049d6282413ad8b3612e8b1815360ac7e9be28d43e5e795747ea77a6ea3628c9476efeffb911541d2fd780e61d928eb6837cc1a91bc1f1b7c
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "mechanize"
4
+
5
+ require "uri_miner/code"
6
+ require "uri_miner/exercise"
7
+ require "uri_miner/login"
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UriMiner
4
+ def self.submit(code: "", id: 1001, lang: 5)
5
+ @agent.get("https://www.urionlinejudge.com.br/judge/pt/runs/add")
6
+
7
+ form = @agent.page.forms.first
8
+ form.field_with(name: "language_id").value = lang
9
+ form.field_with(name: "problem_id").value = id
10
+ form.field_with(name: "source_code").value = code
11
+
12
+ form.submit
13
+ form.buttons.first
14
+
15
+ result
16
+ end
17
+
18
+ # this is shit
19
+ def self.result
20
+ result = "- In queue -"
21
+
22
+ while result.include?("- In queue -")
23
+ sleep(1)
24
+
25
+ @agent.get("https://www.urionlinejudge.com.br/judge/pt/runs/live")
26
+
27
+ page = @agent.page
28
+
29
+ rows = page.css("div#element table tr")
30
+
31
+ rows.each do |row|
32
+ name = row.css("td.wide a").text
33
+ result = row.css("td.semi-wide.answer.aw").text
34
+
35
+ break if name == @name
36
+ end
37
+ break
38
+ end
39
+
40
+ result.squeeze(" ")
41
+ end
42
+
43
+ private_class_method :result
44
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UriMiner
4
+ def self.exercise(id)
5
+ url = "https://www.urionlinejudge.com.br/judge/en/problems/view/#{id}"
6
+
7
+ page = @agent.get(url)
8
+ iframe = @agent.click page.iframes.first
9
+
10
+ {
11
+ name: iframe.search(".header h1").text,
12
+ content: iframe.search(".problem").to_html,
13
+ category: page.search("#page-name-c ul li")[0].text[2..-1].strip,
14
+ level: page.search("#page-name-c ul li")[2].text[2..-1].strip[6..-1],
15
+ limit_time: page.search("#page-name-c ul li")[6].text[2..-1].strip[17..-1].split[0],
16
+ limit_mem: page.search("#page-name-c ul li")[8].text[2..-1].strip[14..-1].split[0]
17
+ }
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UriMiner
4
+ @agent = Mechanize.new
5
+
6
+ def self.config(email: "", password: "", name: "")
7
+ @name = name
8
+ @email = email
9
+ @password = password
10
+ end
11
+
12
+ def self.login(email: @email, password: @password)
13
+ @agent.get("https://www.urionlinejudge.com.br/judge/pt/login")
14
+
15
+ form = @agent.page.forms.first
16
+ form.field_with(name: "email").value = email
17
+ form.field_with(name: "password").value = password
18
+
19
+ form.submit
20
+ form.buttons.first
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: uri_miner
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Breno Nunes
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-01-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mechanize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.7.6
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.7.6
27
+ description: Gem to submmit codes for Uri-online-judge
28
+ email: breno.nunesgalvao@protonmail.ch
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/uri_miner.rb
34
+ - lib/uri_miner/code.rb
35
+ - lib/uri_miner/exercise.rb
36
+ - lib/uri_miner/login.rb
37
+ homepage: ''
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubygems_version: 3.1.4
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: Uri-online-judge exercises miner
60
+ test_files: []