En este artículo, veremos cómo podemos obtener una lista de archivos (o carpetas) almacenados en nuestro almacenamiento en la nube de Google Drive utilizando la API de Google Drive en Python. Es una API REST que le permite aprovechar el almacenamiento de Google Drive desde su aplicación o programa.
Entonces, creemos una secuencia de comandos de Python simple que se comunique con la API de Google Drive.
Requisitos:
- Python (2.6 o superior)
- Una cuenta de Google con Google Drive habilitado
- Cliente API de Google y bibliotecas OAuth de Google
Instalación:
Instale las bibliotecas requeridas ejecutando este comando:
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Ahora, siga estos pasos para configurar su cuenta de Google para que funcione con la API de Google Drive.
- Vaya a la consola de Google Cloud e inicie sesión con su cuenta de Google.
- Crear un nuevo proyecto.
- Vaya a API y servicios .
- Habilite la API de Google Drive para este proyecto.
- Vaya a la pantalla de Consentimiento de OAuth y configure la pantalla de Consentimiento para su proyecto.
- Introduzca el nombre de su aplicación. Se mostrará en la pantalla de consentimiento.
- Ahora ve a Credenciales.
- Haga clic en Crear credenciales y vaya a ID de cliente de OAuth.
- Ingrese el nombre de su aplicación y haga clic en Crear .
- Se creará su ID de cliente. Descárguelo a su computadora y guárdelo como credentials.json
NOTA: No comparta su ID DE CLIENTE o SECRETOS DE CLIENTE con nadie.
Ahora, hemos terminado con la configuración e instalación. Entonces, escribamos el script de python:
Python3
# import the required libraries import pickle import os.path from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request # Define the SCOPES. If modifying it, # delete the token.pickle file. SCOPES = ['https://www.googleapis.com/auth/drive'] # Create a function getFileList with # parameter N which is the length of # the list of files. def getFileList(N): # Variable creds will store the user access token. # If no valid token found, we will create one. creds = None # The file token.pickle stores the # user's access and refresh tokens. It is # created automatically when the authorization # flow completes for the first time. # Check if file token.pickle exists if os.path.exists('token.pickle'): # Read the token from the file and # store it in the variable creds with open('token.pickle', 'rb') as token: creds = pickle.load(token) # If no valid credentials are available, # request the user to log in. if not creds or not creds.valid: # If token is expired, it will be refreshed, # else, we will request a new one. if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port=0) # Save the access token in token.pickle # file for future usage with open('token.pickle', 'wb') as token: pickle.dump(creds, token) # Connect to the API service service = build('drive', 'v3', credentials=creds) # request a list of first N files or # folders with name and id from the API. resource = service.files() result = resource.list(pageSize=N, fields="files(id, name)").execute() # return the result dictionary containing # the information about the files return result # Get list of first 5 files or # folders from our Google Drive Storage result_dict = getFileList(5) # Extract the list from the dictionary file_list = result_dict.get('files') # Print every file's name for file in file_list: print(file['name'])
Ahora, ejecute el script:
python3 script.py
Esto intentará abrir una nueva ventana en su navegador predeterminado. Si esto falla, copie la URL de la consola y ábrala manualmente en su navegador.
Ahora, inicie sesión en su cuenta de Google si aún no lo ha hecho. Si hay varias cuentas, se le pedirá que elija una de ellas. Luego, haga clic en el botón Permitir.
Una vez completada la autenticación, su navegador mostrará un mensaje que dice El flujo de autenticación se ha completado . Puede cerrar esta ventana.
Una vez que se haya completado la autenticación, se imprimirán los nombres de los primeros N archivos (o carpetas) en su almacenamiento de Google Drive.
Nota: El archivo credentials.json debe estar en el mismo directorio que el script de Python. Si no es así, debe especificar la ruta completa al archivo en el programa.