유튜브 리스트 추출: API와 파이썬으로 자동화하는 방법
유튜브에서 다양한 콘텐츠를 관리하거나 분석하려면, 유튜브 리스트를 자동으로 추출하는 것이 매우 유용합니다. YouTube Data API와 파이썬을 사용하면, 특정 채널의 쇼츠나 일반 동영상 리스트를 손쉽게 추출할 수 있습니다. 이 글에서는 유튜브 리스트 추출을 위한 API 설정과 파이썬 코드 작성법을 단계별로 설명하고, 다양한 활용사례까지 소개하겠습니다.
1. 유튜브 리스트 추출을 위한 준비
유튜브 리스트를 추출하려면 YouTube Data API가 필요합니다. 이 API는 유튜브 동영상, 채널, 재생목록 등의 데이터를 제공하며, 이를 활용해 원하는 정보를 자동으로 수집할 수 있습니다.
1.1 YouTube Data API 키 발급
먼저, Google Cloud Platform(GCP)에서 YouTube Data API를 활성화하고 API 키를 발급받아야 합니다. 아래 단계에 따라 설정합니다.
- Google Cloud Console에 로그인 후 새 프로젝트를 만듭니다.(사이트 상단의 My First Project – NEW PROJECT – Project name 입력후 CREATE 클릭)
- 좌측 상단 3선메뉴 클릭후 API 및 서비스 > 라이브러리에서 YouTube Data API v3를 검색해 활성화(ENABLE 클릭)합니다.
- 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}")
코드 설명:
- API 연결: 발급받은 API 키로 YouTube API 서비스에 연결합니다.
- 페이지네이션 추가:
get_shorts_titles
함수에서nextPageToken
을 사용하여 여러 페이지의 결과를 가져올 수 있도록 설정했습니다. 최대 100개 결과를 가져올 때까지 반복합니다. - 필터 조건 변경:
q='Shorts'
조건을 제거하여 필터링이 너무 제한적이지 않도록 했습니다. - 제목 추출 및 출력: 각 동영상의 제목을 리스트로 저장한 후, 지정한 수만큼 출력합니다.
처음으로 코딩을 실행하면 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}")
코드 설명:
- 검색 요청: 먼저
search().list
를 통해id
만 가져와서 해당 채널의 모든 동영상 ID를 가져옵니다. - 동영상 길이 확인:
videos().list
메소드로 각 동영상의contentDetails
를 요청하고,duration
을 확인하여 60초 이상의 동영상만 필터링합니다. - 동영상 제목 저장 및 출력: 길이가 60초 이상인 동영상만 리스트에 추가하고, 제목을 출력합니다.
4. 유튜브 리스트 활용사례
이렇게 추출한 유튜브 쇼츠나 동영상 리스트는 여러 분야에서 활용될 수 있습니다. 여기 몇 가지 대표적인 사례를 소개합니다.
4.1 콘텐츠 분석과 트렌드 파악
유튜브 동영상 리스트를 자동으로 추출해 분석할 수 있다면, 콘텐츠의 트렌드를 빠르게 파악할 수 있습니다. 예를 들어, 특정 채널의 인기 동영상을 분석하여 어떤 주제나 형식이 잘 반응하는지 확인할 수 있습니다. 추출한 데이터는 엑셀에 저장하거나, 추가적인 분석 도구와 결합해 더 깊이 있는 분석이 가능합니다.
4.2 마케팅 캠페인 관리
브랜드나 상품을 홍보하기 위해 유튜브를 사용하는 경우, 경쟁사의 동영상 리스트를 추출해 어떤 동영상이 가장 많은 조회수를 기록했는지, 어떤 키워드로 제목을 구성했는지 분석할 수 있습니다. 이러한 정보를 통해 캠페인 전략을 세우고, 성공적인 콘텐츠의 요소를 벤치마킹할 수 있습니다.
4.3 교육 콘텐츠 관리
대규모의 동영상 콘텐츠를 관리해야 하는 크리에이터나 기업은 추출한 동영상 리스트를 활용해 콘텐츠 관리에 도움을 받을 수 있습니다. API를 통해 모든 동영상의 제목, 설명, 게시일 등의 데이터를 자동으로 수집하고, 이를 데이터베이스나 스프레드시트에 정리하여 손쉽게 관리할 수 있습니다.
4.4 자동화된 재생목록 생성
채널에 업로드된 동영상을 카테고리별로 분류해 자동으로 재생목록을 생성하는 데에도 이 방법을 사용할 수 있습니다. 예를 들어, 특정 주제의 동영상만을 추출해 해당 주제에 맞는 재생목록을 생성하고 자동으로 업데이트하는 식으로 활용할 수 있습니다.
5. 정리하기
YouTube Data API와 파이썬을 활용한 유튜브 리스트 추출은 콘텐츠 분석, 마케팅 전략 수립, 교육 자료 관리 등 다양한 분야에서 유용하게 활용될 수 있습니다. 쇼츠뿐만 아니라 일반 동영상 리스트도 쉽게 추출할 수 있으며, 추출한 데이터를 통해 더욱 효율적인 콘텐츠 기획과 관리를 할 수 있습니다. API 설정과 파이썬 코드를 통해 유튜브 데이터를 손쉽게 관리해 보세요! 혹시, 파이썬이 처음이시라면 일단 VS CODE 설치 – 윈도우 기준 포스트를 보시고 시작하시기 바랍니다.