Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import json
- import time
- import adal
- #Power BI
- def PegaToken():
- context = adal.AuthenticationContext('https://login.microsoftonline.com/alfameta.com.br', validate_authority=None, cache=None, api_version=None, timeout=None, enable_pii=False)
- token_json = context.acquire_token_with_username_password(
- resource='https://analysis.windows.net/powerbi/api',
- username='gabriel@alfameta.com.br',
- password='alfa*184430',
- client_id='675f77ad-6c01-49a0-a87d-4fa88a5a5ae8'
- )
- return token_json
- def PegaNovoToken():
- #Abre o arquivo e verifica o token salvo
- with open('auth.txt', 'r') as file:
- token_salvo = file.read().split(';')
- hora_token = token_salvo[0].split('.')
- hora_token = hora_token[0]
- validade = time.mktime(time.localtime()) - time.mktime(time.strptime(hora_token, "%Y-%m-%d %H:%M:%S"))
- #Verifica se o token salvo ainda é válido, se não gera um novo
- if validade >= 0:
- token_json = PegaToken()
- with open('auth.txt', 'w') as file:
- file.write('%s;%s' % (token_json['expiresOn'], token_json['accessToken']))
- def AbreNovoToken():
- #Abre o novo token
- with open('auth.txt', 'r') as file:
- token = file.read().split(';')
- return token[1]
- #RunRun.It
- head = {"App-Key": "97517be61ebfba95bc7db28d0263ea20",
- "User-Token": "VgpNPfLR0ASFJ3Dpyh3",
- "Content-type": "application/json"}
- #Get dos dados API RunRun.it
- def PegaTarefasRunRunIt():
- url_run_tarefa = 'https://secure.runrun.it/api/v1.0/tasks?is_working_on=true'
- tarefas_run = requests.get(url_run_tarefa, headers=head)
- print("Conexão com tarefas RunRun.it: " + str(tarefas_run.status_code) + " - " + tarefas_run.reason)
- return tarefas_run
- def PegaUsuariosRunRunIt():
- url_run_usuario = 'https://secure.runrun.it/api/v1.0/users'
- usuarios_run = requests.get(url_run_usuario, headers=head)
- print("Conexão com usuarios RunRun.it: " + str(usuarios_run.status_code) + " - " + usuarios_run.reason)
- return usuarios_run
- #Cria Json PowerBI
- json_bi = []
- #Cria list com adicionados
- usuarios_adicionados = []
- def AdicionaUsuarioTarefa(responsible_name, imagem_usuario, id, title, is_working_on, client_name, project_name, type_name,
- user_name, current_worked_time):
- json_bi.append(
- {
- "id": id,
- "title": str(id) + ' - ' + title.upper(),
- "is_working_on": is_working_on,
- "client_name": client_name.upper(),
- "project_name": project_name.upper(),
- "type_name": type_name.upper(),
- "user_name": user_name.upper(),
- "responsible_name": responsible_name.upper(),
- "current_worked_time": current_worked_time,
- "imagem_usuario": imagem_usuario,
- "data_sinc": time.strftime("%Y-%m-%dT%H:%M:%S")
- })
- def AdicionaUsuario(responsible_name, imagem_usuario):
- json_bi.append(
- {
- "id": " ",
- "title": 'NENHUMA TAREFA EM EXECUÇÃO',
- "is_working_on": " ",
- "client_name": " ",
- "project_name": " ",
- "type_name": " ",
- "user_name": " ",
- "responsible_name": responsible_name.upper(),
- "imagem_usuario": imagem_usuario,
- "data_sinc": time.strftime("%Y-%m-%dT%H:%M:%S")
- })
- def CriaJson():
- tarefas = PegaTarefasRunRunIt().json()
- usuarios = PegaUsuariosRunRunIt().json()
- for usuario in usuarios:
- for tarefa in tarefas:
- if tarefa['responsible_name'] == usuario['name']:
- AdicionaUsuarioTarefa(tarefa['responsible_name'].upper(), usuario['avatar_large_url'], tarefa['id'], tarefa['title'].upper(),
- tarefa['is_working_on'], tarefa['client_name'].upper(), tarefa['project_name'].upper(), tarefa['type_name'].upper(),
- tarefa['user_name'].upper(), tarefa['current_worked_time'])
- usuarios_adicionados.append(usuario['name'])
- break
- if usuario['name'] not in usuarios_adicionados:
- AdicionaUsuario(usuario['name'].upper(), usuario['avatar_large_url'])
- #Post dos dados Power BI
- def DeletaBaseBI():
- header_bi = {'Content-Type': 'application/json', 'Authorization': 'Bearer {}'.format(AbreNovoToken())}
- deleta_bi = requests.delete('https://api.powerbi.com/v1.0/myorg/datasets/b617f704-73b7-4100-8338-f419102a47a2/tables/RealTimeData/rows', headers=header_bi)
- print("Delete de dados Power BI: " + str(deleta_bi.status_code) + " - " + deleta_bi.reason)
- def PushBI():
- url_bi = 'https://api.powerbi.com/beta/08137320-2860-418f-9376-6d7a0aa07f96/datasets/b617f704-73b7-4100-8338-f419102a47a2/rows?key=HzdMV6tm9JdEv6HgLgRTCRwZY6VhiAPm%2FBCvoavQ9aRLsZ6waG4%2BEiWJwom8HBi3kuPpQc%2F9ZC%2BUcr7HDNeo7Q%3D%3D'
- tarefas_bi = requests.post(url_bi, data=json.dumps(json_bi), verify=False)
- print("Conexão com Power BI: " + str(tarefas_bi.status_code) + " - " + tarefas_bi.reason)
- flag = True
- while flag == True:
- PegaNovoToken()
- json_bi = []
- usuarios_adicionados = []
- CriaJson()
- DeletaBaseBI()
- PushBI()
- time.sleep(60)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement