Viết ứng dụng đăng video lên kênh Youtube bằng Python
Để đăng video lên YouTube bằng Python, bạn cần sử dụng YouTube Data API v3 của Google. Bạn có thể sử dụng thư viện google-auth và google-api-python-client để thực hiện các yêu cầu API.
Bước 1: Tạo một dự án trên Google Cloud Console và kích hoạt YouTube Data API v3.
Bước 2: Tạo một tệp tin client_secrets.json chứa thông tin đăng nhập của dự án của bạn.
Bước 3: Sử dụng mã sau đây để đăng nhập vào tài khoản Google của bạn và tạo một phiên làm việc:
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
CLIENT_SECRET_FILE = 'client_secrets.json'
SCOPES = ['https://www.googleapis.com/auth/youtube.upload']
creds = None
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
creds = flow.run_local_server(port=0)
# Lưu thông tin phiên làm việc vào một tệp tin
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
Bước 4: Sử dụng mã sau để tải lên video:
import os
import google.auth
import google.auth.transport.requests
import google.oauth2.credentials
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaFileUpload
def upload_video(youtube, file, title, description, category, privacy):
body=dict(
snippet=dict(
title=title,
description=description,
tags=["python", "video", "upload"],
categoryId=category
),
status=dict(
privacyStatus=privacy
)
)
# Tạo một yêu cầu tải lên media
insert_request = youtube.videos().insert(
part=",".join(body.keys()),
body=body,
media_body=MediaFileUpload(file, chunksize=-1, resumable=True)
)
# Thực hiện tải lên
response = None
error = None
while response is None:
try:
status, response = insert_request.next_chunk()
if response is not None:
print(response)
except HttpError as e:
error = e
print(f"An HTTP error {e.resp.status} occurred: {e.content}")
if error is not None:
print(f"Failed to upload video: {error}")
return False
return True
# Đăng nhập vào tài khoản
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# Kiểm tra xem tài khoản đã đăng nhập hay chưa
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(google.auth.transport.requests.Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
CLIENT_SECRET_FILE, SCOPES)
creds = flow.run_local_server(port=0)
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
# Tạo đối tượng YouTube API
youtube = build
Bước 5: Sử dụng hàm upload_video với các tham số tương ứng để tải lên video:
upload_video(youtube, '/path/to/video.mp4', 'Video title', 'Video description', '22', 'unlisted')
Trong đó:
‘/path/to/video.mp4’ là đường dẫn đến file video trên máy tính của bạn.
‘Video title’ là tiêu đề của video.
‘Video description’ là mô tả của video.
’22’ là ID của thể loại của video (tùy chọn).
‘unlisted’ là trạng thái bảo mật của video (có thể là “private”, “public” hoặc “unlisted”).
Sau khi thực hiện, video sẽ được tải lên kênh của bạn trên YouTube.
Lưu ý: Bạn cần phải có quyền truy cập để đăng video lên kênh của mình. Nếu bạn đang đăng nhập vào tài khoản khác với tài khoản YouTube của mình, bạn cần phải đăng xuất trước khi thực hiện đăng nhập.