Browse Source

Changes logic to use local imdb db

imdb
Maxime Wack 6 years ago
parent
commit
6f84d9d850
1 changed files with 40 additions and 36 deletions
  1. +40
    -36
      app.R

+ 40
- 36
app.R View File

@@ -12,19 +12,17 @@ ui <- fluidPage(
server <- function(input, output, session)
{
shows <- eventReactive(input$show_search, {
req(input$show_search)

serie <- input$show_search %>% url_escape
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

GET(str_c(tmdb_url, "search/tv", key, "&query=", serie)) %>%
content(as = "text") %>%
fromJSON -> res

#res$results$poster_path

res$results$id %>%
res$tconst %>%
as.list %>%
setNames(res$results$original_name)
setNames(res$primaryTitle)
}
})

output$show_choice <- renderUI({
@@ -38,49 +36,55 @@ server <- function(input, output, session)

show_id <- input$show

GET(str_c(tmdb_url, "tv/", show_id, key)) %>%
content(as = "text") %>%
fromJSON -> res
src_sqlite("im.db") %>%
tbl("episodes") %>%
filter(parentTconst == show_id) %>%
select(-parentTconst) %>%
collect -> episodes

res$backdrop_path
1:res$number_of_seasons -> seasons
res$vote_average
src_sqlite("im.db") %>%
tbl("basics") %>%
filter(tconst %in% episodes$tconst) %>%
collect -> titles

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, vote_count) -> episodes
src_sqlite("im.db") %>%
tbl("ratings") %>%
filter(tconst %in% episodes$tconst) %>%
collect -> ratings

episodes %>%
by(.$season_number, function(x){
fit <- lm(vote_average ~ episode_number, data = x)
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)
x %>%
plot_ly(hoverinfo = "text",
text = ~str_c("S", season_number, "E", episode_number, " - ", name, "<br>",
"Rating: ", vote_average, "(", vote_count, " votes)<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") %>%
text = ~str_c("S", seasonNumber, "E", episodeNumber, " - ", primaryTitle, "<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") %>%
layout(xaxis = list(tick0 = 0, dtick = 1),
yaxis = list(title = "Rating"))
}) %>%
subplot(shareY = T, nrows = 1, margin = 0) %>%
hide_legend

# episodes %>%
# arrange(season_number, episode_number) %>%
# eps %>%
# arrange(seasonNumber, episodeNumber) %>%
# add_rownames(var = "ep") %>%
# mutate(ep = ep %>% as.numeric, season_number = season_number %>% as.factor) %>%
# mutate(ep = ep %>% as.numeric, seasonNumber = seasonNumber %>% as.factor) %>%
# ggplot() +
# aes(x = ep, y = vote_average, group = season_number, color = season_number) +
# geom_point(aes(text = name)) +
# aes(x = ep, y = averageRating, group = seasonNumber) +
# geom_point(aes(text = primaryTitle)) +
# geom_smooth(method = "lm") +
# xlab("Episode") +
# ylab("Rating")

})
}



Loading…
Cancel
Save