개발순서
배우 TOP3 리스트 추출하기
DB에 저장된 각 배우들의 빈도수 카운트하기
TOP3에 해당되는 배우의 사진과 이름을 가져오기
상위 장르/배우 관련 리스트 추출하기
상위에 랭크된 장르와 배우의 데이터만 찾기
해당 장르와 배우의 리스트 3개만 뽑기
개발해보기
배우 TOP3 리스트 추출하기
1) DB에 저장된 각 배우들의 빈도수 카운트하기
@app.route('/actor', methods=['GET'])
def count_actor():
actor = list(db.reviews.aggregate([
{'$unwind':{'path':'$actors'}},
{'$group':{'_id':'$actors', 'count':{'$sum':1}}},
{'$sort':{'count':-1}},
{'$limit':3}
]))
# print(actor)
return jsonify({'result': 'success', 'actor': actor })
2) TOP3에 해당되는 배우의 사진과 이름을 가져오기
function getActor() {
$.ajax({
type: "GET",
url: "/actor",
data: {},
success: function (response) {
if (response["result"] == "success") {
let actor = response['actor'];
let image_fir = actor[0]['_id']['image'];
let actor_fir = actor[0]['_id']['actor'];
let image_sec = actor[1]['_id']['image'];
let actor_sec = actor[1]['_id']['actor'];
let image_trd = actor[2]['_id']['image'];
let actor_trd = actor[2]['_id']['actor'];
let tempHtml = `<button class="actor_btn">
<img class="actor_img"
src="${image_fir}"
alt="">
<p class="actor_name">${actor_fir}</p>
</button>
<button class="actor_btn">
<img class="actor_img"
src="${image_sec}"
alt="">
<p class="actor_name">${actor_sec}</p>
</button>
<button class="actor_btn">
<img class="actor_img"
src="${image_trd}"
alt="">
<p class="actor_name">${actor_trd}</p>
</button>`
$('#actors').append(tempHtml);
}
}
})
}
상위 장르/배우 관련 리스트 추출하기
3) 상위에 랭크된 장르와 배우의 데이터만 찾기
genre_list = list(db.reviews.find({'genre':{'$in':[genre[0]["_id"]]}}))
print(genre_list)
top_genre = []
for genres in genre_list:
print(genres['title'])
top_genre.append(genres['title'])
movie_list1 = list(db.reviews.find({'actors.actor':{'$in':[actor[0]["_id"]["actor"]]}}))
top_movie1 = []
for movies1 in movie_list1:
print(movies1['title'])
top_movie1.append(movies1['title'])
4) 해당 장르와 배우의 리스트 3개만 뽑기
let top_genre = response['top_genre']
let genre1 = top_genre[0];
let genre2 = top_genre[1];
let genre3 = top_genre[2];
let tempHtml = `<li>${genre1}</li>
<li>${genre2}</li>
<li>${genre3}</li>`
$('#movie_list1').append(tempHtml);