R/policy_mps.R

#' Отримайте короткий опис політики
#'
#' @param id Вектор, який містить id політик (має складатись щонайменше з одного елементу). За замовчуванням має значення '1', що відповідає тестовій політиці.
#'
#' @param key Ваш персональний ключ API, отриманий на rada4you.org
#'
#' @return Датафрейм, що складається з чотирьох змінних для кожної політики: id, name, description, provisional
#'
#' @export

policy_mps <- function(id = 1, key) {

  details <- data.frame()

  for(i in id) {

    request <- httr::GET(url = "https://rada4you.org/",
                         path = paste0("api/v1/policies/", i, ".json"),
                         query = list(key = key))

    if(httr::status_code(request) != 200) {

      stop(
        message(paste('Помилка. Код відповіді сервера: '), httr::status_code(request)))

    } else {

      response <- httr::content(request, as = 'text')

      json <- jsonlite::fromJSON(response)

      detail <- data.frame(policy_id = json$id,
                           policy_name = json$name,
                           description = json$description,
                           provisional = json$provisional,
                           id = json$people_comparisons$person$id,
                           mp = paste(json$people_comparisons$person$latest_member$name$first, json$people_comparisons$person$latest_member$name$last),
                           party = json$people_comparisons$person$latest_member$party,
                           electorate = json$people_comparisons$person$latest_member$electorate,
                           agreement = json$people_comparisons$agreement,
                           voted = json$people_comparisons$voted,
                                                                  stringsAsFactors = F
      )

      details <- rbind.data.frame(details, detail)

      details$agreement <- as.numeric(details$agreement)

      library(magrittr)

      details$party <- details$party %>%
        stringr::str_replace_all(pattern = "Фракція Політичної партії \"НАРОДНИЙ ФРОНТ\"",
                                 replacement = 'Народний фронт') %>%
        stringr::str_replace_all(pattern = "Фракція ПАРТІЇ \"БЛОК ПЕТРА ПОРОШЕНКА\"",
                                 replacement = 'Блок Петра Порошенка') %>%
        stringr::str_replace_all(pattern = "Фракція політичної партії \"Всеукраїнське об'єднання \"Батьківщина\" у Верховній Раді України",
                                 replacement = 'ВО "Батьківщина"') %>%
        stringr::str_replace_all(pattern = "Фракція Радикальної партії Олега Ляшка" ,
                                 replacement = 'Радикальна партія Олега Ляшка') %>%
        stringr::str_replace_all(pattern = "Група \"Воля народу\"" ,
                                 replacement = 'група "Воля народу"') %>%
        stringr::str_replace_all(pattern = "Фракція Політичної партії \"Об'єднання \"САМОПОМІЧ\""  ,
                                 replacement = 'Об’єднання "Самопоміч"') %>%
        stringr::str_replace_all(pattern = "Група \"Партія \"Відродження\""  ,
                                 replacement = 'група "Відродження"') %>%
        stringr::str_replace_all(pattern = "Фракція Політичної партії \"Опозиційний блок\" у Верховній Раді України восьмого скликання",
                                 replacement = 'Опозиційний блок')

      detach(package:magrittr)

    }

  }


  return(details)

}
savchukidze/rada4you1 documentation built on May 9, 2019, 7:38 a.m.