vaipaolla's picture
RETURN data add headers
57e9a99
import requests
import datetime
import logging
from flask import Flask, jsonify
import os
from dotenv import load_dotenv
# Carrega variáveis do .env
load_dotenv()
hf_token = os.getenv("HF_TOKEN")
# Define headers com o token
headers = {
"Authorization": f"Bearer {hf_token}",
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:147.0) Gecko/20100101 Firefox/147.0",
"Accept": "application/json",
"Accept-Language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7",
"Connection": "keep-alive"
}
def ultima_segunda():
hoje = datetime.date.today()
# weekday(): segunda=0, terça=1, ..., domingo=6
dias_para_subtrair = (hoje.weekday() - 0) % 7
ultima_segunda = hoje - datetime.timedelta(days=dias_para_subtrair)
return ultima_segunda
app = Flask(__name__)
def get_materias_legislativa(tipo="", data=""):
url_request = f"https://sapl.campinas.sp.leg.br/api/materia/materialegislativa/?tipo={tipo}&data_apresentacao__gte={data}"
resposta = requests.get(url_request, headers=headers)
dados = resposta.json()
total_pages = (dados["pagination"]["total_pages"])
for page in range(2, total_pages + 1):
url_request_page = f"{url_request}&page={page}"
resposta_page = requests.get(url_request_page, headers=headers)
dados_page = resposta_page.json()
dados["results"].extend(dados_page["results"])
return jsonify(dados["results"])
def get_autores(autor=None):
url_request = f"https://sapl.campinas.sp.leg.br/api/base/autor/{autor}/"
resposta = requests.get(url_request, headers=headers)
dados = resposta.json()
return jsonify(dados)
# 1 Projeto de Lei Ordinária
# 3 Projeto de Resolução
# 6 Projeto de Lei Complementar
# 10 Proposta de Emenda à Lei Orgânica
# 53 Substitutivo
@app.route("/", methods=["GET"])
def test():
url = "https://sapl.campinas.sp.leg.br/api/materia/materialegislativa/"
response = requests.get(url, headers=headers)
print("Status:", response.status_code)
print("Content-Type:", response.headers.get("Content-Type"))
# print("Body:", response.text[:500])
try:
data = response.json()
# print("Dados:", data)
logging.info("deu certo")
return jsonify(data)
except ValueError:
print("Resposta não é JSON válido")
print("Resposta bruta:", response.text)
logging.error(response.text)
return "API NÃO funcionando!"
def get_todas_materias_legislativa():
tipos = [1,3,6,7,10,53]
dados = {"results": []}
for tipo in tipos:
dados["results"].extend(get_materias_legislativa(tipo=tipo, data="2026-02-16").get_json())
for projeto in dados["results"]:
for autor in projeto["autores"]:
projeto["autores_detalhados"] = get_autores(autor=autor).get_json()
# return render_template("projetos.html", projetos=dados["results"])
return jsonify(dados["results"])
# 22 Protocolo da Câmara Municipal de Campinas - CP
@app.route("/comissao_processante", methods=["GET"])
def get_comissao_processante():
dados = {"results": get_materias_legislativa(tipo=22, data="2026-01-01").get_json()}
for projeto in dados["results"]:
for autor in projeto["autores"]:
projeto["autores_detalhados"] = get_autores(autor=autor).get_json()
# return render_template("projetos.html", projetos=dados["results"])
return jsonify(dados["results"])
# 7 Projeto de Decreto Legislativo
@app.route("/decreto_legislativo", methods=["GET"])
def get_decreto_legislativo():
dados = {"results": get_materias_legislativa(tipo=7, data="2026-02-16").get_json()}
for projeto in dados["results"]:
for autor in projeto["autores"]:
projeto["autores_detalhados"] = get_autores(autor=autor).get_json()
# return render_template("projetos.html", projetos=dados["results"])
return jsonify(dados["results"])
if __name__ == "__main__":
# Hugging Face Spaces espera que o app rode na porta 7860
app.run(host="0.0.0.0", port=7860)