Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/movie #4

Closed
wants to merge 26 commits into from
Closed

Feature/movie #4

wants to merge 26 commits into from

Conversation

anandashin
Copy link
Collaborator

@anandashin anandashin commented Jan 5, 2025

개요

영화 관련 기능들을 구현했습니다. 자세한 사항은 API 명세서에 적어두었습니다.
영화에 연결되어있는 다른 테이블들이 많아 같이 구현하고 각 기능도 필요한 만큼 구현했습니다.
영화 데이터를 어떻게 받아오면 좋을까 고민하다가, 왓챠피디아 영화 페이지에 있는 영화 정보를 크롤링 해오는 게 낫겠다는 생각이 들어 영화 크롤링 기능을 추가했습니다. Selenium으로 왓챠피디아 영화 메인 페이지에서 제공하는 차트 정보 (박스오피스, 왓챠 구매 순위, 왓챠 Top10, 넷플릭스 순위)를 크롤링 할 수 있습니다.

영화 외 모델 생성:
앞서 말했듯 영화 모델에 연결된 다른 모델들까지 생성 및 구현했습니다.
|chart |
| country |
| genre |
| movie |
| movie_country |
| movie_genre |
| movie_participant |
| participant |
| review

Chart table 추가:
크롤링해오는 정보들이 영화 차트여서 차트 테이블을 추가했습니다. 차트 테이블엔 차트 타입. 순위, 등록 시간, 영화 id 열이 있습니다. 동 차트 내에서 순위 변동이 있는 경우 이미 있는 차트 정보의 순위와 등록 시간만 업데이트 했습니다.

감독/배우 (participant) 추가:
동명이인 문제가 발생할 수 있습니다. 만약 이름은 같으나 프로필 이미지 url이 다른 경우 db에 추가하고, 이름도 같고 둘다 프로필 이미지를 제공하지 않는 경우, 중복으로 생각하여 추가하지 않았습니다.

영화 추가:
영화를 직접 추가하는 경우엔 db에서 겹치는 영화를 찾아 에러를 발생시킵니다. 영화 차트를 크롤링 하는 경우, db에서 겹치는 영화를 찾아도 에러를 발생시키지 않고 해당 영화의 차트 내용을 업데이트한 후 리턴했습니다.

크롤링 항목:
가장 필수적인 항목들을 크롤링 해왔습니다. 평균 평점은 실제 왓챠피디아에 달린 평점 데이터를 가지고 낸 것이므로, 우리 프로젝트 내에서 생성하는 리뷰 별점들로 계산하는게 맞다고 생각하여 가져오지 않았습니다.

PR 유형

어떤 변경 사항이 있나요?

  • 새로운 기능 추가
  • 버그 수정
  • CSS 등 사용자 UI 디자인 변경
  • 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
  • 코드 리팩토링
  • 주석 추가 및 수정
  • 문서 수정
  • 테스트 추가, 테스트 리팩토링
  • 빌드 부분 혹은 패키지 매니저 수정
  • 파일 혹은 폴더명 수정
  • 파일 혹은 폴더 삭제
  • 기타 :

PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • 커밋 메시지 컨벤션에 맞게 작성했습니다. Commit message convention 참고
  • 변경 사항에 대한 테스트를 했습니다.(버그 수정/기능에 대한 테스트).

리뷰 요구사항 (선택)

여러 기능들을 구현하다보니 부족한 점이 많을 것 같습니다.

watchapedia/app/movie/dto/requests.py Outdated Show resolved Hide resolved
watchapedia/app/movie/service.py Outdated Show resolved Hide resolved
@deveroskp
Copy link
Collaborator

크롤링은 실행 시 메모리를 많이 잡아먹는지 ec2가 터져버리는 바람에 제대로 테스트는 못 해봤지만, 나머지는 제대로 작동하는 것 같습니다! 많은 양 맡으시느라 수고하셨습니다!

@anandashin
Copy link
Collaborator Author

크롤링은 실행 시 메모리를 많이 잡아먹는지 ec2가 터져버리는 바람에 제대로 테스트는 못 해봤지만, 나머지는 제대로 작동하는 것 같습니다! 많은 양 맡으시느라 수고하셨습니다!

크롤링을 로컬에서 테스트 했을 땐 문제 없었는데 ec2에선 에러가 나는군요..

@anandashin anandashin closed this Jan 6, 2025
@deveroskp
Copy link
Collaborator

크롤링은 실행 시 메모리를 많이 잡아먹는지 ec2가 터져버리는 바람에 제대로 테스트는 못 해봤지만, 나머지는 제대로 작동하는 것 같습니다! 많은 양 맡으시느라 수고하셨습니다!

크롤링을 로컬에서 테스트 했을 땐 문제 없었는데 ec2에선 에러가 나는군요..

제대로 크롤링이 되지 않는 것인지, 아니면 ec2의 과부화 때문인지는 정확히 모르겠네요

@anandashin
Copy link
Collaborator Author

.

@anandashin anandashin reopened this Jan 6, 2025
@anandashin
Copy link
Collaborator Author

버튼을 잘못 눌러서 pr을 닫았었네요.. 다시 열었습니다

@minchok125
Copy link
Collaborator

수고하셨습니다! 바로 코멘트 & 리뷰 올려 보겠습니다.

@minchok125
Copy link
Collaborator

수고하셨습니다! 바로 코멘트 & 리뷰 올려 보겠습니다.

저도 다른 기능들 테스트를 해 보고 크롤링을 한 번 시도해봤는데 EC2가 터져 버렸네요.

@anandashin
Copy link
Collaborator Author

일단 크롤링이 ec2에서 잘 돌아가지 않으니 다시 고민해봐야겠습니다..

@minchok125
Copy link
Collaborator

http://43.200.181.154/docs

@anandashin
Copy link
Collaborator Author

일단 크롤링 api는 막아두었습니다. 궁여지책으로 영화 리스트 추가 api를 만들었는데, 로컬에서 크롤링한 영화 데이터를 JSON 형식으로 영화 리스트 추가 api에 전달하면 db에 추가하는 기능입니다.

@deveroskp
Copy link
Collaborator

일단 크롤링 api는 막아두었습니다. 궁여지책으로 영화 리스트 추가 api를 만들었는데, 로컬에서 크롤링한 영화 데이터를 JSON 형식으로 영화 리스트 추가 api에 전달하면 db에 추가하는 기능입니다.

잘 작동하는 것 같습니다!

@deveroskp deveroskp self-requested a review January 6, 2025 16:00
@deveroskp
Copy link
Collaborator

앗 잘못 눌렀네요

@anandashin anandashin closed this Jan 9, 2025
@anandashin anandashin deleted the feature/movie branch January 9, 2025 05:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants