import requests from datetime import datetime # ============================== # 1) Buscar token dinâmico # ============================== def get_token(): url = "https://api.grupoginseng.com.br/api/tokens" response = requests.get(url) if response.status_code != 200: raise Exception(f"Erro ao buscar token: {response.status_code} {response.text}") data = response.json() return data["data"][0]["token"] # ============================== # 2) Buscar cycles # ============================== def get_cycles(token): url = "https://api-extranet.grupoboticario.digital/api/v2/cycles" headers = { "accept": "application/json, text/plain, */*", "authorization": token, "user-agent": "Mozilla/5.0" } response = requests.get(url, headers=headers) return response.json() # ============================== # 3) Determinar ciclo atual formatado para cada marca # ============================== def ciclo_formatado_por_marca(cycles_json): hoje = datetime.now() ano = hoje.year ignorar = ["Eudora", "VD Multimarca"] # Marcas excluídas MAPA_NOMES = { "O Boticário": "BOT", "O.U.I": "OUI", "Quem Disse Berenice": "QDB" } resultado = {} for brand in cycles_json["data"]: nome_marca = brand["brandName"] # Pula marcas indesejadas if nome_marca in ignorar: continue ciclo_formatado = None for cycle in brand["cycles"]: start = datetime.fromisoformat(cycle["startDate"]) end = datetime.fromisoformat(cycle["endDate"]) if cycle["isCurrent"] or (start <= hoje <= end): ciclo_num = f"{cycle['number']:02d}" ciclo_formatado = int(f"{ano}{ciclo_num}") break nome_final = MAPA_NOMES.get(nome_marca, nome_marca) # usa abreviação resultado[nome_final] = ciclo_formatado return resultado # ============================== # EXECUÇÃO # ============================== if __name__ == "__main__": token = get_token() cycles_json = get_cycles(token) resultado = ciclo_formatado_por_marca(cycles_json) print(resultado)