웹 프로그래밍 스쿨 22주 차 포스팅입니다!😃

 

 

이번 주도 역시 엄청 바쁘게 지나갔는데요!

 

자료구조 시간에는 Graph의 개념과 순회 방식, MST에 대해 배우고, 

 

트러블 슈팅 시간에는그 동안 묵혀두었던 일치율과 추천 알고리즘에 대해 상담하고,

DB 중복 query 제거에 대해서 배우고,

 

나머지 시간에는 진행중인 프로젝트의 오류 나는 부분을 고쳐가며 지낸 결과! 

 

서버가 어느정도 안정화가 되어 클라이언트 쪽 스쿨분들이 작업하신 코드와 합쳐서

 

포스트맨이 아닌 브라우저를 통해서 눈으로 FastFlix 화면을 볼 수 있게 되었습니다.(감격)

 

 

 

재생 가능!!

 

영상을 보면

 

메인화면 부터 로고, 영화 리스트 화면, hover 시에 화면 커지고 리스트가 밀리는 것 까지 정말 똑같이 

 

구현이 돼서 너무 신기했고,  열심히 크롤링을 한 보람을 여기서 느꼈습니다. 😏

 

 

이제 구현해야 할 기능이 일치율과 추천 알고리즘만 남았는데요.

 

 

 

 

 

처음에 저 초록 글자를 봤을 때 무엇과 무엇이 일치하는 정도인지를 알 수 없어서 회의 시간에 

팀원분들과 같이 이야기를 나누어 봤는데요.

 

명확한 정체는 알 수 없으나 '로그인 한 유저의 취향과 선택된 영화 간의 일치율'이라는 의견이 가장 설득력이

있어서 개념을 정의했습니다.

 

또 해당 유저의 취향의 근거가 될 영화를 유저가 좋아요를 누른 영화와 찜 목록에 넣어둔 영화로 특정하고,

 

영화 취향은 어떻게 만들어지지? 라는 질문에 영화를 고를 때 고려하는 항목들에 대해 의견을 모으고,

 

어떤 항목들이 더 중요한지를 구분하기 위해 투표를 통해 어떤 항목에 더 많은 가중치를 줄지를 결정했습니다.

 

 

 

 

이제 회의내용을 코드로 바꾸는 일이 남았는데요

 

 

        sub_user = SubUser.objects.get(pk=100)
        marked_objs = LikeDisLikeMarked.objects.select_related(
            'movie',
        ).prefetch_related(
            'movie__actors',
            'movie__directors',
            'movie__genre',
        ).filter(marked=True, sub_user=sub_user)

 

먼저 해당 유저의 찜 목록을 가져와서

 

 

marked_movies_name_counter = Counter(marked_objs.values_list('movie__name', flat=True))
        marked_movie_actors_name_counter = Counter(marked_objs.values_list('movie__actors__name', flat=True))
        marked_movie_directors_name_counter = Counter(marked_objs.values_list('movie__directors__name', flat=True))
        marked_movie_genres_name_counter = Counter(marked_objs.values_list('movie__genre__name'

 

목록에 있는 영화들과 관련된 정보를 찾고

 

 

target = Movie.objects.get(pk=521)
        target_name = target.name[:2]

        target_actors = target.actors.values_list('name', flat=True)
        target_directors = target.directors.values_list('name', flat=True)
        target_genres = target.genre.values_list('name', flat=True)

 

일치율을 비교할 영화를 가져와 관련된 정보를 추출한 후에

 

 

target_actors_count = sum([marked_movie_actors_name_counter.get(name, 0) for name in target_actors])
        target_directors_count = sum([marked_movie_directors_name_counter.get(name, 0) for name in target_directors])
        target_genres_count = sum([marked_movie_genres_name_counter.get(name, 0) for name in target_genres])

 

선택된 영화의 정보와 찜 목록에 있는 영화들의 정보의 일치 정도를 점수화하는 단계까지 구현되었고

 

 

다음 주에 항목 별 가산점을 매겨서 기능을 완성하고 애플리케이션에 반영하면 프로젝트가 완료될 것 같습니다😍 

 

 

 

 

웹 프로그래밍 스쿨에 대해 더 알아보기 ⭐

BELATED ARTICLES

more