티스토리 뷰

유튜브에서 특정 채널의 shorts영상만 일괄로 다운받고 싶을 때가 있다.
아래의 코드로 받을 수 있다. 코드를 응용하면 다른 조건의 영상들도 한번에 받을 수 있다.

import os
import google.auth
from googleapiclient.discovery import build
from pytube import YouTube

def download_shorts(channel_id):
    # Authenticate with YouTube Data API
    credentials, project = google.auth.default()
    youtube = build('youtube', 'v3', credentials=credentials)

    # Retrieve channel's uploads playlist
    channel_response = youtube.channels().list(part='contentDetails', id=channel_id).execute()
    uploads_playlist_id = channel_response['items'][0]['contentDetails']['relatedPlaylists']['uploads']

    # Retrieve playlist items and download "short" videos
    playlistitems_request = youtube.playlistItems().list(part='snippet', playlistId=uploads_playlist_id, maxResults=50)
    while playlistitems_request is not None:
        playlistitems_response = playlistitems_request.execute()
        for playlist_item in playlistitems_response['items']:
            video_id = playlist_item['snippet']['resourceId']['videoId']
            video_response = youtube.videos().list(part='snippet', id=video_id).execute()
            video_tags = video_response['items'][0]['snippet']['tags']
            if 'Shorts' in video_tags:
                print(f'Downloading {video_id}')
                video_url = f'https://www.youtube.com/watch?v={video_id}'
                yt = YouTube(video_url)
                yt.streams.filter(adaptive=True, file_extension='mp4').first().download()
        playlistitems_request = youtube.playlistItems().list_next(playlistitems_request, playlistitems_response)

if __name__ == '__main__':
    channel_id = 'INSERT_YOUTUBE_CHANNEL_ID_HERE'
    download_shorts(channel_id)

이 코드를 활용해서 영상제작을 자동화하기 위한 재료를 쉽게 수집할 수가 있다.
영상 다운로드 툴을 쓰지 않고도 가능하니 별도로 유료 서비스를 사용하지 않아도 된다.

아래 코드의 yt.streams.filter()를 사용하여 영상 확장자 및 품질을 선택할 수 있는데 관련 내용은 이곳에 좀더 자세히 나와있다.
아래 코드는 최상 품질 MP4로 받는 조건이다.

특정 채널의 영상을 거르기 위해서 유튜브 API를 사용해야 하는데, API키는 Google 개발자 콘솔에서 받을 수 있다.

관련된 글
좀 더 다양한 다운로드 옵션이나 특정 영상 한개만 받는 방법 등에 대해서 이곳에서 확인할 수 있다. 

 

파이썬 코드로 유튜브 영상 자동으로 다운받는 방법 | 테크버킷 블로그

파이썬 코드를 사용하여 유튜브 영상을 다운받는 방법을 소개합니다. youtube api 및 pytube 라이브러리를 이용합니다. 영상 한개를 다운받는 방법과 채널의 영상을 다운받는 방법으로 나누어 코드

techbukket.com

 

반응형
댓글