index4.js 5.69 KB
var express = require('express');
var cheerio = require('cheerio');
var request = require('request');
const axios = require('axios');
//axios 추가 설치된거 확인하기
var router = express.Router();
var mysql      = require('mysql');
var client = require('cheerio-httpcli');
var passport = require('passport'),
    KakaoStrategy = require('passport-kakao').Strategy;

passport.use(new KakaoStrategy({
        clientID : 'bd2e610396fb7bbb84cf91a786b3cc72',
        callbackURL :'/auth/login/kakao/callback',
       clientSecret : 'eUtJGtlLoCZJufevp3LKfDP0KOtZUV7R'
    },
    function(accessToken, refreshToken,params, profile, done){
        //사용자 정보는 profile에
        loginByThirdparty(accessToken, refreshToken, profile);

        console.log("(!)로그인 : " + profile._json.id+"("+profile._json.properties.nickname +")");
        //return done(null,profile)
        return done(null, {
            'user_id': profile._json.id,
            'nickname': profile._json.properties.nickname
        });
    }
));

// kakao 로그인
router.get('/auth/login/kakao',
   // passport.authenticate('kakao',{state: "myStateValue"})
   passport.authenticate('kakao')
);

// kakao 로그인 연동 콜백
router.get('/auth/login/kakao/callback',
    passport.authenticate('kakao', {
        //session: false,
        successRedirect: '/mytoons',
        failureRedirect: '/'
    })
);

function loginByThirdparty(accessToken, refreshToken, profile) {
    //예전 코드는 MySQL 버젼이 맞지 않음
  //  var sql = 'INSERT INTO `user`(id) VALUES(?) ON DUPLICATE KEY(PRIMARY) UPDATE id=(?);'
    var sql = "INSERT INTO `user` (id) VALUES (?) ON DUPLICATE KEY UPDATE id=id";
    var kid=[profile._json.id];
    connection.query(sql,kid,function(err,result){
        if (err) {
            console.log("로그인 쿼리중 에러 : " + err);
        } else {
            console.log("로그인 DB처리 완료!");
        }
    });
}

router.get('/auth/logout/kakao',function (req,res) {
    req.logout();
    res.redirect('/');
})


//--------------------------------------------------------------------------------------------------------

allWebtoons4 = new Array();

function getAllToons4() {

  allWebtoonList4 = new Array();
  //현재 상영작 좋아요 순
  const currentlikemovie = 'https://movie.naver.com/movie/running/current.nhn?view=list&tab=normal&order=likeCount';

  axios.get(currentlikemovie).then(res => {
    if (res.status === 200) {
      let currentLikeMovie = [];
      const $ = cheerio.load(res.data);
      const $movieList = $('div.lst_wrap ul.lst_detail_t1').children('li');

      $movieList.each(function (i) {
        currentLikeMovie[i] = {
          title: $(this).find('dt.tit a').text(),
          img: $(this).find('div.thumb img').attr('src')
          //개봉예정작에선 star가 없음
          //star: $(this).find('em.num_likeit').text().replace(/\t/gi, '').replace(/\n/gi,'')
        };
      });

      const data = currentLikeMovie.filter(m => m.title);
      allWebtoonList4.push(data);
      //console.log(data);
    }
  }, (error) => console.log(error));

  //현재 상영작 예매 순
  const runningreserve = 'https://movie.naver.com/movie/running/current.nhn?view=list&tab=normal&order=reserve';

  axios.get(runningreserve).then(res => {
    if (res.status === 200) {
      let crawledMovie = [];
      const $ = cheerio.load(res.data);
      const $movieList = $('div.lst_wrap ul.lst_detail_t1').children('li');

      $movieList.each(function (i) {
        crawledMovie[i] = {
          title: $(this).find('dt.tit a').text(),
          img: $(this).find('div.thumb img').attr('src')
        };
      });

      const data = crawledMovie.filter(m => m.title);
      allWebtoonList4.push(data);
      //console.log(data);
    }
  }, (error) => console.log(error));

  //개봉 예정영화  기대지수순
  const premovieinterest = 'https://movie.naver.com/movie/running/premovie.nhn?order=interestRate';

  axios.get(premovieinterest).then(res => {
    if (res.status === 200) {
      let crawledMovie = [];
      const $ = cheerio.load(res.data);
      const $movieList = $('div.lst_wrap ul.lst_detail_t1').children('li');

      $movieList.each(function (i) {
        crawledMovie[i] = {
          title: $(this).find('dt.tit a').text(),
          img: $(this).find('div.thumb img').attr('src')
        };
      });

      const data = crawledMovie.filter(m => m.title);
      allWebtoonList4.push(data);
      //console.log(data);
    }
  }, (error) => console.log(error));

  //계봉 예정영화 예매순
  const prereserve = 'https://movie.naver.com/movie/running/premovie.nhn?order=reserve';

  axios.get(prereserve).then(res => {
    if (res.status === 200) {
      let crawledMovie = [];
      const $ = cheerio.load(res.data);
      const $movieList = $('div.lst_wrap ul.lst_detail_t1').children('li');

      $movieList.each(function (i) {
        crawledMovie[i] = {
          title: $(this).find('dt.tit a').text(),
          img: $(this).find('div.thumb img').attr('src')
        };
      });

      const data = crawledMovie.filter(m => m.title);
      allWebtoonList4.push(data);
      //console.log(data);
    }
  }, (error) => console.log(error));

      allWebtoons4 = allWebtoonList4;
}



getAllToons4();
setInterval(getAllToons4,5*60*1000);

/* GET home page. */

//진아 : list :allWebtoons2.3 해도 되는지??!!
router.get('/',
    function(req,res,next){
        if(req.isAuthenticated()){
            res.redirect('/mytoons');
            console.log("(!)이미 로그인");
        }else{
            console.log("(!)로그인세션 없음");
            res.render('index',{
                title: "니툰내툰",
                list: allWebtoons4
            });
        }
    });

module.exports = router;