간단한 영화 녹화 시스템

알고리즘 및 데이터 구조 지식을 개선하고 싶습니다.
다음 블로그 게시물에서 포트폴리오용으로 만들 수 있는 샘플 프로젝트를 안내하거나 트리, 해시맵 등과 같은 데이터 구조를 사용하는 방법에 대한 아이디어로 안내해 드리겠습니다.
이 블로그 게시물의 핵심 의도는 포트폴리오에 사용하여 기술을 강조할 수 있는 간단한 프로젝트를 만드는 것입니다.
이 게시물의 주요 초점은 다음을 사용하는 것입니다.
  • 데이터용 API
  • TreeNode와 같은 데이터 구조
  • 명령 프롬프트

  • 프로젝트는 themoviedb API를 사용하여 특정 장르에 속하는 20편의 영화 데이터를 가져옵니다. API 키는 themoviedb 에서 계정을 생성한 후 생성할 수 있습니다.
    다음 단계에서는 json 및 요청 라이브러리를 사용합니다.genres = requests.get(f"https://api.themoviedb.org/3/genre/movie/list?api_key={api_key}&language=en-US")
    genre_data = genres.json()
    API 데이터는 다음과 같습니다.
    {'장르': [{'id': 28, '이름': '액션'},
    {'id': 12, 'name': '모험'},
    {'id': 16, 'name': '애니메이션'},
    {'id': 35, 'name': '코미디'},
    {'id': 80, 'name': '범죄'},
    {'아이디': 99, '이름': '다큐멘터리'},
    {'id': 18, 'name': '드라마'},
    {'id': 10751, '이름': '가족'},
    {'id': 14, 'name': '판타지'},
    {'id': 36, '이름': '기록'},
    {'id': 27, 'name': '공포'},
    {'id': 10402, '이름': '음악'},
    {'id': 9648, '이름': '미스터리'},
    {'아이디': 10749, '이름': '로맨스'},
    {'id': 878, 'name': 'SF'},
    {'id': 10770, 'name': 'TV 영화'},
    {'id': 53, 'name': '스릴러'},
    {'id': 10752, '이름': '전쟁'},
    {'id': 37, 'name': '서양'}]}

    API를 통해 다음 단계에서 사용 가능한 모든 장르를 얻었습니다. 장르를 사용하여 각 장르에서 20편의 영화를 수집합니다.

    data = []
    for genre in genre_name:
        r = requests.get(f"https://api.themoviedb.org/3/discover/movie?api_key={api_key}&language=en-US&sort_by=popularity.desc&include_adult=false&include_video=false&page=1&with_genres={genre}&with_watch_monetization_types=flatrate")
        movie_data = r.json()
    
        for i in movie_data['results']:
            movie_temp = []
            movie = [i['title'],i['vote_average'],i['release_date'],i['popularity'],i['overview'], genre]
            movie_temp.append(movie)
            data += movie_temp 
    


    장르 이름은 모든 장르를 포함하는 목록입니다. 각 장르를 반복하고 그에 따라 API 키를 변경합니다. 다음 단계에서는 API 결과를 반복하고 데이터에 추가되는 목록 목록에 배치합니다. 결과 목록은 다음과 같습니다.

    [['스파이더맨: 노 웨이 홈', 8.6, '2021-12-15', 20686.826, '피터 파커가 가면을 벗고 더 이상 헤어질 수 없는...', '액션'],
    ['베놈: 살육을 시키자', 7.2, '2021-09-30', 7992.617, '탐정 에디브록에서 숙주를 찾은 뒤...', '액션']]

    데이터를 가져와서 video_data.py에 저장한 후 프로젝트의 데이터 구조로 사용할 간단한 TreeNode 클래스를 만듭니다. 트리는 단순하며 각 장르에 대한 시작 노드와 노드를 포함합니다. 각 장르 노드에는 19개 장르에서 최대 380개의 노드를 추가하는 20개의 영화가 포함되어 있습니다.

    다음 단계는 사용자 입력과 그가 보고 싶은 장르의 정보를 얻는 것입니다. 사용자는 영화를 선택하는 몇 가지 방법이 있습니다. 첫 번째 방법은 1-19 사이의 숫자를 사용하거나 명령줄에 장르를 쓰는 것입니다.
    사용자는 선택한 장르의 영화를 보고 싶은지 묻습니다. 그 후, 그는 추천 영화의 양을 얻기 위해 다시 메시지를 받습니다. 결국 사용자는 다른 추천을 받거나 추천 시스템을 종료할 수 있습니다.

    다음은 rec sys의 작동을 강조하는 gif입니다.



    github 리포지토리를 탐색하는 데 시간을 내주셔서 대단히 감사합니다. 어떤 종류의 피드백도 환영합니다.

    unsplash의 표지 이미지

    좋은 웹페이지 즐겨찾기