mwcrawler 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 535ef5f765febcd8e34046c5913006148e354e4c9d4735709ad4bba9fc30b058
4
- data.tar.gz: f8014655d47a46e88bfeeccca72557341701685402182e6b0b878abfd362e534
3
+ metadata.gz: f261cbbdfe2fcc489def8bbc14a36967ef454190e201b5c1f2c62c160a602ccc
4
+ data.tar.gz: 37253ef7297d23721b6f2a006568227581a2b3423032c98ba431b364d737ec25
5
5
  SHA512:
6
- metadata.gz: 9a2855da03d0feaa6386112e4ede645a5638a2f1d68628f115012220c81d4672959c358bd496853e1a10ce473a493e29cb0f2012803f4c484677ebd4df36b738
7
- data.tar.gz: 34b27e7cbd83e191fb0065ba80b1ee62adcf7086a77e6e690e3fc426d958584420ed7dad110d18a55b402a1fba5408b3895399e7b0c38745332c9dc06fcd2594
6
+ metadata.gz: '02422271583bc57dbfad728ef0897b573fde92020c65bc28bcf1dea3c552bf41cb09f211ed150b4c70196355b70334084d379d892fc91a99594d12af7112e8cf'
7
+ data.tar.gz: e9f8e1ee8b32cd646e5cfb06fa1de71c273518ae3c75fa5338b1c240e29d2cc6d84bba87ed25e8b9a09e6c08f7429d28ebcf11a08bc44f3dc30251851ede7547
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mwcrawler (0.1.0)
4
+ mwcrawler (0.1.2)
5
5
  nokogiri (~> 1.8)
6
6
 
7
7
  GEM
@@ -3,7 +3,7 @@
3
3
  module Mwcrawler
4
4
  # Scraps Classes by campus
5
5
  module Classes
6
- def self.scrap(department_code)
6
+ def self.scrap(department_code, options)
7
7
  courses_links = scrap_courses_links(department_code)
8
8
  rows = []
9
9
  courses_links.each do |course_link|
@@ -12,13 +12,15 @@ module Mwcrawler
12
12
  rows
13
13
  end
14
14
 
15
- private_class_method def self.scrap_courses_links(department_code)
15
+ private
16
+
17
+ def self.scrap_courses_links(department_code)
16
18
  page = Helpers.set_crawler(department_code, 'graduacao/oferta_dis.aspx?cod=', exact: true)
17
19
  page.css('#datatable tr td:nth-child(2) a')
18
20
  .map { |link| link['href'] }
19
21
  end
20
22
 
21
- private_class_method def self.scrap_classes(course_link)
23
+ def self.scrap_classes(course_link)
22
24
  rows = []
23
25
 
24
26
  page = Helpers.set_crawler(course_link, 'graduacao/', exact: true)
@@ -31,7 +33,7 @@ module Mwcrawler
31
33
  end
32
34
  rows
33
35
  end
34
- private_class_method def self.class_row_init(page, name)
36
+ def self.class_row_init(page, name)
35
37
  { department: page.css('#datatable tr:first-child a').text,
36
38
  code: page.css('#datatable')[0].css('tr:nth-child(2) td').text.to_i,
37
39
  course_code: scrap_course_code(page),
@@ -39,18 +41,18 @@ module Mwcrawler
39
41
  name: name }
40
42
  end
41
43
 
42
- private_class_method def self.scrap_course_code(page)
44
+ def self.scrap_course_code(page)
43
45
  course_uri = page.css('#datatable')[0].css('tr:nth-child(3) td a').first['href']
44
46
  Helpers.uri_query_params(course_uri)['cod'].to_i
45
47
  end
46
48
 
47
- private_class_method def self.scrap_credit_hash(page)
49
+ def self.scrap_credit_hash(page)
48
50
  credit_string = page.css('#datatable')[0].css('tr:nth-child(4) td').text
49
51
  credits = credit_string.split('-').map(&:to_i)
50
52
  { theory: credits[0], practical: credits[1], extension: credits[2], study: credits[3] }
51
53
  end
52
54
 
53
- private_class_method def self.scrap_row(row_init, page, count)
55
+ def self.scrap_row(row_init, page, count)
54
56
  row = row_init
55
57
  row.merge(scrap_vacancies(page, count))
56
58
  # HORARIOS
@@ -60,7 +62,7 @@ module Mwcrawler
60
62
  row
61
63
  end
62
64
 
63
- private_class_method def self.scrap_schedules(page, count)
65
+ def self.scrap_schedules(page, count)
64
66
  schedules = page.css('.tabela-oferta')[count]
65
67
  .css('tr td:nth-child(4) .table')
66
68
  .css('td').map(&:text)
@@ -68,7 +70,7 @@ module Mwcrawler
68
70
  Helpers.format_hours(schedules)
69
71
  end
70
72
 
71
- private_class_method def self.scrap_teachers(page, count)
73
+ def self.scrap_teachers(page, count)
72
74
  teachers = page.css('.tabela-oferta')[count]
73
75
  .css('tr td:nth-child(5) td')
74
76
  .map(&:text)
