#!/usr/bin/python3 # _*_ coding=utf-8 _*_ import argparse import code import readline import signal import sys import ccxt import pprint from lstm import lstm_type_1, lstm_type_2, lstm_type_3 from marionette import marrionette_type_1 from tfann import tfann_type_1 from cnn import cnn_type_1 import httplib2 from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload, MediaFileUpload import googleapiclient.http import oauth2client.client import io def SigHandler_SIGINT(signum, frame): print() sys.exit(0) class Argparser(object): def __init__(self): parser = argparse.ArgumentParser() parser.add_argument("--which", type=str, help="which one to run") parser.add_argument("--download", type=str, help="file name to download") parser.add_argument("--what", type=str, help="train or predict") parser.add_argument("--pysrcupdate", type=str, nargs="+", help="name of source files to update on the drive") parser.add_argument("--gpu", action="store_true", help="use gpu. if false will use cpu", default=False) parser.add_argument("--test1", action="store_true", help="test switch 1", default=False) parser.add_argument("--test2", action="store_true", help="test switch 2", default=False) parser.add_argument("--dbg", action="store_true", help="debug", default=False) self.args = parser.parse_args() def get_name_from_path(path): path_pos = path.rfind("/") if path_pos == -1: return path else: return path[path_pos+1:] def authenticate_drive(): OAUTH2_SCOPE = "https://www.googleapis.com/auth/drive" CLIENT_SECRETS = "./secret.json" flow = oauth2client.client.flow_from_clientsecrets(CLIENT_SECRETS, OAUTH2_SCOPE) flow.redirect_uri = oauth2client.client.OOB_CALLBACK_URN authorize_url = flow.step1_get_authorize_url() print('Go to the following link in your browser: ' + authorize_url) code = input('Enter verification code: ').strip() credentials = flow.step2_exchange(code) http = httplib2.Http() credentials.authorize(http) drive_service = build('drive', 'v3', http=http) return drive_service def get_folder_id(folder_name, drive_service): parent_dir = drive_service.files().list(q="mimeType='application/vnd.google-apps.folder' and name='"+folder_name+"'", fields="files(id, name)", spaces="drive").execute() folder_id = str() for file in parent_dir.get("files", []): print(file.get("name") + "---" + file.get("id")) folder_id = file.get("id") return folder_id def get_file_id(file_name, folder_name, drive_service): folder_id = get_folder_id(folder_name, drive_service) download_to_be = drive_service.files().list(q="name='"+file_name+"' and '"+folder_id+"' in parents", fields="files(id, name)", spaces="drive").execute() file_id = str() for file in download_to_be.get("files", []): print(file.get("name") + "---" + file.get("id")) file_id = file.get("id") return file_id def g_drive_up(file_path, file_name, file_type, to_folder): FILENAME = file_path MIMETYPE = file_type TITLE = file_name DESCRIPTION = "a file" drive_service = authenticate_drive() media_body = googleapiclient.http.MediaFileUpload(FILENAME, mimetype=MIMETYPE, resumable=True) parent_dir = drive_service.files().list(q="mimeType='application/vnd.google-apps.folder' and name='"+to_folder+"'", fields="files(id, name)", spaces="drive").execute() folder_id = str() for file in parent_dir.get("files", []): print(file.get("name") + "---" + file.get("id")) folder_id = file.get("id") body = {'name': TITLE, 'description': DESCRIPTION, 'parents': [folder_id]} new_file = drive_service.files().create(body=body, media_body=media_body, fields="id").execute() print(new_file.get("id")) #pprint.pprint(new_file) def g_drive_down(folder_name, file_name): drive_service = authenticate_drive() #get folder id parent_dir = drive_service.files().list(q="mimeType='application/vnd.google-apps.folder' and name='"+folder_name+"'", fields="files(id, name)", spaces="drive").execute() folder_id = str() for file in parent_dir.get("files", []): print(file.get("name") + "---" + file.get("id")) folder_id = file.get("id") #get file id download_to_be = drive_service.files().list(q="name='"+file_name+"' and '"+folder_id+"' in parents", fields="files(id, name)", spaces="drive").execute() file_id = str() for file in download_to_be.get("files", []): print(file.get("name") + "---" + file.get("id")) file_id = file.get("id") request = drive_service.files().get_media(fileId=file_id) #fh = io.BytesIO() fh = io.FileIO(file_name, "w") downloader = MediaIoBaseDownload(fh, request) done = False while done is False: status, done = downloader.next_chunk() print("Download %d%%." % int(status.progress() * 100)) #print(downloader) def g_drive_update(folder_name, file_name): drive_service = authenticate_drive() file_id = get_file_id(file_name, folder_name, drive_service) u_file = drive_service.files().get(fileId=file_id).execute() media_body = MediaFileUpload(resumable=True) updated_file = drive_service.files().update(fileId=file_id, body=u_file, media_body=media_body).execute() def launch_ais(which): if which == "marionette": marrionette_type_1() elif which == "lstm_type_1": lstm_type_1("ethereum", "ether") elif which == "lstm_type_2": lstm_type_2("ethereum", "ether", 5, 20) elif which == "lstm_type_3": lstm_type_3("ethereum", "ether", 5, 20) elif which == "cnn_type_1": cnn_type_1() elif which == "tfann_type_1": tfann_type_1() else: pass # write code here def premain(argparser): signal.signal(signal.SIGINT, SigHandler_SIGINT) #here if argparser.args.pysrcupdate: for src in argparser.args.pysrcupdate: g_drive_up(src, get_name_from_path(src), "text/python", "colab") if argparser.args.download: g_drive_down("colab", "main.py") launch_ais(argparser.args.which) def main(): argparser = Argparser() if argparser.args.dbg: try: premain(argparser) except Exception as e: print(e.__doc__) if e.message: print(e.message) variables = globals().copy() variables.update(locals()) shell = code.InteractiveConsole(variables) shell.interact(banner="DEBUG REPL") else: premain(argparser) if __name__ == "__main__": main()