diff --git a/.gitignore b/.gitignore index 90f60e5..fc2e46b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ venv/ __pycache__ .env -output/main_file.py \ No newline at end of file +build/ +dist/ +output/ \ No newline at end of file diff --git a/main.spec b/main.spec new file mode 100644 index 0000000..bb2fcbb --- /dev/null +++ b/main.spec @@ -0,0 +1,40 @@ +# -*- mode: python ; coding: utf-8 -*- + + +block_cipher = None + + +a = Analysis(['src\\main.py'], + pathex=['C:\\Users\\Matheus\\Pictures\\cobli-bi'], + binaries=[], + datas=[], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) + +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='main', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None ) diff --git a/src/costs.py b/src/costs.py index a56343d..f73ac97 100644 --- a/src/costs.py +++ b/src/costs.py @@ -1,9 +1,9 @@ import requests import pandas as pd -from initial import start_timestamp, end_timestamp, apiKey +from initial import start_timestamp, end_timestamp -def getCostsDataFrame(apiKey=apiKey, end_timestamp=end_timestamp, start_timestamp=start_timestamp): +def getCostsDataFrame(apiKey=None, end_timestamp=end_timestamp, start_timestamp=start_timestamp): costsURL = f"https://api.cobli.co/herbie-1.1/costs/report?begin={start_timestamp}&end={end_timestamp}&tz=America%2FFortaleza" costsResponse = requests.get(costsURL, headers={'cobli-api-key': apiKey}) return pd.read_excel(costsResponse.content, 0) diff --git a/src/generate_bi_script.py b/src/generate_bi_script.py new file mode 100644 index 0000000..ae9ce3c --- /dev/null +++ b/src/generate_bi_script.py @@ -0,0 +1,41 @@ +import inspect +import requests +from productivity import getProductivityDataFrame, productivity_function_name +from costs import getCostsDataFrame, costs_function_name +from incidents import getIncidentsDataFrame, incidents_function_name +import os +from dotenv import load_dotenv + +load_dotenv() + +productivityScript = inspect.getsource(getProductivityDataFrame) +costsScript = inspect.getsource(getCostsDataFrame) +incidentsScript = inspect.getsource(getIncidentsDataFrame) + +with open("../output/data.py", "r") as dataFile: + apiKeyList = dataFile.read() or os.getenv('API_KEY') + parsedApiKeyList = apiKeyList.replace(' ', '').split(',') + +os.remove("../output/data.py") + +with open("../src/initial.py", "r") as initialFile, \ + open('../output/main_file.py', 'w') as main_file: + main_file.write(initialFile.read() + '\n\n') + main_file.write(costsScript + '\n') + main_file.write(incidentsScript + '\n') + main_file.write(productivityScript + '\n') + for key in parsedApiKeyList: + response = requests.get('https://api.cobli.co/api-keys/external-auth', headers={'cobli-api-key': key}) + + if(response.status_code != 200): + print(f"Algo de errado aconteceu na coleta de dados da API, usando a chave {key} \n\n") + input("Pressione uma tecla para continuar!") + exit() + + fleetId = response.headers.get('cobli-fleet-id').replace('.', '_').replace('-', '_') + main_file.write( + f"costsFunction_{fleetId} = {costs_function_name}('{key}')\n\n") + main_file.write( + f"incidentsFunction_{fleetId} = {incidents_function_name}('{key}')\n\n") + main_file.write( + f"productivityFunction_{fleetId} = {productivity_function_name}('{key}')\n\n") diff --git a/src/incidents.py b/src/incidents.py index e22b4d5..28c4fde 100644 --- a/src/incidents.py +++ b/src/incidents.py @@ -1,9 +1,9 @@ import requests import pandas as pd -from initial import start_timestamp, end_timestamp, apiKey +from initial import start_timestamp, end_timestamp -def getIncidentsDataFrame(apiKey=apiKey, end_timestamp=end_timestamp, start_timestamp=start_timestamp): +def getIncidentsDataFrame(apiKey=None, end_timestamp=end_timestamp, start_timestamp=start_timestamp): incidentsURL = f"https://api.cobli.co/herbie-1.1/stats/incidents/report?begin={start_timestamp}&end={end_timestamp}&tz=America%2FFortaleza" incidentsResponse = requests.get( incidentsURL, headers={'cobli-api-key': apiKey}) diff --git a/src/initial.py b/src/initial.py index 54c91f3..487c858 100644 --- a/src/initial.py +++ b/src/initial.py @@ -2,15 +2,12 @@ import pandas as pd import time import datetime -import platform -import os -from shutil import which # Input de Dados # start = "01/06/2021 16:31:32.123" end = "16/06/2021 23:59:59.123" -apiKey = os.getenv('API_KEY') + # format_string = "%d/%m/%Y %H:%M:%S.%f" start_timestamp = int(time.mktime( diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..eeba0b6 --- /dev/null +++ b/src/main.py @@ -0,0 +1,18 @@ +import os +import platform +from shutil import which + +if platform.system() == "Windows" and which("python") is None: + if not os.path.isfile('./python.exe'): + print("Fazendo download do Python") + os.system("curl https://www.python.org/ftp/python/3.9.6/python-3.9.6-amd64.exe -o python.exe --silent") + print("Instalando Python no seu computador...") + os.system(".\python.exe /passive") + os.system("pip install -q pandas matplotlib requests openpyxl") + +apiKeyList = input('Por favor, digite as chaves de API das frotas desejadas, separadas por vĂ­rgula: \n\n') + +with open("../output/data.py", "w") as dataFile: + dataFile.write(apiKeyList) + +os.system("python ../src/generate_bi_script.py") \ No newline at end of file diff --git a/src/my_script.py b/src/my_script.py deleted file mode 100644 index 1cfc3b6..0000000 --- a/src/my_script.py +++ /dev/null @@ -1,39 +0,0 @@ -import inspect -from productivity import getProductivityDataFrame, productivity_function_name -from costs import getCostsDataFrame, costs_function_name -from incidents import getIncidentsDataFrame, incidents_function_name -from windows_requirements import installing_libraries, windows_requirements_function_name -import os -from dotenv import load_dotenv - -load_dotenv() - -productivityScript = inspect.getsource(getProductivityDataFrame) -costsScript = inspect.getsource(getCostsDataFrame) -incidentsScript = inspect.getsource(getIncidentsDataFrame) -windowsRequirementsScript = inspect.getsource(installing_libraries) - -fleetNameList = [{ - 'fleetName': 'a', - 'apiKey': os.getenv("API_KEY") -}, - { - 'fleetName': 'b', - 'apiKey': os.getenv("API_KEY") -}] - - -with open("src/initial.py", "r") as initialFile, \ - open('output/main_file.py', 'w') as main_file: - main_file.write(initialFile.read() + '\n\n') - main_file.write(windowsRequirementsScript + '\n\n' + f"{windows_requirements_function_name}()" + '\n\n') - main_file.write(costsScript + '\n') - main_file.write(incidentsScript + '\n') - main_file.write(productivityScript + '\n') - for fleet in fleetNameList: - main_file.write( - f"costsFunction_{fleet.get('fleetName')} = {costs_function_name}('{fleet.get('apiKey')}')\n\n") - main_file.write( - f"incidentsFunction_{fleet.get('fleetName')} = {incidents_function_name}('{fleet.get('apiKey')}')\n\n") - main_file.write( - f"productivityFunction_{fleet.get('fleetName')} = {productivity_function_name}('{fleet.get('apiKey')}')\n\n") diff --git a/src/productivity.py b/src/productivity.py index e2648ae..cdde7d2 100644 --- a/src/productivity.py +++ b/src/productivity.py @@ -1,9 +1,9 @@ import requests import pandas as pd -from initial import start_timestamp, end_timestamp, apiKey +from initial import start_timestamp, end_timestamp -def getProductivityDataFrame(apiKey=apiKey, end_timestamp=end_timestamp, start_timestamp=start_timestamp): +def getProductivityDataFrame(apiKey=None, end_timestamp=end_timestamp, start_timestamp=start_timestamp): productivityURL = f"https://api.cobli.co/herbie-1.1/stats/performance/vehicle/report?begin={start_timestamp}&end={end_timestamp}&tz=America%2FFortaleza" productivityResponse = requests.get( productivityURL, headers={'cobli-api-key': apiKey}) diff --git a/src/windows_requirements.py b/src/windows_requirements.py deleted file mode 100644 index f3a7ad7..0000000 --- a/src/windows_requirements.py +++ /dev/null @@ -1,17 +0,0 @@ -import platform -import os -from shutil import which - -def installing_libraries(): - if platform.system() != "Windows": - return - - if which("python") is None: - if not os.path.isfile('./python.exe'): - print("fazendo download do python") - os.system("curl https://www.python.org/ftp/python/3.9.6/python-3.9.6-amd64.exe -o python.exe --silent") - print("instalando python no seu computador...") - os.system(".\python.exe /passive") - os.system("pip install -q pandas matplotlib requests openpyxl") - -windows_requirements_function_name = 'installing_libraries' \ No newline at end of file