Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const axios = require("axios");
  2. const mysql = require("mysql");
  3.  
  4. const apiInstance = axios.create({
  5.   baseURL: "https://api.themoviedb.org/3",
  6.   timeout: 1000,
  7.   params: {
  8.     api_key: "bbb0e77b94b09193e6f32d5fac7a3b9c",
  9.     region: "GR"
  10.   }
  11. });
  12.  
  13. const BASE_DELAY_MS = 2000;
  14. const connection = mysql.createConnection({
  15.   host: "localhost",
  16.   user: "root",
  17.   password: "0december",
  18.   database: "movies"
  19. });
  20.  
  21. connection.connect();
  22.  
  23. connection.query("delete from movies.directorlist");
  24. connection.query("delete from movies.moviesnow");
  25. connection.query("delete from movies.SuperTable");
  26.  
  27. const apiErrorHandler = (error) => {
  28.   console.log("API", "ERROR", error);
  29. };
  30.  
  31. //calls the now playing info
  32. apiInstance
  33.   .get(`/movie/now_playing`)
  34.   .then((res) => {
  35.     for (page = 1; page <= res.data.total_pages; page++) {
  36.       paginatorFunc(page);
  37.     }
  38.   })
  39.   .catch(apiErrorHandler);
  40.  
  41. paginatorFunc = (page) => {
  42.   apiInstance
  43.     .get(`/movie/now_playing`, { params: { page: page } })
  44.     .then(crewImdbFinder)
  45.     .catch(apiErrorHandler);
  46. };
  47.  
  48. //finds movie and crew info
  49. crewImdbFinder = (res) => {
  50.   res.data.results.map((result, idx) => {
  51.     function resolver(resolve) {
  52.       function executeDelayedRequest() {
  53.         apiInstance
  54.           .get(`/movie/${result.id}`, {
  55.             params: { append_to_response: "credits" }
  56.           })
  57.           .then(resolve)
  58.           .catch(apiErrorHandler);
  59.       }
  60.  
  61.       setTimeout(executeDelayedRequest, BASE_DELAY_MS * idx);
  62.     }
  63.  
  64.     new Promise(resolver)
  65.       .then((response) => {
  66.         response.data.credits.crew.map((member) => {
  67.           if (member.job === "Director") {
  68.             directorHandler(member.id, response.data.title);
  69.           }
  70.         });
  71.         connection.query("INSERT INTO moviesnow VALUES (?, ?, ?)", [
  72.           response.data.title,
  73.           response.data.overview,
  74.           response.data.original_title
  75.         ]);
  76.       })
  77.       .catch(apiErrorHandler);
  78.   });
  79. };
  80.  
  81. directorHandler = (directorId, title) => {
  82.   apiInstance
  83.     .get(`/person/${directorId}`)
  84.     .then((response) => {
  85.       connection.query("INSERT INTO directorlist VALUES (?, ?, ?)", [
  86.         response.data.name,
  87.         title,
  88.         "https://www.imdb.com/name/" + response.data.imdb_id
  89.       ]);
  90.     })
  91.     .catch(apiErrorHandler);
  92. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement