politicosbr 2.1.2 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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