Skip to content
Snippets Groups Projects
Select Git revision
  • 1a7585b5420d40828a8df2219a0de74457eace19
  • master default
  • clement
  • fix_requirements
  • new_signup
  • interface_admin
  • hamza
  • dev
  • test
  • melissa
  • context_sheet
  • sorties_new
  • Seon82-patch-2
  • export_bdd
  • refactor/participation-user-link
15 results

utils.py

Blame
  • populate.js 2.40 KiB
    const mongoose = require("mongoose");
    const MovieModel = require("./models/movie");
    const axios = require("axios");
    
    async function fetchMoviesFromTheMovieDatabase(n) {
      // TODO: fetch movies from the The Movie Database API
      try {
        // Do something if call succeeded
        const movieFetch = await axios.get(
          `https://api.themoviedb.org/3/movie/popular?api_key=522d421671cf75c2cba341597d86403a&page=` +
            n
        );
        // console.log(movieFetch.data.results);
        return movieFetch.data.results;
      } catch (error) {
        // Do something if call failed
        console.error(error);
      }
    }
    
    async function populateMovies(movies) {
      // TODO: populate movies into the database
      try {
        for (const movie of movies) {
          const castFetch = await axios.get(
            `https://api.themoviedb.org/3/movie/` +
              movie.id +
              `/credits?api_key=522d421671cf75c2cba341597d86403a`
          );
          const newMovie = await new MovieModel({
            // Movie attributes
            adult: movie.adult,
            backdrop_path: movie.backdrop_path,
            genre_ids: movie.genre_ids,
            id: movie.id,
            original_language: movie.original_language,
            original_title: movie.original_title,
            overview: movie.overview,
            popularity: movie.popularity,
            poster_path: movie.poster_path,
            release_date: movie.release_date,
            title: movie.title,
            video: movie.video,
            vote_average: movie.vote_average,
            vote_count: movie.vote_count,
            cast: castFetch.data.cast,
          });
    
          // Create a new movie instance
          const createdMovie = await newMovie.save();
    
          // What to do after movie has been saved !
          console.log("Movie Saved !");
          console.log(createdMovie.title);
        }
      } catch (error) {
        console.log(error);
      }
    }
    
    async function dropDataBase() {
      // TODO: Drop the collections
      try {
        await MovieModel.deleteMany({});
      } catch (error) {
        console.log(error);
      }
    }
    
    async function populate(N) {
      // Connect mongoose client
      const client = await mongoose.connect(process.env.MONGO_DB_URL);
      await dropDataBase();
    
      for (let n = 1; n < N; n++) {
        const movies = await fetchMoviesFromTheMovieDatabase(n);
        await populateMovies(movies);
        console.log(n);
      }
    
      // disconnect mongoose client
      await client.disconnect();
    }
    
    populate(300)
      .then(() => {
        console.log("All done !");
      })
      .catch((error) => {
        console.error(error);
      });