Skip to content

Features To Youtube API

Joeween Kim edited this page Jul 6, 2022 · 2 revisions

pdf 에 나온 핵심스펙을 기준으로 한 리서치입니다.

1. 유튜브 플레이리스트 (홈)

  • search API 사용 시
    1. music 카테고리 + 검색어 로 음악 리스트를 가져올 수 있음.
    2. music 카테고리만 필터링 한 플레이리스트를 가져올 수 없음.
    3. 즉, 음악 플레이리스트 > 음악 리스트 구조로 탐색할 수 없고, 음악 리스트가 쭉 나오는 방식이 가능함.
  • playlist API 사용 시
    1. 채널 id를 이용해서 우리가 해당 채널의 플레이 리스트들을 가져올 수 있음.
    2. 1번에서 가져온 플레이리스트 id를 이용해서 비디오 목록을 가져올 수 있음 (w. platlistitems API)
    3. 즉, 음악 플레이리스트 > 음악 리스트 구조로 탐색할 수는 있지만, 채널을 고정해두고 거기서만 가져올 수 있음. 또한 해당 플레이리스트에서 음악만 필터링 할 수가 없어서 음악만 있는 플레이리스트를 지정해야 함.

구현

  • 방법 1. search API 를 사용할 거면, 홈에서 노출시키고 싶은 쿼리를 지정해서 노출해야함.
  • 방법 2. playlist API 를 사용할 거면, 우리가 추천하고 싶은 모든 음악정보가 들어있는 유튜브 채널이 있어야 함.
    • 이는 해당 채널 의존적임.
    • 그렇다고 자체적으로 채널을 운영하자니, 그렇게 할거면 자체 db 를 구축하는게 좋을 것 같음.
    • 자체 db 를 구축하려면 운영 인력이 필요함. (키워드에 따른 플레이리스트를 모두 만들어줄 인력)

2. 유튜브 플레이리스트 필터링

  • 필터링
    • 두가지 방식의 필터링이 가능함. 하나는 쿼리 기반, 하나는 토픽 기반
    • 쿼리 기반
      • 쿼리: "새벽", 태그: "슬픔" => 쿼리: "새벽, 슬픔"으로 재검색
      • 이렇게 쿼리를 붙여서 재검색하는 방식
      • 유튜브 api 의 필터기능을 활용하지 않기 때문에 엄밀히 말하면 필터는 아님
      • 대신 태그를 우리가 자유롭게 정하고 조합해서 사용할 수 있음.
    • 토픽 기반
      • 쿼리: "새벽", 토픽: "클래식 음악" => 쿼리: "새벽" 결과에서 클래식 음악만 필터링해서 보여줌
      • 유튜브 api 의 토픽기능을 활용해 필터링 하기 때문에 필터라고 볼 수 있음
      • 대신 유튜브에서 지정한 토픽만 사용 가능 - 기독교음악, 클래식음악, 도시음악, 일렉, .... 등 음악의 장르로 토픽을 구분함.

구현

  • 방법 1. 태그 기능 추가 (쿼리 기반)
  • 방법 2. 필터링 기능 추가 (토픽 기반)
  • 방법 3. 태그 기능, 필터링 기능 모두 추가 (쿼리 + 토픽 기반)

3. 유튜브 플레이리스트 검색

  • 플레이 리스트는 검색 가능함.
  • 대신 유튜브 전체 data 기반으로 api가 설계되어 있어서, 음악만 가져 오려면 비용이 매우 커짐
  • 유튜브 플레이 리스트 검색(n) => 플레이 리스트 아이템 검색(m) => 전체 비디오 검색(1)
    • 총 n x m + 1 의 요청 비용이 발생함.
    • 만약 검색어가 음악과 무관한 검색어라면 요청비용이 매우 커질 수 있음.

구현

  • 위의 요청비용을 감수하고 중간에 캐시 db 두는 방식으로 가능은 할 것 같은데, 좋은 성능은 보장 못함.

4. 유튜브 플레이리스트 즐겨찾기

  • 이건 직접 구현하면 되서 이슈 없음
  • 설계하는대로 구현하면 됨.

5. 그 외 가능한 것들

5.1. 비디오 업로드 알림

  • reference: https://developers.google.com/youtube/v3/guides/push_notifications
  • 모니터링 할 채널 ID 값을 통해 해당 채널에서 아래 이벤트가 발생했을 때 푸쉬알림을 받을 수 있음.
    • 비디오가 업로드 되었을 때
    • 비디오 제목이 업데이트 되었을 때
    • 비디오 상세정보가 업데이트 되었을 때