|
|
@@ -1,93 +0,0 @@ |
|
|
|
--- |
|
|
|
title: GraphTV |
|
|
|
runtime: shiny |
|
|
|
output: |
|
|
|
html_document |
|
|
|
--- |
|
|
|
|
|
|
|
```{r setup, message = F, warning = F, echo = F} |
|
|
|
library(tidyverse) |
|
|
|
library(httr) |
|
|
|
library(rvest) |
|
|
|
library(plotly) |
|
|
|
library(jsonlite) |
|
|
|
library(knitr) |
|
|
|
|
|
|
|
opts_chunk$set(message = F, |
|
|
|
echo = F, |
|
|
|
warning = F) |
|
|
|
|
|
|
|
key <- "?api_key=32e0ed1416c58777f986f3f33751fc22" |
|
|
|
tmdb_url <- "http://api.themoviedb.org/3/" |
|
|
|
``` |
|
|
|
|
|
|
|
```{r input} |
|
|
|
inputPanel( |
|
|
|
textInput("show_search", "Search show"), |
|
|
|
actionButton("button_search", "Search show"), |
|
|
|
uiOutput("show_choice") |
|
|
|
) |
|
|
|
|
|
|
|
shows <- eventReactive(input$button_search, { |
|
|
|
req(input$show_search) |
|
|
|
|
|
|
|
serie <- input$show_search %>% url_escape |
|
|
|
|
|
|
|
GET(str_c(tmdb_url, "search/tv", key, "&query=", serie)) %>% |
|
|
|
content(as = "text") %>% |
|
|
|
fromJSON -> res |
|
|
|
|
|
|
|
#res$results$poster_path |
|
|
|
|
|
|
|
res$results$id %>% |
|
|
|
as.list %>% |
|
|
|
setNames(res$results$original_name) |
|
|
|
}) |
|
|
|
|
|
|
|
output$show_choice <- renderUI({ |
|
|
|
req(shows()) |
|
|
|
|
|
|
|
selectizeInput("show", "Please choose…", shows()) |
|
|
|
}) |
|
|
|
``` |
|
|
|
|
|
|
|
```{r graph} |
|
|
|
renderPlotly({ |
|
|
|
req(input$show) |
|
|
|
|
|
|
|
show_id <- input$show |
|
|
|
|
|
|
|
GET(str_c(tmdb_url, "tv/", show_id, key)) %>% |
|
|
|
content(as = "text") %>% |
|
|
|
fromJSON -> res |
|
|
|
|
|
|
|
res$backdrop_path |
|
|
|
1:res$number_of_seasons -> seasons |
|
|
|
res$vote_average |
|
|
|
|
|
|
|
seasons %>% |
|
|
|
map(~ GET(str_c(tmdb_url, "tv/", show_id, "/season/", ., key)) %>% |
|
|
|
content(as = "text") %>% |
|
|
|
fromJSON) -> res |
|
|
|
|
|
|
|
res %>% |
|
|
|
map("episodes") %>% |
|
|
|
reduce(bind_rows) %>% |
|
|
|
select(season_number, episode_number, name, still_path, vote_average) -> episodes |
|
|
|
|
|
|
|
episodes %>% |
|
|
|
by(.$season_number, function(x){ |
|
|
|
fit <- lm(vote_average ~ episode_number, data = x) |
|
|
|
x %>% |
|
|
|
plot_ly(hoverinfo = "text", |
|
|
|
text = ~str_c("S", season_number, "E", episode_number, " - ", name, "<br>", |
|
|
|
"Rating: ", vote_average, "<br>")) %>% |
|
|
|
add_trace(data = x, x = ~episode_number, y = ~vote_average, mode = "markers") %>% |
|
|
|
add_trace(data = x, x = ~episode_number, y = fitted(fit), mode = "lines") %>% |
|
|
|
layout(xaxis = list(tick0 = 0, dtick = 1), |
|
|
|
yaxis = list(title = "Rating")) |
|
|
|
}) %>% |
|
|
|
subplot(shareY = T, nrows = 1) %>% |
|
|
|
hide_legend |
|
|
|
}) |
|
|
|
``` |