Skip to content

Instantly share code, notes, and snippets.

@lowweihong
Created August 10, 2019 10:57
Show Gist options
  • Save lowweihong/6e5b470e706365840f5cbe428c707f95 to your computer and use it in GitHub Desktop.
Save lowweihong/6e5b470e706365840f5cbe428c707f95 to your computer and use it in GitHub Desktop.
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
import requests
import pandas as pd
from datetime import datetime, timedelta
from bs4 import BeautifulSoup
import os
def create_folder(drive, folder_name, parent_folder_id):
"""
Create folder on Google Drive
"""
folder_metadata = {
'title': folder_name,
# Define the file type as folder
'mimeType': 'application/vnd.google-apps.folder',
# ID of the parent folder
'parents': [{"kind": "drive#fileLink", "id": parent_folder_id}]
}
folder = drive.CreateFile(folder_metadata)
folder.Upload()
# Return folder informations
return folder['id']
def upload_file(drive, folder_id, path_to_file, file_title):
file = drive.CreateFile({"parents": [{"kind": "drive#fileLink", "id": folder_id}]})
file.SetContentFile(path_to_file)
file['title'] = file_title
file.Upload()
# Get File List
file_list = drive.ListFile(
{'q': "'{}' in parents and trashed=false".format(current_google_folder_id)}
).GetList()
# Get all title of the file list
if len(file_list) == 0:
folder_id = create_folder(drive, stock_name, current_google_folder_id)
else:
# Check if folder already exist
for index, file in enumerate(file_list):
if file['title'] == stock_name:
folder_id = file['id']
break
elif index == len(file_list) - 1:
folder_id = create_folder(drive, stock_name, current_google_folder_id)
else:
pass
# Loop through all the files, and upload them one by one to folder
for f in os.listdir(default_folder):
upload_file(drive, folder_id, os.path.join(default_folder, f), f)
for file in os.listdir(default_folder):
os.remove(os.path.join(default_folder, file))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment