politicosbr 2.1.2 → 2.2.0

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
  SHA1:
3
- metadata.gz: 8bcb44deff893d673fb12b09a06364785d15ed19
4
- data.tar.gz: e813a37abebf38d9bdfb1e7f2cb925a9a9840a43
3
+ metadata.gz: 345f11fc99bd33e7ea2fa782a8bf41373d9f642c
4
+ data.tar.gz: d35b603c6eb6a9098b550a9449bcdb9d957f320d
5
5
  SHA512:
6
- metadata.gz: 3374811abbdbb61a045ce0fae6c4424034b0b528dc451f8e482daf624ede3f7c2de2b4bba2041dde12329643a7dcc686b227ffeb8edbfd1d3d2d39e449d3210d
7
- data.tar.gz: 9c93c594e560af2afd1f3b7456d21ad6255c37518b0ec319030e7f96ed698be232b7e47d9c4048935b5b1e206ed84f96e5041af2efc82a7b44f4f7dfec923fcc
6
+ metadata.gz: 3c3eb8f2d5005bc82d0c5945ba98e6badeb72a1bc4f39fe0eb54c7d0ed19d9bbd590fb1010d6f998e061f4e431f16bb56bb4d672a0649dbad10039a38056bc19
7
+ data.tar.gz: 56fdb51bf360e02cc1f1afdb2e9b03d7e97335ab8c4216c2051059dcd48bfd344d03373cf80fb32dfb361f9f7806e0dcd330a4d8b9414982a31da360cd9aaa72
@@ -2,13 +2,14 @@
2
2
 
3
3
  require 'politicosbr'
4
4
 
5
- puts "####### DEPUTADOS #######"
6
- puts PoliticosBR.deputados
5
+ ##puts '####### DEPUTADOS #######'
6
+ ##puts PoliticosBR.deputados
7
7
 
8
- puts "####### SENADORES #######"
9
- puts PoliticosBR.senadores
10
-
11
- puts "####### TODOS #######"
12
- puts PoliticosBR.todos
8
+ ##puts '####### SENADORES #######'
9
+ ##puts PoliticosBR.senadores
13
10
 
11
+ ##puts '####### TODOS #######'
12
+ ##puts PoliticosBR.todos
14
13
 
14
+ puts '####### Deputados Estaduais #######'
15
+ puts PoliticosBR.deputados_estaduais('rn')
@@ -2,15 +2,18 @@ require 'open-uri'
2
2
  require 'nokogiri'
3
3
  require 'httparty'
4
4
  require 'roo-xls'
5
+ require 'rot13'
6
+
7
+ require 'politicosbr/constants'
8
+ require 'politicosbr/estaduais'
9
+ require 'politicosbr/vereadores'
5
10
 
6
11
  module PoliticosBR
7
- DEPUTADOS_URL = 'http://www.camara.gov.br/internet/deputado/deputado.xls'
8
- SENADORES_URL = 'http://www25.senado.leg.br/web/senadores/em-exercicio/-/e/por-nome'
9
12
 
10
13
  def self.deputados
11
14
  deputados = Array.new
12
15
 
13
- source = HTTParty.get(DEPUTADOS_URL)
16
+ source = HTTParty.get(PoliticosBR::DEPUTADOS_URL)
14
17
 
15
18
  tempfile = Tempfile.new('deputados.xls').tap do |f|
16
19
  f.write(source.to_s.force_encoding('UTF-8'))
@@ -21,16 +24,16 @@ module PoliticosBR
21
24
  (2..spreadsheet.last_row).each do |i|
22
25
  row = spreadsheet.row(i)
23
26
 
24
- deputado = OpenStruct.new
25
- deputado.tipo = 'deputado'
26
- deputado.nome = row[0].upcase
27
- deputado.partido = row[1]
28
- deputado.estado = row[2]
29
- deputado.mandato = ''
30
- deputado.fones = "(61) #{row[11]} | (61) #{row[12]}"
31
- deputado.email = row[13]
27
+ politico = OpenStruct.new
28
+ politico.tipo = 'deputado'
29
+ politico.nome = row[0].upcase
30
+ politico.partido = row[1]
31
+ politico.estado = row[2]
32
+ politico.mandato = ''
33
+ politico.fones = "(61) #{row[11]} | (61) #{row[12]}"
34
+ politico.email = row[13]
32
35
 
33
- deputados.push(deputado)
36
+ deputados.push(politico)
34
37
  end
35
38
 
36
39
  deputados
@@ -39,20 +42,20 @@ module PoliticosBR
39
42
  def self.senadores
40
43
  senadores = Array.new
41
44
 
42
- doc = Nokogiri::HTML(open(SENADORES_URL))
45
+ doc = Nokogiri::HTML(open(PoliticosBR::SENADORES_URL))
43
46
  rows = doc.xpath('//table[@id="senadoresemexercicio-tabela-senadores"]/tbody/tr')
44
47
 
45
48
  rows.each do |row|
46
- senador = OpenStruct.new
47
- senador.tipo = 'senador'
48
- senador.nome = row.at_xpath('td[1]/a/text()').to_s.strip.upcase
49
- senador.partido = row.at_xpath('td[2]/text()').to_s.strip
50
- senador.estado = row.at_xpath('td[3]/text()').to_s.strip
51
- senador.mandato = row.at_xpath('td[4]/text()').to_s.strip
52
- senador.fones = row.at_xpath('td[5]/text()').to_s.strip
53
- senador.email = row.at_xpath('td[6]/text()').to_s.strip
54
-
55
- senadores.push(senador)
49
+ politico = OpenStruct.new
50
+ politico.tipo = 'senador'
51
+ politico.nome = row.at_xpath('td[1]/a/text()').to_s.strip.upcase
52
+ politico.partido = row.at_xpath('td[2]/text()').to_s.strip
53
+ politico.estado = row.at_xpath('td[3]/text()').to_s.strip
54
+ politico.mandato = row.at_xpath('td[4]/text()').to_s.strip
55
+ politico.fones = row.at_xpath('td[5]/text()').to_s.strip
56
+ politico.email = row.at_xpath('td[6]/text()').to_s.strip
57
+
58
+ senadores.push(politico)
56
59
  end
57
60
 
58
61
  senadores
@@ -61,7 +64,12 @@ module PoliticosBR
61
64
  def self.todos
62
65
  all = deputados
63
66
  all.push(*senadores)
64
-
65
67
  all
66
68
  end
69
+
70
+ def self.deputados_estaduais(estado)
71
+ method_name = "deputados_estaduais_#{estado}"
72
+ method(method_name).call
73
+ end
74
+
67
75
  end
@@ -0,0 +1,39 @@
1
+ module PoliticosBR
2
+
3
+ ## URL to get the spreadesheet with the list of federal representatives
4
+ DEPUTADOS_URL = 'http://www.camara.gov.br/internet/deputado/deputado.xls'
5
+
6
+ ## URL to get the list the senators in Brazilian congress
7
+ SENADORES_URL = 'http://www25.senado.leg.br/web/senadores/em-exercicio/-/e/por-nome'
8
+
9
+ ## Hash containing the list of URLs to get the lists of state representatives in Brazilian states
10
+ DEPS_ESTADUAIS = { ac: 'http://www.al.ac.leg.br/?page_id=2064',
11
+ al: 'http://sapl.al.al.leg.br/consultas/parlamentar/parlamentar_index_html',
12
+ am: 'http://www.ale.am.gov.br/deputados/',
13
+ ap: 'http://www.al.ap.gov.br/pagina.php?pg=exibir_legislatura&idlegislatura=7',
14
+ ba: 'http://www.al.ba.gov.br/deputados/Deputados.php',
15
+ ce: 'http://www.al.ce.gov.br/index.php/deputados/nomes-e-historico',
16
+ df: 'http://www.cl.df.gov.br/deputados',
17
+ es: 'http://www.al.es.gov.br/novo_portal/',
18
+ go: 'http://al.go.leg.br/deputado/',
19
+ ma: 'http://www.al.ma.leg.br/deputados/',
20
+ mg: 'http://www.almg.gov.br/deputados/conheca_deputados/index.html',
21
+ ms: 'http://www.al.ms.gov.br/tabid/471/Default.aspx',
22
+ mt: 'http://www.al.mt.gov.br/deputados',
23
+ pa: 'http://www.alepa.pa.gov.br/Principal#representantes',
24
+ pb: 'http://www.al.pb.gov.br/deputados',
25
+ pe: 'http://www.alepe.pe.gov.br/parlamentares/',
26
+ pi: 'http://www.alepi.pi.gov.br/deputados_inc.php?idMenu=11',
27
+ pr: 'http://www.alep.pr.gov.br/deputados',
28
+ rj: 'http://www.alerj.rj.gov.br/Deputados/QuemSao',
29
+ rn: 'http://www.al.rn.gov.br/portal/atuallegislatura',
30
+ ro: 'http://www.al.ro.leg.br/institucional/parlamentares-1',
31
+ rr: 'http://www.al.rr.leg.br/portal/deputados/7-legislatura',
32
+ rs: 'http://www.al.rs.gov.br/deputados/ListadeDeputados.aspx',
33
+ sc: 'http://www.alesc.sc.gov.br/portal_alesc/todos-deputados',
34
+ se: 'http://www.al.se.gov.br/deputados/',
35
+ sp: 'http://www.al.sp.gov.br/alesp/deputados-estaduais/',
36
+ to: 'http://www.al.to.gov.br/perfil' }
37
+
38
+
39
+ end
@@ -0,0 +1,122 @@
1
+ module PoliticosBR
2
+
3
+ # Métodos para os estados
4
+
5
+ # Paraná
6
+ def self.deputados_estaduais_pr
7
+ deputados = Array.new
8
+ url = PoliticosBR::DEPS_ESTADUAIS[:pr]
9
+ doc = Nokogiri::HTML(open(url))
10
+ rows = doc.xpath('//ul/li')
11
+ rows.each do |row|
12
+ nome = row.at_xpath('span/a/text()').to_s.strip.upcase
13
+ if (!nome.empty?) then
14
+ politico = OpenStruct.new
15
+ politico.tipo = 'deputado'
16
+ politico.estado = 'PR'
17
+ politico.nome = nome
18
+ politico.url = row.at_xpath('span/a/@href').to_s.strip
19
+ politico.partido = row.at_xpath('span/text()[normalize-space()]').to_s.strip
20
+
21
+ docdetails = Nokogiri::HTML(open(politico.url))
22
+ politico.fones = docdetails.xpath('//div[contains(@class, "redes")]/p[3]/text()[normalize-space()]').to_s.strip
23
+ politico.email = Rot13.rotate(docdetails.xpath('//div[contains(@class, "redes")]/p[4]/a/text()[normalize-space()]').to_s.strip)
24
+
25
+ deputados.push(politico)
26
+ end
27
+ end
28
+ deputados
29
+ end
30
+
31
+ # Rio de Janeiro
32
+ def self.deputados_estaduais_rj
33
+ deputados = Array.new
34
+ url = PoliticosBR::DEPS_ESTADUAIS[:rj]
35
+ url_split = url.split('/')
36
+ base_url = "#{url_split[0]}//#{url_split[2]}"
37
+ doc = Nokogiri::HTML(open(url))
38
+ rows = doc.xpath('//div[contains(@class, "controle_deputado")]')
39
+ rows.each do |row|
40
+ politico = OpenStruct.new
41
+ politico.tipo = 'deputado'
42
+ politico.estado = 'RJ'
43
+ politico.nome = row.at_xpath('div[2]/div[2]/a/text()').to_s.strip
44
+ url_relativa_split = row.at_xpath('div[2]/div[2]/a/@href').to_s.strip.split('/')
45
+ url_relativa = "/#{url_relativa_split[2]}/#{url_relativa_split[3]}/#{url_relativa_split[4]}"
46
+ politico.partido = row.at_xpath('div[2]/div/text()').to_s.strip
47
+ politico.url = "#{base_url}#{url_relativa}"
48
+
49
+ docdetails = Nokogiri::HTML(open(politico.url))
50
+ basedocdetails = docdetails.xpath('//div[contains(@class, "descricao")]')
51
+ politico.fones = basedocdetails.at_xpath('p[3]/text()').to_s.strip
52
+ politico.email = basedocdetails.xpath('p[4]/text()').to_s.strip
53
+
54
+ deputados.push(politico)
55
+ end
56
+ deputados
57
+ end
58
+
59
+ # Rio Grande do Sul
60
+ def self.deputados_estaduais_rs
61
+ deputados = Array.new
62
+ url = PoliticosBR::DEPS_ESTADUAIS[:rs]
63
+ doc = Nokogiri::HTML(open(url))
64
+ rows = doc.xpath('//div[contains(@id, "dnn_ctr657_ModuleContent")]/div')
65
+ rows.each do |row|
66
+ politico = OpenStruct.new
67
+ politico.tipo = 'deputado'
68
+ politico.estado = 'RS'
69
+ politico.nome = row.at_xpath('a/text()').to_s.strip.upcase
70
+ politico.partido = row.at_xpath('span[1]/text()').to_s.strip
71
+ politico.email = row.at_xpath('span[2]/text()').to_s.strip
72
+ politico.fones = row.at_xpath('span[3]/text()').to_s.strip
73
+ deputados.push(politico)
74
+ end
75
+ deputados
76
+ end
77
+
78
+ # Santa Catarina
79
+ def self.deputados_estaduais_sc
80
+ deputados = Array.new
81
+ url = PoliticosBR::DEPS_ESTADUAIS[:sc]
82
+ doc = Nokogiri::HTML(open(url))
83
+ rows = doc.xpath('//table/tbody/tr')
84
+ rows.each do |row|
85
+ politico = OpenStruct.new
86
+ politico.tipo = 'deputado'
87
+ politico.estado = 'SC'
88
+ politico.nome = row.at_xpath('td[1]/span/a/text()').to_s.strip.upcase
89
+ politico.partido = row.at_xpath('td[2]/text()').to_s.strip
90
+ politico.email = row.at_xpath('td[3]/div/ul/li/p/a/text()').to_s.strip
91
+ politico.fones = row.at_xpath('td[5]/ul/li/p/text()').to_s.strip
92
+ deputados.push(politico)
93
+ end
94
+ deputados
95
+ end
96
+
97
+ # São Paulo
98
+ def self.deputados_estaduais_sp
99
+ deputados = Array.new
100
+ url = PoliticosBR::DEPS_ESTADUAIS[:sp]
101
+ url_split = url.split('/')
102
+ base_url = "#{url_split[0]}//#{url_split[2]}"
103
+ doc = Nokogiri::HTML(open(url))
104
+ rows = doc.xpath('//table/tbody/tr')
105
+ rows.each do |row|
106
+ politico = OpenStruct.new
107
+ politico.tipo = 'deputado'
108
+ politico.estado = 'SP'
109
+ politico.nome = row.at_xpath('td[1]/a/text()').to_s.strip
110
+ politico.url = "#{base_url}#{row.at_xpath('td[1]/a/@href').to_s.strip}"
111
+ politico.partido = row.at_xpath('td[4]/text()').to_s.strip
112
+
113
+ docdetails = Nokogiri::HTML(open(politico.url))
114
+ politico.fones = docdetails.xpath('//div[contains(@id, "infoGeral")]/p[12]/text()').to_s.strip
115
+ politico.email = docdetails.xpath('//div[contains(@id, "infoGeral")]/p[17]/text()').to_s.strip
116
+
117
+ deputados.push(politico)
118
+ end
119
+ deputados
120
+ end
121
+
122
+ end
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: politicosbr
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edvaldo Silva de Almeida Jr. (edvaldoajunior@gmail.com)
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-04-12 00:00:00.000000000 Z
12
+ date: 2016-05-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -71,6 +71,26 @@ dependencies:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
73
  version: 1.0.0
74
+ - !ruby/object:Gem::Dependency
75
+ name: rot13
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '0.1'
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 0.1.3
84
+ type: :runtime
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.1'
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 0.1.3
74
94
  description: Uma gem para obter listas atualizadas com os dados de deputados federais
75
95
  e senadores brasileiros.
76
96
  email: edvaldoajunior@gmail.com
@@ -82,6 +102,9 @@ files:
82
102
  - Rakefile
83
103
  - bin/politicosbr
84
104
  - lib/politicosbr.rb
105
+ - lib/politicosbr/constants.rb
106
+ - lib/politicosbr/estaduais.rb
107
+ - lib/politicosbr/vereadores.rb
85
108
  homepage: https://github.com/EdDeAlmeidaJr/politicosbr
86
109
  licenses:
87
110
  - MIT