library("jsonlite")
library("tidyverse")



data<-fromJSON(txt = "/home/labourde/Bureau/projet-analyse-exploratoire/db_animes/db_animes.json")
dfAnimes <- as.data.frame(data)

#Filtrage des animes sortis avant 1960 (pas de télé :() et après 2021 et des OVAs, films, etc
dfAnimes %>%
  filter(start_season$year > 1960) %>%
  filter(start_season$year < 2021) %>%
  filter(media_type == "tv") -> dfAnimes

#Dedoublage de la colonne saison
dfAnimes %>% 
  mutate(annee = start_season$year) %>%
  mutate(saison = start_season$season) -> dfAnimes

#Transformation de la colonne genre pour la rendre utilisable
getgenre <- function(i){
  dfAnimes[i,13][[1]][[2]] -> res
  return(res)
}

dfAnimes %>%
  mutate(genres = lapply(1:4691, getgenre)) -> dfAnimes

#Nettoyage des colonnes non utilisées
dfAnimes <- select(dfAnimes, title, mean, rank, annee, saison, num_episodes, source, genres)

####### Distribution des genres
distributeGenres <- function(i){
  line <- as.data.frame(i$genres)
  line %>%
    rename(genres = 1) -> Genres
  i[ , !(names(dfAnimes) %in% c("genres"))] -> anime
  newdf <- cbind(anime, Genres)
  return(newdf)
}

dfAnimesFinal <- data.frame(matrix(ncol = ncol(dfAnimes), nrow = 0))
x <- names(dfAnimes)
colnames(dfAnimesFinal) <- x
dfAnimesFinal

for(i in 1:nrow(dfAnimes)) {
  row <- dfAnimes[i,]
  animeWithGenres <- distributeGenres(row)
  dfAnimesFinal <- rbind(dfAnimesFinal,animeWithGenres)
}
dfAnimesFinal

####### Plot the genre the most represented
dfAnimesFinal %>%
  mutate(Nombre=sum(1)) %>%
  group_by(genres) %>%
  summarise(NombreGenre=sum(Nombre)) %>%
  arrange(desc(NombreGenre)) -> mostCommonGenre
mostCommonGenre <- head(mostCommonGenre,10)
ggplot(mostCommonGenre,aes(x=reorder(genres,NombreGenre),y=NombreGenre)) +
  geom_bar(stat='Identity',aes(fill=genres)) +
  labs(y="Occurence", x = "Genre") +
  ggtitle("Les 10 genres les plus représentés")


####### Evolution des 5 genres les plus représentés sur les 5 dernières années
dfAnimesFinal %>%
  filter(annee>1999) %>%
  mutate(Nombre=1) %>%
  group_by(genres,annee) %>%
  summarise(NombreGenre=sum(Nombre)) %>%
  arrange(desc(NombreGenre)) %>%
  group_by(annee) %>%
  slice_max(order_by = NombreGenre, n = 5) -> mostCommonGenrePast10Years
ggplot(mostCommonGenrePast10Years,aes(x=annee,y=NombreGenre,color=genres)) +
  geom_point() +
  geom_line() +
  labs(y="Occurence", x = "Genre") +
  ggtitle("Evolution des 5 genres les plus représentés sur les 20 dernières années")




#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer
dfAnimes %>%
  filter(num_episodes>30) %>%
  group_by(annee) %>%
  count() %>%
  rename(nbAnimes = n) -> longbois
  
longbois %>% ggplot(aes(annee, nbAnimes)) + geom_col()

#Evolution du nombre de lettre (moyenne et médiane) dans les titres par année
dfAnimes %>%
  group_by(annee) %>%
  summarise(lettres=mean(nchar(data.title))) -> dfAnimes

dfAnimes %>%
  group_by(annee) %>%
  summarise(lettres=median(nchar(data.title))) -> medLettersByYear

meanLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col()

medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col()

#Evolution des 5 genres les plus représentés

# Explosion de la colonne tags
dfAnimes %>% 
  mutate(annee = anime$year) %>%
  mutate(saison = start_season$season) -> animes_genres_doubles
  


