[파이썬] YouTube API 업로드 예제

YouTube API를 사용하여 동영상을 업로드하는 예제 코드를 제공합니다. 이 코드는 Python을 사용하며, Google API Client Library를 설치해야 합니다. 먼저, 필요한 패키지를 설치하고 코드를 실행할 수 있도록 준비해주세요.

  1. Google API Client Library 설치:
pip install google-api-python-client
  1. OAuth 2.0 클라이언트 ID 생성:
    • YouTube API를 사용하여 동영상을 업로드하려면 OAuth 2.0 클라이언트 ID가 필요합니다. Google 개발자 콘솔(https://console.developers.google.com/)에서%EC%97%90%EC%84%9C) 프로젝트를 생성하고, YouTube Data API v3를 사용 설정한 후, OAuth 2.0 클라이언트 ID를 생성하세요. 이때 “데스크톱 앱”을 선택하면 됩니다. 클라이언트 ID가 생성되면 클라이언트 비밀번호와 OAuth 2.0 클라이언트 ID를 메모해두세요.

이제 아래의 예제 코드를 사용하여 YouTube API를 활용하여 동영상을 업로드할 수 있습니다:

import os
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaFileUpload

## OAuth 2.0 클라이언트 ID 및 스코프 설정
CLIENT_SECRET_FILE = 'client_secret.json'
SCOPES = ['https://www.googleapis.com/auth/youtube.upload']

def get_authenticated_service():
    # OAuth 2.0 인증 흐름 초기화
    flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
    credentials = flow.run_local_server()

    # 인증된 서비스 반환
    return build('youtube', 'v3', credentials=credentials)

def upload_video(youtube, video_path, title, description, tags):
    try:
        # 동영상 업로드 정보 설정
        request_body = {
            'snippet': {
                'title': title,
                'description': description,
                'tags': tags
            },
            'status': {
                'privacyStatus': 'public'  # 동영상 공개 설정 (public, private, unlisted 중 선택)
            }
        }

        # 동영상 업로드 요청 생성
        media = MediaFileUpload(video_path)
        insert_request = youtube.videos().insert(
            part='snippet,status',
            body=request_body,
            media_body=media
        )

        # 동영상 업로드 실행
        response = insert_request.execute()

        # 업로드 성공 시 동영상 ID 반환
        if 'id' in response:
            print('동영상 업로드 완료. 동영상 ID:', response['id'])
        else:
            print('동영상 업로드 실패.')

    except HttpError as e:
        print('동영상 업로드 중 오류 발생:', e)

if __name__ == '__main__':
    # OAuth 2.0 인증 및 YouTube 서비스 생성
    youtube = get_authenticated_service()

    # 업로드할 동영상 파일 경로 설정
    video_path = 'YOUR_VIDEO_FILE_PATH_HERE'  # 실제 동영상 파일 경로로 바꿔주세요.

    # 업로드할 동영상 정보 설정
    title = 'YOUR_VIDEO_TITLE_HERE'
    description = 'YOUR_VIDEO_DESCRIPTION_HERE'
    tags = ['tag1', 'tag2', 'tag3']  # 필요한 만큼 태그를 추가하세요.

    upload_video(youtube, video_path, title, description, tags)

위 코드에서 client_secret.json 파일에는 본인의 OAuth 2.0 클라이언트 ID 및 클라이언트 비밀번호 정보가 포함되어 있어야 합니다. 또한 YOUR_VIDEO_FILE_PATH_HERE, YOUR_VIDEO_TITLE_HERE, YOUR_VIDEO_DESCRIPTION_HERE를 실제 동영상 파일 경로와 업로드할 동영상의 제목, 설명으로 변경해주시기 바랍니다.

위 예제 코드를 실행하면 YouTube API를 통해 동영상이 업로드되며, 업로드 성공 시 해당 동영상의 ID가 출력됩니다. 업로드된 동영상은 “public”, “private”, “unlisted” 중 하나의 공개 설정으로 지정할 수 있습니다. 코드에서는 “public”으로 설정되어 있으며, 필요에 따라 변경하실 수 있습니다.

이 예제 코드를 사용하여 동영상을 업로드할 수 있지만, 더 많은 기능과 옵션을 활용하려면 YouTube API 문서를 참고하시기 바랍니다.