I found a sam template for uploads_video.py but I do know how to insert a thumbnail with insert_thumbnail in my second code it worked but I do not know how to implement it with resumable video upload. Always it is put me some errors. Please help meBy the way, my code is working on Python V3 and it is not autorizated for now.my code:
import http.clientimport httplib2import osimport randomimport timeimport datetimeimport google.oauth2.credentialsimport google_auth_oauthlib.flowfrom googleapiclient.discovery import buildfrom googleapiclient.errors import HttpErrorfrom googleapiclient.http import MediaFileUploadfrom google_auth_oauthlib.flow import InstalledAppFlowhttplib2.RETRIES = 1MAX_RETRIES = 10RETRIABLE_EXCEPTIONS = (httplib2.HttpLib2Error, IOError, http.client.NotConnected, http.client.IncompleteRead, http.client.ImproperConnectionState, http.client.CannotSendRequest, http.client.CannotSendHeader, http.client.ResponseNotReady, http.client.BadStatusLine)RETRIABLE_STATUS_CODES = [500, 502, 503, 504]CLIENT_SECRETS_FILE = 'youtube_client.json'SCOPES = ['https://www.googleapis.com/auth/youtube.upload']API_SERVICE_NAME = 'youtube'API_VERSION = 'v3'VALID_PRIVACY_STATUSES = ('public', 'private', 'unlisted')upload_date_time = datetime.datetime(2022, 12, 25, 12, 30, 0).isoformat() +'.000Z'request_body = {'snippet': {'categoryI': 10,'title': 'best music on the youtube | happy mood mix | AMP','description': "test",'tags': ['Travel', 'video test', 'Travel Tips'] },'status': {'privacyStatus': 'private','publishAt': upload_date_time,'selfDeclaredMadeForKids': False, },'notifySubscribers': False}def get_authenticated_service(): flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES) credentials = flow.run_console() return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)def initialize_upload(youtube,body,file): insert_request = youtube.videos().insert( part='snippet,status', body=body, media_body=MediaFileUpload(file, chunksize=-1, resumable=True) ) insert_thumbnail = youtube.thumbnails().set( videoId=response_upload.get('id'), media_body=MediaFileUpload('thumbnail.png') ).execute() resumable_upload(insert_request)def resumable_upload(request): response = None error = None retry = 0 while response is None: try: print('Uploading file...') status, response = request.next_chunk() if response is not None: if 'id' in response: print('Video id "%s" was successfully uploaded.' % response['id']) else: exit('The upload failed with an unexpected response: %s' % response) except HttpError as e: if e.resp.status in RETRIABLE_STATUS_CODES: error = 'A retriable HTTP error %d occurred:\n%s' % (e.resp.status, e.content) else: raise except RETRIABLE_EXCEPTIONS as e: error = 'A retriable error occurred: %s' % e if error is not None: print(error) retry += 1 if retry > MAX_RETRIES: exit('No longer attempting to retry.') max_sleep = 2 ** retry sleep_seconds = random.random() * max_sleep print('Sleeping %f seconds and then retrying...' % sleep_seconds) time.sleep(sleep_seconds)if __name__ == '__main__': youtube = get_authenticated_service() try: initialize_upload(youtube,request_body,"output.mp4" ) except HttpError as e: print('An HTTP error %d occurred:\n%s' % (e.resp.status, e.content))