유튜브 리스트 추출: API와 파이썬으로 자동화하는 방법

유튜브에서 다양한 콘텐츠를 관리하거나 분석하려면, 유튜브 리스트를 자동으로 추출하는 것이 매우 유용합니다. YouTube Data API와 파이썬을 사용하면, 특정 채널의 쇼츠나 일반 동영상 리스트를 손쉽게 추출할 수 있습니다. 이 글에서는 유튜브 리스트 추출을 위한 API 설정과 파이썬 코드 작성법을 단계별로 설명하고, 다양한 활용사례까지 소개하겠습니다.

1. 유튜브 리스트 추출을 위한 준비

유튜브 리스트를 추출하려면 YouTube Data API가 필요합니다. 이 API는 유튜브 동영상, 채널, 재생목록 등의 데이터를 제공하며, 이를 활용해 원하는 정보를 자동으로 수집할 수 있습니다.

1.1 YouTube Data API 키 발급

먼저, Google Cloud Platform(GCP)에서 YouTube Data API를 활성화하고 API 키를 발급받아야 합니다. 아래 단계에 따라 설정합니다.

  1. Google Cloud Console에 로그인 후 새 프로젝트를 만듭니다.(사이트 상단의 My First Project – NEW PROJECT – Project name 입력후 CREATE 클릭)
  2. 좌측 상단 3선메뉴 클릭후 API 및 서비스 > 라이브러리에서 YouTube Data API v3를 검색해 활성화(ENABLE 클릭)합니다.
  3. API 및 서비스 > 사용자 인증 정보(Creadentials)에서 API 키를 생성하고 복사합니다. 이 API 키는 파이썬 코드에서 YouTube Data API와의 연결에 사용됩니다.

1.2 유튜브 채널 ID 확인

추출하려는 동영상 리스트가 있는 채널의 ID도 필요합니다. 채널 ID는 채널 URL에서 확인할 수 있습니다. https://www.youtube.com/channel/UCxxxx 형태의 URL에서 UC로 시작하는 문자열이 바로 채널 ID입니다. 본인의 유튜브 채널 초기화면에서 Customize channel을 클릭하면 주소창에서 확인할 수 있습니다.

2. 파이썬으로 쇼츠 유튜브 리스트 추출하기

이제 발급받은 API 키와 채널 ID를 사용해 파이썬으로 유튜브 쇼츠 리스트를 추출할 수 있습니다. 여기서 주로 사용할 API는 youtube.search()입니다. 이 API를 통해 검색 조건을 설정하고, 해당 조건에 맞는 쇼츠 리스트를 추출할 수 있습니다.

쇼츠 유튜브 리스트 추출 개요 그림

파이썬 코드 예시: 쇼츠 유튜브 리스트 추출


from googleapiclient.discovery import build

# API 키 입력
 API_KEY = 'YOUR_API_KEY'

# YouTube API 서비스 빌드
youtube = build('youtube', 'v3', developerKey=API_KEY)

# 특정 채널에서 쇼츠 리스트 추출 (페이지네이션 포함)
def get_shorts_titles(channel_id, max_results=100):
    titles = []
    next_page_token = None

    while len(titles) < max_results:
        request = youtube.search().list(
            part='snippet',
            channelId=channel_id,
            maxResults=min(50, max_results - len(titles)),  # 최대 50개 요청, 남은 수에 맞춰 요청 조정
            type='video',
            videoDuration='short',  # 짧은 비디오(쇼츠)만 가져오기
            pageToken=next_page_token
        )

        response = request.execute()

        # 결과에서 제목 추출
        titles.extend([item['snippet']['title'] for item in response['items']])

        # 다음 페이지로 이동
        next_page_token = response.get('nextPageToken')

        # 더 이상 다음 페이지가 없으면 종료
        if not next_page_token:
            break

    return titles[:max_results]

# 채널 ID 입력
channel_id = 'YOUR_CHANNEL_ID'

# 쇼츠 제목 리스트 출력
shorts_titles = get_shorts_titles(channel_id, max_results=100)
for idx, title in enumerate(shorts_titles, 1):
    print(f"{idx}. {title}")

코드 설명:

  1. API 연결: 발급받은 API 키로 YouTube API 서비스에 연결합니다.
  2. 페이지네이션 추가: get_shorts_titles 함수에서 nextPageToken을 사용하여 여러 페이지의 결과를 가져올 수 있도록 설정했습니다. 최대 100개 결과를 가져올 때까지 반복합니다.
  3. 필터 조건 변경: q='Shorts' 조건을 제거하여 필터링이 너무 제한적이지 않도록 했습니다.
  4. 제목 추출 및 출력: 각 동영상의 제목을 리스트로 저장한 후, 지정한 수만큼 출력합니다.

처음으로 코딩을 실행하면 googleapiclient 모듈이 설치 되어 있지 않아서 오류가 발생합니다. 이때, 터미널 창에서 pip install google-api-python-client 명령어로 해당 모듈을 설치하시면 됩니다.

3. 파이썬으로 동영상 유튜브 리스트 추출하기

이제 유튜브에서 쇼츠뿐만 아니라 일반 동영상 리스트도 파이썬을 사용해 쉽게 추출할 수 있습니다. 동영상 리스트를 추출할 때 역시 youtube.search() API를 사용하며, 검색 조건을 다르게 설정하면 긴 영상도 추출 가능합니다.

동영상 유튜브 리스트 추출 개요

파이썬 코드 예시: 동영상 유튜브 리스트 추출

from googleapiclient.discovery import build
from datetime import timedelta

# API 키 입력
 API_KEY = 'YOUR_API_KEY'

# YouTube API 서비스 빌드
youtube = build('youtube', 'v3', developerKey=API_KEY)

# 특정 채널에서 일반 동영상 리스트 추출
def get_video_titles(channel_id, max_results=100):
    titles = []
    next_page_token = None

    while len(titles) < max_results:
        # 검색 요청
        request = youtube.search().list(
            part='id',
            channelId=channel_id,
            maxResults=min(50, max_results - len(titles)),
            type='video',
            pageToken=next_page_token
        )
        
        search_response = request.execute()

        # 동영상 ID 수집
        video_ids = [item['id']['videoId'] for item in search_response['items']]
        
        # 동영상 ID로 각 동영상의 길이를 확인
        video_request = youtube.videos().list(
            part='snippet,contentDetails',
            id=','.join(video_ids)
        )
        
        video_response = video_request.execute()

        # 동영상 길이가 60초 이상인 경우만 제목을 리스트에 추가
        for item in video_response['items']:
            duration = item['contentDetails']['duration']
            duration_seconds = parse_duration(duration)

            if duration_seconds > 60:  # 60초 이상인 경우만 추가
                titles.append(item['snippet']['title'])

        # 다음 페이지로 이동
        next_page_token = search_response.get('nextPageToken')
        
        # 더 이상 다음 페이지가 없으면 종료
        if not next_page_token:
            break

    return titles[:max_results]

# ISO 8601 기간을 초 단위로 변환하는 함수
def parse_duration(duration):
    parsed_duration = timedelta()
    if 'PT' in duration:
        time_str = duration.replace('PT', '')
        hours = minutes = seconds = 0
        if 'H' in time_str:
            hours, time_str = time_str.split('H')
            parsed_duration += timedelta(hours=int(hours))
        if 'M' in time_str:
            minutes, time_str = time_str.split('M')
            parsed_duration += timedelta(minutes=int(minutes))
        if 'S' in time_str:
            seconds = time_str.replace('S', '')
            parsed_duration += timedelta(seconds=int(seconds))
    return parsed_duration.total_seconds()

# 채널 ID 입력
channel_id = 'YOUR_CHANNEL_ID'

# 일반 동영상 제목 리스트 출력
video_titles = get_video_titles(channel_id, max_results=100)
for idx, title in enumerate(video_titles, 1):
    print(f"{idx}. {title}")

코드 설명:

  1. 검색 요청: 먼저 search().list를 통해 id만 가져와서 해당 채널의 모든 동영상 ID를 가져옵니다.
  2. 동영상 길이 확인: videos().list 메소드로 각 동영상의 contentDetails를 요청하고, duration을 확인하여 60초 이상의 동영상만 필터링합니다.
  3. 동영상 제목 저장 및 출력: 길이가 60초 이상인 동영상만 리스트에 추가하고, 제목을 출력합니다.

4. 유튜브 리스트 활용사례

이렇게 추출한 유튜브 쇼츠나 동영상 리스트는 여러 분야에서 활용될 수 있습니다. 여기 몇 가지 대표적인 사례를 소개합니다.

유튜브 리스트 활용사례 그림

4.1 콘텐츠 분석과 트렌드 파악

유튜브 동영상 리스트를 자동으로 추출해 분석할 수 있다면, 콘텐츠의 트렌드를 빠르게 파악할 수 있습니다. 예를 들어, 특정 채널의 인기 동영상을 분석하여 어떤 주제나 형식이 잘 반응하는지 확인할 수 있습니다. 추출한 데이터는 엑셀에 저장하거나, 추가적인 분석 도구와 결합해 더 깊이 있는 분석이 가능합니다.

4.2 마케팅 캠페인 관리

브랜드나 상품을 홍보하기 위해 유튜브를 사용하는 경우, 경쟁사의 동영상 리스트를 추출해 어떤 동영상이 가장 많은 조회수를 기록했는지, 어떤 키워드로 제목을 구성했는지 분석할 수 있습니다. 이러한 정보를 통해 캠페인 전략을 세우고, 성공적인 콘텐츠의 요소를 벤치마킹할 수 있습니다.

4.3 교육 콘텐츠 관리

대규모의 동영상 콘텐츠를 관리해야 하는 크리에이터나 기업은 추출한 동영상 리스트를 활용해 콘텐츠 관리에 도움을 받을 수 있습니다. API를 통해 모든 동영상의 제목, 설명, 게시일 등의 데이터를 자동으로 수집하고, 이를 데이터베이스나 스프레드시트에 정리하여 손쉽게 관리할 수 있습니다.

4.4 자동화된 재생목록 생성

채널에 업로드된 동영상을 카테고리별로 분류해 자동으로 재생목록을 생성하는 데에도 이 방법을 사용할 수 있습니다. 예를 들어, 특정 주제의 동영상만을 추출해 해당 주제에 맞는 재생목록을 생성하고 자동으로 업데이트하는 식으로 활용할 수 있습니다.

5. 정리하기

YouTube Data API와 파이썬을 활용한 유튜브 리스트 추출은 콘텐츠 분석, 마케팅 전략 수립, 교육 자료 관리 등 다양한 분야에서 유용하게 활용될 수 있습니다. 쇼츠뿐만 아니라 일반 동영상 리스트도 쉽게 추출할 수 있으며, 추출한 데이터를 통해 더욱 효율적인 콘텐츠 기획과 관리를 할 수 있습니다. API 설정과 파이썬 코드를 통해 유튜브 데이터를 손쉽게 관리해 보세요! 혹시, 파이썬이 처음이시라면 일단 VS CODE 설치 – 윈도우 기준 포스트를 보시고 시작하시기 바랍니다.

유사한 게시물