106 lines
2.9 KiB
Python
106 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Script para consultar ciclos da API do Grupo Boticário
|
|
"""
|
|
|
|
import requests
|
|
|
|
|
|
def get_token():
|
|
"""Busca o token da API Ginseng"""
|
|
url = "https://api.grupoginseng.com.br/api/tokens"
|
|
|
|
print("Buscando token...")
|
|
|
|
try:
|
|
response = requests.get(url, timeout=30)
|
|
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
|
|
if data.get("success") and data.get("data"):
|
|
token = data["data"][0].get("token")
|
|
if token:
|
|
print("✓ Token obtido com sucesso!")
|
|
return token
|
|
|
|
print(f"✗ Erro ao buscar token: {response.status_code}")
|
|
return None
|
|
|
|
except Exception as e:
|
|
print(f"✗ Erro na requisição: {e}")
|
|
return None
|
|
|
|
|
|
def get_cycles(token):
|
|
"""Consulta os ciclos da API do Grupo Boticário"""
|
|
|
|
url = "https://api-extranet.grupoboticario.digital/api/v2/cycles"
|
|
|
|
headers = {
|
|
"accept": "application/json, text/plain, */*",
|
|
"accept-language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7",
|
|
"authorization": token,
|
|
"cache-control": "no-cache",
|
|
"origin": "https://extranet.grupoboticario.com.br",
|
|
"pragma": "no-cache",
|
|
"referer": "https://extranet.grupoboticario.com.br/",
|
|
"sec-ch-ua": '"Not(A:Brand";v="8", "Chromium";v="144", "Google Chrome";v="144"',
|
|
"sec-ch-ua-mobile": "?0",
|
|
"sec-ch-ua-platform": '"Windows"',
|
|
"sec-fetch-dest": "empty",
|
|
"sec-fetch-mode": "cors",
|
|
"sec-fetch-site": "cross-site",
|
|
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36"
|
|
}
|
|
|
|
print("\nConsultando ciclos...")
|
|
|
|
try:
|
|
response = requests.get(url, headers=headers, timeout=30)
|
|
|
|
print(f"Status Code: {response.status_code}")
|
|
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
print("✓ Ciclos obtidos com sucesso!")
|
|
return data
|
|
else:
|
|
print(f"✗ Erro na requisição: {response.status_code}")
|
|
print(f"Resposta: {response.text[:500]}")
|
|
return None
|
|
|
|
except Exception as e:
|
|
print(f"✗ Erro na requisição: {e}")
|
|
return None
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("="*60)
|
|
print("CICLOS - Consulta de Ciclos do Grupo Boticário")
|
|
print("="*60)
|
|
|
|
# 1. Buscar token
|
|
print("\n[1/2] Obtendo token...")
|
|
token = get_token()
|
|
|
|
if not token:
|
|
print("\n✗ Não foi possível obter o token.")
|
|
exit(1)
|
|
|
|
print(f" Token: {token[:60]}...")
|
|
|
|
# 2. Consultar ciclos
|
|
print("\n[2/2] Consultando ciclos...")
|
|
cycles = get_cycles(token)
|
|
|
|
if cycles:
|
|
print(f"\n{'='*60}")
|
|
print("RESULTADO")
|
|
print(f"{'='*60}")
|
|
|
|
import json
|
|
print(json.dumps(cycles, indent=2, ensure_ascii=False))
|
|
else:
|
|
print("\n✗ Não foi possível obter os ciclos.")
|