From 0a0602660905de9203643a3f642a8ec77fa2f901 Mon Sep 17 00:00:00 2001 From: Juan Barros Date: Thu, 14 Mar 2019 13:36:16 -0300 Subject: [PATCH 1/3] =?UTF-8?q?Adiciona=20composi=C3=A7=C3=A3o=20de=20comi?= =?UTF-8?q?ss=C3=A3o=20em=20senado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- R/colunas_constants.R | 4 ++++ R/comissoes.R | 46 +++++++++++++++++++++++++++++++++++++++++++ R/constants.R | 1 + 3 files changed, 51 insertions(+) create mode 100644 R/comissoes.R diff --git a/R/colunas_constants.R b/R/colunas_constants.R index 9e6aca7..17ce7ee 100644 --- a/R/colunas_constants.R +++ b/R/colunas_constants.R @@ -251,5 +251,9 @@ # Comissões .COLNAMES_COMISSOES_SENADO <- c("CARGO"="character","num.x"="integer","PARTIDO"="character","UF"="character","TIPO_VAGA"="character", "PARLAMENTAR.x"="character") +# Composição Camara +.COLNAMES_COMPOSICAO_CAMARA <- c("cargo"="character","id"="character","nome"="character","partido"="character", + "uf"="character","situacao"="character") + # Deferimento .COLNAMES_DEFRIMENTO <- c("proposicao_id"="character","deferimento"="character") diff --git a/R/comissoes.R b/R/comissoes.R new file mode 100644 index 0000000..da177b0 --- /dev/null +++ b/R/comissoes.R @@ -0,0 +1,46 @@ +#' @title Fetches comissions on Champber +#' @description Fetches a dataframe containing information about the comission requested +#' @param sigla Comissao's id +#' @return Returns a dataframe containing information about the comission requested +#' fetch_composicao_comissoes_camara('cmads') +fetch_composicao_comissoes_camara <- function(sigla_comissao) { + orgaos_camara <- + fetch_orgaos_camara() %>% + dplyr::mutate_all(as.character) %>% + dplyr::filter(trimws(sigla) == toupper(sigla_comissao)) %>% + dplyr::select(uri) %>% head(1) + + column_names <- names(.COLNAMES_COMPOSICAO_CAMARA) + df <- data.frame(matrix(ncol = length(column_names), nrow = 0)) + + if (nrow(orgaos_camara) == 0) { + warning("Comissão não encontrada") + } else { + id <- stringr::str_extract(orgaos_camara[[1]], '\\d+(?!.*\\d)') + eventos_list <- .get_from_url(.CAMARA_WEBSITE_LINK, .COMPOSICAO_CAMARA_PATH, paste0('IDOrgao=', id))$content %>% + rawToChar() %>% + XML::xmlParse() %>% + XML::xmlToList() + + df <- + eventos_list %>% + jsonlite::toJSON() %>% + jsonlite::fromJSON() %>% + magrittr::extract2('membros') %>% + tibble::as.tibble() %>% + t() %>% + as.data.frame() %>% + tibble::rownames_to_column("VALUE") + } + + names(df) <- names(.COLNAMES_COMPOSICAO_CAMARA) + df %>% + rowwise() %>% + dplyr::mutate(partido = ifelse(length(partido) == 0, "", partido)) %>% + dplyr::mutate(uf = ifelse(length(uf) == 0, "", uf)) %>% + dplyr::mutate(id = ifelse(length(id) == 0, "", id)) %>% + tidyr::unnest() %>% + dplyr::arrange(nome) %>% + .assert_dataframe_completo(.COLNAMES_COMPOSICAO_CAMARA) %>% + .coerce_types(.COLNAMES_COMPOSICAO_CAMARA) +} \ No newline at end of file diff --git a/R/constants.R b/R/constants.R index a570913..559e313 100644 --- a/R/constants.R +++ b/R/constants.R @@ -27,6 +27,7 @@ # Path site Câmara .APENSADAS_CAMARA_PATH <- "/SitCamaraWS/Proposicoes.asmx/ObterProposicaoPorID" +.COMPOSICAO_CAMARA_PATH <- "/SitCamaraWS/Orgaos.asmx/ObterMembrosOrgao" .EMENDAS_SUBSTITUTIVOS_REDACAOFINAL_CAMARA_PATH <- "/SitCamaraWS/Orgaos.asmx/ObterEmendasSubstitutivoRedacaoFinal" .EVENTOS_PROPOSICAO_CAMARA_PATH <- "/proposicoesWeb/sessoes_e_reunioes" From c882e0135d6278d6f05a1048344cf6ad4b574aa7 Mon Sep 17 00:00:00 2001 From: Juan Barros Date: Mon, 18 Mar 2019 16:02:10 -0300 Subject: [PATCH 2/3] =?UTF-8?q?Retorna=20composi=C3=A7ao=20de=20comissao?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- R/comissoes.R | 8 +++++--- tests/testthat/test_comissoes.R | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 tests/testthat/test_comissoes.R diff --git a/R/comissoes.R b/R/comissoes.R index da177b0..c93cef5 100644 --- a/R/comissoes.R +++ b/R/comissoes.R @@ -3,11 +3,13 @@ #' @param sigla Comissao's id #' @return Returns a dataframe containing information about the comission requested #' fetch_composicao_comissoes_camara('cmads') -fetch_composicao_comissoes_camara <- function(sigla_comissao) { +fetch_composicao_comissoes_camara <- function(sigla_comissao, apelido_comissao) { + print(sigla_comissao) orgaos_camara <- fetch_orgaos_camara() %>% dplyr::mutate_all(as.character) %>% - dplyr::filter(trimws(sigla) == toupper(sigla_comissao)) %>% + dplyr::filter(trimws(sigla) == toupper(sigla_comissao) & + trimws(apelido) == toupper(apelido_comissao)) %>% dplyr::select(uri) %>% head(1) column_names <- names(.COLNAMES_COMPOSICAO_CAMARA) @@ -43,4 +45,4 @@ fetch_composicao_comissoes_camara <- function(sigla_comissao) { dplyr::arrange(nome) %>% .assert_dataframe_completo(.COLNAMES_COMPOSICAO_CAMARA) %>% .coerce_types(.COLNAMES_COMPOSICAO_CAMARA) -} \ No newline at end of file +} diff --git a/tests/testthat/test_comissoes.R b/tests/testthat/test_comissoes.R new file mode 100644 index 0000000..b11ec9f --- /dev/null +++ b/tests/testthat/test_comissoes.R @@ -0,0 +1,22 @@ +context("Comissoes") + +SIGLA_ID <<- c("ccjc", "cft", "cdc", "cdeics", "cctci", "cme", "capadr", "cpd") + +APELIDO <<- c("CONSTITUIÇÃO E JUSTIÇA E DE CIDADANIA", "FINANÇAS E TRIBUTAÇÃO", + "DEFESA DO CONSUMIDOR", "DESENVOLV. ECONÔMICO, INDÚSTRIA, COMÉRCIO E SERV.", + "CIÊNCIA E TECNOLOGIA, COMUNICAÇÃO E INFORMÁTICA", + "MINAS E ENERGIA", "AGRICULTURA, PECUÁRIA, ABASTECIMENTO DESENV. RURAL", + "DEFESA DOS DIREITOS DAS PESSOAS COM DEFICIÊNCIA") + +test_that('fetch_composicao_comissoes_camara() returns valid dataframe', { + df_sigla_apelido <- tibble::tribble(~ sigla, ~ apelido, + SIGLA_ID, APELIDO) %>% + tidyr::unnest() + + get_is_empty <- function(sigla, apelido) { + nrow(fetch_composicao_comissoes_camara(sigla, apelido)) != 0 + } + expect_true( + all(purrr::map2(df_sigla_apelido$sigla, df_sigla_apelido$apelido, + ~ get_is_empty(.x, .y)))) +}) From 54d4bde2351925279c760f4f51837bc6fc935a73 Mon Sep 17 00:00:00 2001 From: Jair Guedes Date: Tue, 19 Mar 2019 09:30:30 -0300 Subject: [PATCH 3/3] Adiciona o dplyr ao rowwise --- R/comissoes.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/comissoes.R b/R/comissoes.R index c93cef5..d514637 100644 --- a/R/comissoes.R +++ b/R/comissoes.R @@ -37,7 +37,7 @@ fetch_composicao_comissoes_camara <- function(sigla_comissao, apelido_comissao) names(df) <- names(.COLNAMES_COMPOSICAO_CAMARA) df %>% - rowwise() %>% + dplyr::rowwise() %>% dplyr::mutate(partido = ifelse(length(partido) == 0, "", partido)) %>% dplyr::mutate(uf = ifelse(length(uf) == 0, "", uf)) %>% dplyr::mutate(id = ifelse(length(id) == 0, "", id)) %>%