Python 3 Tkinter Google Drive Bulk Files Uploader Script Using Drive API & Access Token GUI Desktop App

Hi everyone do you know about Python 3 Tkinter Google Drive Bulk Files Uploader Script Using Drive API & Access Token GUI Desktop App. With this article, you can clearly see everything you have in doubt.

Python 3 Tkinter Google Drive Bulk Files Uploader Script Using Drive API & Access Token GUI Desktop App

Python 3 Tkinter Google Drive Bulk Files Uploader Script Using Drive API & Access Token GUI Desktop App

import pickle
import os
from google_auth_oauthlib.flow import Flow, InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload, MediaIoBaseDownload
from google.auth.transport.requests import Request
 
 
def 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 = [scope for scope in 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 cred or not cred.valid:
        if cred and cred.expired and 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 service
    except Exception as 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
from tkinter import *
from tkinter import filedialog
from pathlib import Path
from uploader import uploadFile
 
def openFile():
    try:
        filepath = filedialog.askopenfilename(title="Are you gonna upload this?", filetypes= (("jpg", '*.jpg'),("jpeg", "*.jpeg")) )
        path = Path(filepath)
        
        isUploading = Label(window, text="uploading...", pady=50)
        isUploading.pack()
 
        if ( uploadFile(path.name, path.parent.absolute()) ):
            # isUploading.destroy()
            myLabel = Label(window, text="The image {0} is uploaded".format(path.name), pady=50)
            myLabel.pack()
        else:
            # isUploading.destroy()
            myLabel = Label(window, text="An error occured. The image {0} is not uploaded".format(path.name), pady=50)
            myLabel.pack()
 
    except:
        pleaseSelect = Label(window, text="please select the image", pady=50)
        pleaseSelect.pack()
    
    
 
 
window = Tk()
window.geometry("500x350")
button = Button(window, text="Select Image", command=openFile, padx=50, pady=25)
button.pack()



window.mainloop()
from Google import Create_Service
from googleapiclient.http import MediaFileUpload
import os
from dotenv import load_dotenv
 
load_dotenv()
 
client_secret_file = os.getenv('CLIENT_SECRET_FILE')
api_name = os.getenv('API_NAME')
api_version = os.getenv("API_VERSION")
scopes = os.getenv("SCOPES")
 
folder_id = os.getenv("FOLDER_ID")
mime_type="image/jpeg"
 
service = Create_Service(client_secret_file, api_name, api_version, scopes)
 
def uploadFile(file_name, local_image_path):
    try:
        file_metadata = {
            'name': file_name,
            'parents': [folder_id]
        }
        media = MediaFileUpload('{0}/{1}'.format(local_image_path, file_name), mimetype=mime_type)
 
        service.files().create(
        body=file_metadata,
        media_body=media,
        fields="id"
        ).execute()
 
        return True
    except:
        return False

Final Words

Through this article, we have come to know clearly that Python 3 Tkinter Google Drive Bulk Files Uploader Script Using Drive API & Access Token GUI Desktop App. If you have any doubts please leave a comment via the comment box.

Hi, I'm Selva a full-time Blogger, YouTuber, Affiliate Marketer, & founder of Coding Deekshi. Here, I post about programming to help developers.

Share on:

Leave a Comment