@@ -76,7 +78,7 @@ module Mwcrawler
76
78
  Helpers.format_teachers(teachers)
77
79
  end
78
80
 
79
- private_class_method def self.scrap_vacancies(page, count)
81
+ def self.scrap_vacancies(page, count)
80
82
  {
81
83
  vacancies_total: scrap_vacancy(1, page, count),
82
84
  vacancies_occupied: scrap_vacancy(2, page, count),
@@ -84,7 +86,7 @@ module Mwcrawler
84
86
  }
85
87
  end
86
88
 
87
- private_class_method def self.scrap_vacancy(vacancy_row, page, count)
89
+ def self.scrap_vacancy(vacancy_row, page, count)
88
90
  page.css('.tabela-oferta')[count]
89
91
  .css(".tabela-vagas tr:nth-child(#{vacancy_row}) td:nth-child(3)").text
90
92
  end
@@ -17,7 +17,9 @@ module Mwcrawler
17
17
  rows
18
18
  end
19
19
 
20
- private_class_method def self.scrap_row(courses)
20
+ private
21
+
22
+ def self.scrap_row(courses)
21
23
  row = {}
22
24
  row['type'] = courses.shift
23
25
  row['code'] = courses.shift
@@ -7,7 +7,6 @@ module Mwcrawler
7
7
 
8
8
  SCRAPPERS = {
9
9
  courses: Courses,
10
- classes: Classes,
11
10
  departments: Departments
12
11
  }.freeze
13
12
 
@@ -18,6 +17,11 @@ module Mwcrawler
18
17
  end
19
18
  end
20
19
 
20
+ def classes(department_code, options = { log: false })
21
+ Options.init(options)
22
+ Classes.scrap department_code, options
23
+ end
24
+
21
25
  def subjects(department, options = { log: false })
22
26
  Options.init(options)
23
27
  Subjects.scrap department, options
@@ -6,14 +6,16 @@ module Mwcrawler
6
6
  def self.scrap(code)
7
7
  rows = []
8
8
  page = Helpers.set_crawler(code, 'graduacao/curso_dados.aspx?cod=', exact: true)
9
- curriculums = page.css('.table-responsive h4').map { |item| item.children[0].text }
9
+ curriculums = page.css('.table-responsive h4').map { |item| item.children[0]&.text }
10
10
  page.css('.table-responsive .table').each do |table|
11
11
  rows << scrap_row(curriculums.shift, table)
12
12
  end
13
13
  rows
14
14
  end
15
15
 
16
- private_class_method def self.scrap_row(curriculum_name, table)
16
+ private
17
+
18
+ def self.scrap_row(curriculum_name, table)
17
19
  row = {}
18
20
  row['name'] = curriculum_name
19
21
  row['degree'] = table.css('tr:first td').text
@@ -13,7 +13,9 @@ module Mwcrawler
13
13
  rows
14
14
  end
15
15
 
16
- private_class_method def self.scrap_row(departments)
16
+ private
17
+
18
+ def self.scrap_row(departments)
17
19
  row = {}
18
20
  row['code'] = departments.shift
19
21
  row['acronym'] = departments.shift
@@ -13,24 +13,26 @@ module Mwcrawler
13
13
  end
14
14
  end
15
15
 
16
- private_class_method def self.subject_by_department(department)
16
+ private
17
+
18
+ def self.subject_by_department(department)
17
19
  page = Helpers.set_crawler(department, 'graduacao/oferta_dis.aspx?cod=', exact: true)
18
20
  scrap_row(department, page)
19
21
  end
20
22
 
21
- private_class_method def self.subject_by_id(id)
23
+ def self.subject_by_id(id)
22
24
  page = Helpers.set_crawler(id, 'graduacao/oferta_dados.aspx?cod=', exact: true)
23
25
  row_init_by_id(page)
24
26
  end
25
27
 
26
- private_class_method def self.row_init_by_id(page)
28
+ def self.row_init_by_id(page)
27
29
  { code: page.css('#datatable')[0].css('tr:nth-child(2) td').text.to_i,
28
30
  name: page.css('#datatable')[0].css('tr:nth-child(3) td').text,
29
31
  department: page.css('#datatable tr:first-child a').first['href'].scan(/\d+/)[0].to_i,
30
32
  level: 'graduação' }
31
33
  end
32
34
 
33
- private_class_method def self.scrap_row(dep_code, page)
35
+ def self.scrap_row(dep_code, page)
34
36
  subjects = []
35
37
  length = page.css('#datatable tr td:nth-child(1)').count
36
38
  length.times do |i|
@@ -39,7 +41,7 @@ module Mwcrawler
39
41
  subjects
40
42
  end
41
43
 
42
- private_class_method def self.row_init_by_department(page, dep_code, index)
44
+ def self.row_init_by_department(page, dep_code, index)
43
45
  { code: page.css('#datatable tr td:nth-child(1)').map(&:text)[index].to_i,
44
46
  name: page.css('#datatable tr td:nth-child(2)').map(&:text)[index],
45
47
  department: dep_code.to_i,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mwcrawler
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mwcrawler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danilo de Lima