본문 바로가기
일상생활 (EveryDay)

유튜브 채널 동영상 목록 및 파일 다운로드 자동화

by 날으는물고기 2024. 3. 12.

유튜브 채널 동영상 목록 및 파일 다운로드 자동화

GitHub - pytube/pytube: A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.

유튜브 동영상을 다운로드하는 방법으로는 pytube라는 파이썬 라이브러리를 사용할 수 있습니다. pytube는 유튜브의 동영상 URL을 입력받아 해당 동영상을 다운로드할 수 있게 해주는 도구입니다. 아래에는 pytube를 이용한 유튜브 동영상 다운로드 과정을 자세히 설명합니다.

 

먼저, pytube 라이브러리를 사용하기 위해 이를 시스템에 설치해야 합니다. 이는 파이썬의 패키지 관리자인 pip를 사용하여 쉽게 설치할 수 있습니다. 터미널이나 커맨드 프롬프트에서 아래 명령어를 실행하면 됩니다.

pip install pytube

Pytube를 이용한 동영상 다운로드

pytube를 사용하여 유튜브 동영상을 다운로드하는 과정은 다음과 같습니다.

  • 유튜브 동영상의 URL을 YouTube 객체에 전달하여 인스턴스를 생성합니다.
  • 해당 인스턴스에서 사용 가능한 스트림 중에서 가장 높은 해상도를 가진 스트림을 선택합니다.
  • 선택된 스트림을 사용하여 동영상을 현재 작업 중인 디렉토리에 다운로드합니다.

예제 코드

from pytube import YouTube

# 유튜브 동영상 URL
video_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'

try:
    yt = YouTube(video_url) # YouTube 객체 생성
    stream = yt.streams.get_highest_resolution() # 가장 높은 해상도의 스트림 선택
    stream.download() # 동영상 다운로드
    print("동영상 다운로드 완료")
except Exception as e:
    print(f"동영상 다운로드 중 오류 발생: {e}")

주의사항

  • 저작권 문제: pytube를 사용하여 동영상을 다운로드할 때는 저작권을 반드시 고려해야 합니다. 저작권자의 허가 없이 동영상을 다운로드하는 것은 법적인 문제를 야기할 수 있으므로, 이를 위반하지 않도록 주의해야 합니다.
  • 유튜브 서비스 약관: 이 방법은 유튜브의 서비스 약관에 위배될 수 있으므로, 교육적 목적으로만 사용하고 실제 용도로 사용할 때는 주의가 필요합니다.
  • 유튜브의 변경사항: 유튜브의 인터페이스나 API가 변경될 경우, pytube 라이브러리가 작동하지 않을 수 있습니다. 따라서, pytube 라이브러리를 사용하기 전에는 항상 최신 버전으로 업데이트하는 것이 좋습니다.

이러한 점들을 고려하여 pytube를 사용할 때는 책임감 있는 행동이 필요합니다.

 

아래는, 특정 YouTube 채널에서 새 동영상을 감지하고 자동으로 다운로드하는 Python 코드의 예시입니다. 코드는 주기적으로 채널을 확인하고, 새로운 동영상이 발견되면 자동으로 다운로드합니다. 이 코드를 작성하기 위해서는 Google API를 사용하여 YouTube 채널의 동영상 목록을 가져오는 방법을 알아야 합니다. 아래 예제에서는 google-api-python-client 패키지를 사용합니다.

from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from pytube import YouTube
import time

# YouTube API 키 설정
API_KEY = "YOUR_YOUTUBE_API_KEY"

# 감지할 YouTube 채널의 ID
CHANNEL_ID = "YOUR_YOUTUBE_CHANNEL_ID"

# 이전에 감지된 동영상의 ID를 저장할 변수
previous_video_id = ""

def check_new_video():
    global previous_video_id

    # YouTube API 클라이언트 생성
    youtube = build('youtube', 'v3', developerKey=API_KEY)

    try:
        # 채널의 동영상 목록을 가져오기
        response = youtube.search().list(
            part="snippet",
            channelId=CHANNEL_ID,
            maxResults=1,
            order="date"
        ).execute()

        # 가장 최근의 동영상 ID 가져오기
        video_id = response['items'][0]['id']['videoId']

        # 새 동영상이 발견되었는지 확인
        if video_id != previous_video_id:
            print("새 동영상이 발견되었습니다. 다운로드를 시작합니다...")

            # YouTube 객체 생성
            yt = YouTube('https://www.youtube.com/watch?v=' + video_id)

            # 최고 품질의 동영상 스트림 선택
            stream = yt.streams.get_highest_resolution()

            # 동영상 다운로드
            stream.download()

            print("동영상 다운로드 완료.")

            # 이전 동영상 ID 업데이트
            previous_video_id = video_id
    except HttpError as e:
        print("YouTube API 오류:", e)

# 주기적으로 새 동영상을 확인하고 다운로드
while True:
    check_new_video()
    # 10분마다 새 동영상 확인
    time.sleep(600)

이 코드는 주어진 YouTube 채널에서 새 동영상을 확인하고, 이전에 확인한 동영상과 비교하여 새 동영상이 발견되면 자동으로 다운로드합니다. 코드는 10분마다 새 동영상을 확인하도록 설정되어 있습니다. 유튜브 API 키와 채널 ID를 본인의 값으로 바꿔야 합니다.

728x90

댓글