|
|
@@ -15,20 +15,21 @@ server <- function(input, output, session) |
|
|
|
|
|
|
|
if(str_length(input$show_search) > 3) |
|
|
|
{ |
|
|
|
src_sqlite("im.db") %>% |
|
|
|
tbl(sql(str_c("select tconst, primaryTitle from basics where titleType == 'tvSeries' and primaryTitle like '%", input$show_search, "%'"))) %>% |
|
|
|
collect -> res |
|
|
|
|
|
|
|
res$tconst %>% |
|
|
|
as.list %>% |
|
|
|
setNames(res$primaryTitle) |
|
|
|
src_sqlite("imdb.db") %>% |
|
|
|
tbl(sql(str_c("select distinct(id), seriesTitle, startYear from imdb where seriesTitle like '%", input$show_search, "%'"))) %>% |
|
|
|
collect %>% |
|
|
|
arrange(desc(startYear)) |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
output$show_choice <- renderUI({ |
|
|
|
req(shows()) |
|
|
|
|
|
|
|
selectizeInput("show", "Please choose…", shows()) |
|
|
|
shows()$id %>% |
|
|
|
setNames(str_c(shows()$seriesTitle, " (", shows()$startYear, ")")) -> |
|
|
|
choices |
|
|
|
|
|
|
|
selectizeInput("show", "Please choose…", choices) |
|
|
|
}) |
|
|
|
|
|
|
|
output$show_graph <- renderPlotly({ |
|
|
@@ -36,38 +37,19 @@ server <- function(input, output, session) |
|
|
|
|
|
|
|
show_id <- input$show |
|
|
|
|
|
|
|
src_sqlite("im.db") %>% |
|
|
|
tbl("episodes") %>% |
|
|
|
filter(parentTconst == show_id) %>% |
|
|
|
select(-parentTconst) %>% |
|
|
|
collect -> episodes |
|
|
|
|
|
|
|
src_sqlite("im.db") %>% |
|
|
|
tbl("basics") %>% |
|
|
|
filter(tconst %in% episodes$tconst) %>% |
|
|
|
collect -> titles |
|
|
|
|
|
|
|
src_sqlite("im.db") %>% |
|
|
|
tbl("ratings") %>% |
|
|
|
filter(tconst %in% episodes$tconst) %>% |
|
|
|
collect -> ratings |
|
|
|
|
|
|
|
episodes %>% |
|
|
|
left_join(titles) %>% |
|
|
|
left_join(ratings) %>% |
|
|
|
select(-tconst, -titleType) %>% |
|
|
|
mutate_at(vars(seasonNumber, episodeNumber, averageRating, numVotes), as.numeric) %>% |
|
|
|
filter(!is.na(numVotes)) -> eps |
|
|
|
|
|
|
|
eps %>% |
|
|
|
by(.$seasonNumber, function(x){ |
|
|
|
fit <- lm(averageRating ~ episodeNumber, data = x) |
|
|
|
src_sqlite("imdb.db") %>% |
|
|
|
tbl("imdb") %>% |
|
|
|
filter(id == show_id) %>% |
|
|
|
collect %>% |
|
|
|
mutate_at(vars(season, episode, averageRating, numVotes), as.numeric) %>% |
|
|
|
by(.$season, function(x){ |
|
|
|
fit <- lm(averageRating ~ episode, data = x) |
|
|
|
x %>% |
|
|
|
plot_ly(hoverinfo = "text", |
|
|
|
text = ~str_c("S", seasonNumber, "E", episodeNumber, " - ", primaryTitle, "<br>", |
|
|
|
text = ~str_c("S", season, "E", episode, " - ", episodeTitle, "<br>", |
|
|
|
"Rating: ", averageRating, " (", numVotes, " votes)<br>")) %>% |
|
|
|
add_trace(data = x, x = ~episodeNumber, y = ~averageRating, mode = "markers") %>% |
|
|
|
add_trace(data = x, x = ~episodeNumber, y = fitted(fit), mode = "lines") %>% |
|
|
|
add_trace(data = x, x = ~episode, y = ~averageRating, mode = "markers") %>% |
|
|
|
add_trace(data = x, x = ~episode, y = fitted(fit), mode = "lines") %>% |
|
|
|
layout(xaxis = list(tick0 = 0, dtick = 1), |
|
|
|
yaxis = list(title = "Rating")) |
|
|
|
}) %>% |
|
|
|