ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유튜브(Youtube) API - 6. Data API (Channels)
    소프트웨어개발 이야기 2020. 2. 10. 11:20

    유튜브 데이터 API 뜯어보기 - Channels

     

    본글에서는 3.API 살펴보기 에서 간단하게 알아봤던 유튜브 Data API를 기능별로 하나씩 살펴보고 실제 API 호출을 통해 결과를 확인해 보도록 하겠다.

     


     

    시작하기에 앞서 정리하는 차원에서 다시한번 유튜브 API의 구성을 살펴보자.

    유튜브 API는 크게 세가지로 구분한다.

     

    Youtube Data API(v3)

    유튜브와 관련된 기본적인 API로, 동영상을 업로드하거나 재생목록을 관리하는 등의 가장 기본적인 기능 제공

     

    Youtube Analytics API

    유튜브의 동영상 및 채널에 대한 시청 통계, 인기도 통계 등 검색

     

    Youtube Live Streaming API

    유튜브 방송을 예약하고 , 라이브 스트림을 관리

     

     

     

    이중 기본 기능을 제공하지만 가장 중요한 것은 Data API다. Data API는 다음과 같은 리소스들의 기능을 다루고 있다. (각 리소스에 대한 설명은 3.API 살펴보기를 참고한다.)

     

    Channels

    > 특정 채널에 대한 정보 검색(내채널 조회, 채널이름 조회, 채널아이디 조회)

    > 채널 메타데이터 업데이트

     

    Playlists,  PlaylistItems

    > 자신 또는 특정 사용자의 재생목록조회

    > 재생목록 추가/수정/삭제

    > 재생목록 정보 조회

    > 재생목록에 리소스 추가

    > 재생목록의 리소스 수정/삭제

     

    Videos

    > 동영상 목록 조회

    > 동영상 업로드, 메타데이터 설정

    > 동양상 메타데이터 업데이트

    > 동영상 삭제

    > 동영상 좋아요/싫어요 평가 추가/삭제

     

    Search

    > 검색 조건에 해당하는 동영상/채널/재생목록 조회

     

    Activities

    특정 채널이나 사용자가 유튜브에서 실행한 작업의 정보(동영상 평가, 동영상 공유, 동영상을 즐겨찾기에 추가, 동영상에 댓글 달기, 동영상 업로드 등)를 조회

     

    Captions

    > 자막 목록 조회, 자막 삭제

    > 자막 파일 등록, 업데이트, 다운로드

     

    Comments

    > 채널(토론) 또는 동영상에 달린 댓글목록 조회

    > 댓글 추가/수정/삭제 

    > 특정 댓글 스팸 처리

     

    Subscriptions

    > 특정 채널을 구독/삭제

    > 구독 채널 목록 조회

     

     

    위에 나와있는 모든 리소스들의 API를 본글에서 다루기에는 내용이 너무 많기 때문에, 하나씩 순서대로 살펴보도록 하겠다. 그 첫번째 순서로 채널(Channel)이다.(드디어 본격적인 코딩 시간이다. ㅎㅎㅎ)

     


     

    본 글에서는 사전적인 API 설명보다는 시나리오 기반의 코딩내용으로 풀어가려한다.(API에  대한 자세한 설명은 레퍼런스에 자세히 나와있다.)

    개인적으로 레퍼런스 문서의 아쉬운 점은, 함수의 기능과 시그니쳐 설명이 주를 이룬다는 점이다. 이런 사전식 나열은 API가 익숙한 중/고급 개발자들에게는 편하지만 처음 접하는 초급 개발자들에게는 꽤나 난해하게 다가올 수 밖에 없다.

    때문에 본 글에서는 가상의 시나리오를 작성하고 API를 통해 이를 구현하는 방식으로 설명을 진행한다.

     

     

    Channels

     

    > Channels:list

    특정 채널에 대한 정보 검색(내채널 조회, 채널이름 조회, 채널아이디 등 조회)

     

    시나리오 1. '놀면뭐하니?' 채널의 설명, 대표 이미지, 조회수, 구독자수, 동영상수를 조회하여 출력한다.

     

    1. 유튜브 사이트에서 검색을 통해 '놀면뭐하니?' 채널 아이디를 얻어온다.

     

    2. 채널 아이디를 알았으니, 별거 없다. 지금까지 했던 대로, OAuth2 인증을 통해 권한을 얻어오고 친절한 유튜브씨가 제공하는 라이브러리를 통해 channels.list 메소드 호출하면 끝!

    5.인증받고 사용하기 글에서 작성해놓은 OAuth2 클래스를 활용해서 권한 관련 코드가 깔끔하게 정리됐다. list 메소드의 id 속성에 '놀면뭐하니?' 채널 아이디를 설정하고 3.API 살펴보기 글에서 설명했던 part와 fields 속성을 통해 시나리오에서 원했던 값들만 얻어왔다. 지금은 단순히 하나의 채널정보만 조회하기 때문에 할당량 고민을 할 필요가 없지만 나중에 많은 정보(동영상 목록 등)를 조회하는 상황이 되면 할당량 관리 못해서 피눈물 나는 경우가 많다.(구글에서 보내는 할당량 관련 메일이 그렇게 무서울수가 없다오.. -_ -) API를 사용할때는 필요한 데이터만 얻기 위한 노력이 반드시! 필요하다.

     

    3. 자랑스러운 결과를 확인해 보자. 쫘잔~

    사실.. 뭐 별거 없다 -_ -;  지금은 간단한 결과지만 다양한 API를 활용해서 보다 유의미한 결과가 나올날이 멀지 않았다. 힘내자 -_ -+

     

     

    시나리오 2. 국내 "뉴스" 카테고리의 대표적인 채널 3개를 조회하여 출력한다.

     

    1. 뉴스 카테고리 아이디를 얻어온다.

    GuideCategories.list 메소드를 통해서 특정 카테고리의 아이디를 조회할 수 있다. 유튜브 개발 사이트에서 제공하는 API 실행기를 통해서 카테고리 목록을 조회하고 결과값에서 뉴스 카테고리 아이디를 찾아보자.

     

    2. Channels:list 메소드를 통해 3개의 채널 정보를 조회한다.

    categoryId 속성에 1번에서 조회한 뉴스 카테고리의 아이디 값을 설정했다. 그리고 3개의 결과값을 얻기 위해 maxResults 속성에 3을 설정했다.

     

    3. 결과값을 확인한다.

     

    채널 정보를 변경하는 Channels:update API는 다른 리소스와 관련된 데이터를 사용하기 때문에 다른 리소스의 조회성 API를 살펴본 뒤 알아보도록 하자.

     


     

    이제 채널 관련 API 하나 봤는데 생각보다 길어졌다. 역시 너무 긴 글은 작성자나 독자나 지치기 마련이다. 남은 API들은 차근 차근 다음 글에서 알아보도록 하겠다. (일은 쌓여 가고 정리할 시간은 부족하고 ㅜ0ㅜ)

    댓글 6

    • Sean 2021.01.05 12:09

      가이드 카테고리 전체와 채널 속 list의 필터 중 카테고리 아이디, 둘다 deprecated 되었네요. 제가 만들고자 했던 건 특정 카테고리 아이디 값으로 상위 특정 갯수의 채널 아이디 값을 리스트로 가져오는 거였는데, 대안을 찾아보고 있는데 없는 것 같네요.. 구글이 그냥 저걸 없앴다면 대체품을 만들어놨을거 같은데 제가 못찾는건지.. ㅠㅠ

      • 핑크 Pinkgom 2021.01.13 14:28 신고

        youtube api는 생각보다 완벽하지 않고 구멍도 많은 편입니다. API 호출로 모든걸 해결할 수 없을때는 데이터를 내부에 저장해서 여러 api 를 호출해서 조합하시는걸 권장합니다. 아무쪼록 원하는 결과 얻으시길 바라요~

    • 익명 2021.02.25 14:21

      혹시 유튜브 api에서 특정 채널의 id를 받아와서 그 채널을 차단할 수 있는 기능은 없나요?

      • 핑크 Pinkgom 2021.03.08 16:08 신고

        현재 버전의 API에서 특정 채널을, 특정 사용자가 차단하는 API는 찾기 어렵네요. 혹시 발결하시는 분이 계시다면 댓글 부탁드립니다.

    • 야옹이 2021.03.07 08:47

      안녕하세요 자체사이트에 구글 아이디 로그인api 연동후 youtube 채널id 를 해당아이디별 받고싶은데.. 가능한가요..? 구글링하고있는데 channelid는 youtube에서 직접보고 조회하는건 알겠는데..

      몇일째 구글링하고있네요 ㅜㅠ 알려주시면 감사하겠습니다.

      • 핑크 Pinkgom 2021.03.08 15:48 신고

        Channel:list 메소드를 사용하시면 됩니다. 이때, 필터 매개변수 mine 의 값을 true 로 지정하면 본인이 소유한 채널정보만 반환합니다. 추가로, 콘텐츠 소유자(CO)의 경우, managedByMe 값을 true 로 지정하면 소유한 모든 채널 정보를 가져올 수 있습니다.

        자세한 내용은 아래 가이드 문서를 참고하세요.
        https://developers.google.com/youtube/v3/docs/channels/list

Designed by Joypinkgom.