How to upload a video to YouTube using YouTube Data API in Python – Learn Data Analysis
Mục lục bài viết
How to upload a video to YouTube using YouTube Data API in Python
In this tutorial, we are going to learn how to upload a video to YouTube using YouTube Data API in Python.
Makes sure your account is verified. If not, go to https://www.youtube.com/verify to verify your account.
This method supports media upload. Uploaded files must conform to these constraints:
- Maximum file size: 128GB
- Accepted Media MIME types:
video/*
,application/octet-stream
Step 1. Enable YouTube Data API service
- Log in to your Google Cloud Platform,
- Select your project
- Enable YouTube Data API service
If this is your first time working with Google API service, to learn how to create your first Google Project.
Step 2. Install Python Library
pipinstall
Buy Me a Coffee? Your support is much appreciated!
PayPal Me: https://www.paypal.me/jiejenn/5
Venmo: @Jie-Jenn
Buy Me a Coffee? Your support is much appreciated!
PayPal Me: https://www.paypal.me/jiejenn/5
Venmo: @Jie-Jenn
Source Code:
import
datetime from Googleimport
Create_Service from googleapiclient.httpimport
MediaFileUpload CLIENT_SECRET_FILE ='<client file.json>'
API_NAME ='youtube'
API_VERSION ='v3'
SCOPES = ['https://www.googleapis.com/auth/youtube.upload'
] service = Create_Service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES) upload_date_time = datetime.datetime(2020
,12
,25
,12
,30
,0
).isoformat() +'.000Z'
request_body = {'snippet'
: {'categoryI'
:19
,'title'
:'Upload Testing'
,'description'
:'Hello World Description'
,'tags'
: ['Travel'
,'video test'
,'Travel Tips'
] },'status'
: {'privacyStatus'
:'private'
,'publishAt'
: upload_date_time,'selfDeclaredMadeForKids'
: False, },'notifySubscribers'
: False } mediaFile = MediaFileUpload('HelloWorld.MP4'
) response_upload = service.videos().insert
( part='snippet,status'
, body=request_body, media_body=mediaFile ).execute() service.thumbnails().set( videoId=response_upload.get('id'
), media_body=MediaFileUpload('thumbnail.png'
) ).execute()
Google.py
import
pickleimport
osfrom
google_auth_oauthlib.flowimport
Flow, InstalledAppFlowfrom
googleapiclient.discoveryimport
buildfrom
googleapiclient.httpimport
MediaFileUpload, MediaIoBaseDownloadfrom
google.auth.transport.requestsimport
Requestdef
Create_Service
(client_secret_file, api_name, api_version, *scopes)
: print(client_secret_file, api_name, api_version, scopes, sep='-'
) CLIENT_SECRET_FILE = client_secret_file API_SERVICE_NAME = api_name API_VERSION = api_version SCOPES = [scopefor
scopein
scopes[0
]] print(SCOPES) cred =None
pickle_file = f'token_{API_SERVICE_NAME}_{API_VERSION}.pickle'
if
os.path.exists(pickle_file):with
open(pickle_file,'rb'
)as
token: cred = pickle.load(token)if
not
credor
not
cred.valid:if
credand
cred.expiredand
cred.refresh_token: cred.refresh(Request())else
: flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES) cred = flow.run_local_server()with
open(pickle_file,'wb'
)as
token: pickle.dump(cred, token)try
: service = build(API_SERVICE_NAME, API_VERSION, credentials=cred) print(API_SERVICE_NAME,'service created successfully'
)return
serviceexcept
Exceptionas
e: print('Unable to connect.'
) print(e)return
None
def
convert_to_RFC_datetime
(year=
1900
, month=1
, day=1
, hour=0
, minute=0
): dt = datetime.datetime(year, month, day, hour, minute,0
).isoformat() +'Z'
return
dt