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('해당 영화는 존재하지 않습니다. 다른 영화를 검색해주세요.')
}
}
})
}
(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)
해당 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의 양식
네이버 영화
(https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200213&tg=0)
해당 사이트를 장르별 1 ~ 50위까지 크롤링을 진행해서 793개라는 데이터를 얻었는데, 크롤링 당시에 1-50위까지만 나와있는 장르들이 있어서 그냥 진행했음.
항목이 많은 장르는 영화가 있는 만큼 계속 크롤링을 하도록 진행해봐야할듯.
(영화가 제일 많은 드라마 장르)
-> 드라마 장르의 항목은 굉장히 많다.
(영화가 제일 적은 뮤지컬 장르)