Harta cu sesizări a primăriei Arad - accesibilă prin API

arad digitalization primarie pă-română

Primăria Arad a adăugat un nou serviciu la suita sa de servicii electronice. Serviciul de sesizări pe hartă lasă cetățenii să raporteze probleme legate de oraș, lăsându-i să lase o etichetă pe pagina serviciului. Sesizările cetățeniilor nu rămân neadresate, serviciul permite primăriei să se adreseze cetățenilor.

Ca orice cetățean cu spirit civic, am deschis sursa site-ului să văd câte trackere are siteul. Spre dezamăgirea mea, folosește google maps pentru harta interactivă. Dar, cu toate că nu a fost neaparat intenția primăriei, serviciul are un URL unde putem accesa toate sesizările în format JSON. Asta însemnând că pot scrie propriile programe care să se folosească de lista cu sesizări.

curl https://myarad.primariaarad.ro/dm_arad/ext_services.nsf/xsp/.jaxrs/myCity/getAll
{
  "metadata": {
    "idProperty": "id",
    "root": "entries",
    "totalProperty": "total",
    "fields": [
      "position", "status", "culoare",
      "categorie", "id", "created",
      "createdText", "mesaj", "raspuns"
    ]
  },
  "total": 73,
  "entries": [
    {
      "position": "[46.1794, 21.3461]",
      "status": "Preluata",
      "culoare": "ff8a80",
      "categorie": "Masini abandonate sau parcate neregulamentar",
      "id": "C4A",
      "created": "29/03/2022",
      "createdText": "29 martie 2022, la 08:47:27",
      "mesaj": "Masina nemiscate si pe pana de mai multe luni.",
      "raspuns": ""
    },
    ...
  ],
date ce ne nu interesează
  "config": {
    "uat": "Arad",
    "position": [
      "46.18",
      "21.31"
    ],
    "category": [
      {
        "name": "Caini comunitari",
        "value": "Caini comunitari|4"
      },
      ...
    ],
    "disclaimer": {
      "palette": {
        "popup": {
          "background": "#000"
        },
        "button": {
          "background": "#f1d600"
        }
      },
      "showLink": false,
      "theme": "classic",
      "content": {
        "message": "\"My Arad\" este o aplicatie pentru solutionarea eficienta a problemelor aparute pe raza municipiului Arad, a caror rezolvare este de competenta Primariei Municipiului Arad. Prin localizarea exacta pe harta, specialistii din cadrul institutiei pot interveni rapid, pentru remedierea situatiilor urgente, reprezentand deficiente ale retelelor de utilitati, lucrari de reabilitate a strazilor, iluminat public, caini comunitari sau alte asemenea situatii.<br><br>Pentru orice alte solicitari care nu se incadreaza in categoria unor astfel de urgente, va rugam sa folositi adresele de e-mail ale institutiei: registratura@primariaarad.ro si pma@primariaarad.ro.",
        "dismiss": "Am inteles!"
      }
    }
  }
}

Acest articol a întârziat deja două luni, așa că nu voi mai scrie un script care să prelucreze aceste date. Dar ne-am putea foarte ușor imagina cum ar arăta un program care ne-ar spune ce procent din sesizări nu au primit răspuns.

import requests
import json

res = requests.get("https://myarad.primariaarad.ro/dm_arad/ext_services.nsf/xsp>
data = json.loads(res.text)
entries = data["entries"]

total = len(entries)
solutionate = 0

for entry in entries:
  if entry["status"] == "Solutionata":
    solutionate += 1

procent = round(solutionate * 100 / total)
print("{0}% au fost rezolvate".format(procent))
print("{0} din {1} au fost rezolvate".format(solutionate, total))
10% au fost rezolvate
7 din 73 au fost rezolvate

Acum tot ce rămâne de făcut este să facem un bot care să publice aceste date periodic în comentariile contului de facebook al primăriei.