#!/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()