[오늘의 영화] '레버넌트 : 죽음에서 돌아온 자, 알레한드로 곤잘레스 이냐리투'

오늘 한 일

▶ DB에 없는 영화를 입력할 시, '존재하지 않는 영화'라는 것을 알려주는 기능

if...else 구문을 작성함으로써, 비어있는 리스트를 출력할 때, result : fail 을 전달하도록 하는 코드를 작성

(flask_server.py)

@app.route('/search_DB', methods=['GET'])
def search_DB():
    # 임의로 정한, '온다'라는 영화
    search_movie = list(db.search_movie.find({}, {'_id': 0}))
    print(search_movie)
    search_title_give = search_movie[-1]['search_movie']
    print(search_title_give)
    #movie_info_receive = request.args.get('movie_info_give','movie_info_give')
    movie_info_ART = list(db.ART_movie_list.find({'title':{'$regex':search_title_give}}, {'_id': 0}))
    print(movie_info_ART)
    if (movie_info_ART == []):
        print('영화가 없을 때!!!')
        return jsonify({'result': 'fail'})
    else:
        print('영화가 있을 때!!!')
        return jsonify({'result': 'success', 'Movie_info':movie_info_ART}) 

(page5.html)

function bring_DB(){
    $.ajax({
      type: "GET",
      url: "/search_DB",
      data: {},
      success: function(response){
        if(response['result'] == 'success'){
          let movie_infos = response['Movie_info'];

          $('#movie_temp_html').html('');

          for(let i=0; i<movie_infos.length; i++){
            movie_card(movie_infos[i]['poster'],movie_infos[i]['title'],movie_infos[i]['summary'],movie_infos[i]['director']);
            $('#search_movie_title').text(movie_infos[i]['title']);
            $('#comment_movie_title').text(movie_infos[i]['title']);
          }
        }else{
          alert('해당 영화는 존재하지 않습니다. 다른 영화를 검색해주세요.')
        }
      }
    })
  }

(구현 화면)

▶ ART_movie_list DB 말고, Long_movie_list DB 에서도 검색이 가능하도록 구현하기

(flask_server.py)

movie_info_ART = list(db.ART_movie_list.find({'title':{'$regex':search_title_give}}, {'_id': 0}))
    movie_info_Long = list(db.Long_movie_list.find({'title':{'$regex':search_title_give}}, {'_id': 0}))
    print(movie_info_ART)
    print(movie_info_Long)
    movie_info = movie_info_ART + movie_info_Long
    print(movie_info)
    if (movie_info == []):
        print('영화가 없을 때!!!')
        return jsonify({'result': 'fail'})
    else:
        print('영화가 있을 때!!!')
        return jsonify({'result': 'success', 'Movie_info':movie_info})

해당 두 개의 db.find() 를 사용해서 나온 결과를 합친 새로운 변수를 만든다.

테스트를 해본 결과, db에 배열이 1개가 들어가는 경우가 있고, 2개가 들어가는 경우가 있다.
시행 결과 2개 이상 나오는 결과는 많지 않아서 일단은 if...else 구문으로 나눠서 구현했다.

(page5.html)

if(movie_infos.length > 1){
            for(let i=0; i<movie_infos.length-1; i++){
              movie_card(movie_infos[i]['poster'],movie_infos[i]['title'],movie_infos[i]['summary'],movie_infos[i]['director']);
              $('#search_movie_title').text(movie_infos[i]['title']);
              $('#comment_movie_title').text(movie_infos[i]['title']);
            }
          }else{
            for(let i=0; i<movie_infos.length; i++){
              movie_card(movie_infos[i]['poster'],movie_infos[i]['title'],movie_infos[i]['summary'],movie_infos[i]['director']);
              $('#search_movie_title').text(movie_infos[i]['title']);
              $('#comment_movie_title').text(movie_infos[i]['title']);
            }
          }

(구현 화면)
Long_movie_list 에만 있는 영화를 입력해보았다.

▶ 커멘트를 남길 때, 영화의 제목도 같이 user_comment db에 들어가도록 하기

(구현 전 user_comment db)

해당 DB를 보면 알 수 있듯이, 'user_email''user_comment' 만 들어가는 것을 알 수 있다. 해당 db 에 작성한 영화의 제목도 넣도록 추가해보자.

(flask_server.py)

@app.route('/comment_save', methods=['POST'])
def saved_comment():
    user_email = request.form['email']
    user_comment_movie_title = request.form['user_comment_movie_title']
    user_comment_movie = request.form['user_comment_give']
    data = {
        'user_email' : user_email,
        'user_comment_movie_title' : user_comment_movie_title,
        'user_comment_movie' : user_comment_movie 
    }
    print(data)
    db.user_comment.insert_one(data)
    return jsonify({'result' : 'success'})

(page5.html)

 function movie_comment(){
      let user_comment = $('#user_comment').val()
      console.log(user_comment)
      let user_comment_movie = $('#comment_movie_title').text()
      $.ajax({
        type: "POST",
        url: "/comment_save",
        data: { email :$('#customer_email').text(),user_comment_movie_title : user_comment_movie ,user_comment_give : user_comment},
        success: function(response){}
      })
    }

(구현 화면)

-> 위 객체는 이전 코멘트 저장 DB의 양식. 아래 객체는 기능 추가 후 코멘트 저장 DB의 양식

앞으로 해야할 일

  • Long_movie_list DB 추가하기
    (20.05.03 기준, 793개 데이터를 가지고 있음)

네이버 영화
(https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200213&tg=0)

해당 사이트를 장르별 1 ~ 50위까지 크롤링을 진행해서 793개라는 데이터를 얻었는데, 크롤링 당시에 1-50위까지만 나와있는 장르들이 있어서 그냥 진행했음.

항목이 많은 장르는 영화가 있는 만큼 계속 크롤링을 하도록 진행해봐야할듯.

(영화가 제일 많은 드라마 장르)

-> 드라마 장르의 항목은 굉장히 많다.
(영화가 제일 적은 뮤지컬 장르)

  • 사용자가 작성했던, 영화라면 해당 영화를 검색해서 들어왔을 때, 작성했던 코멘트 보여주기 (수정/삭제 기능을 할 수 있도록 HTML 구현)
profile
백엔드 개발자 준비생인 영화광 심리학도입니다. #node.js #Javascript #영화광 #심리학 #백엔드개발자

0개의 댓글