El crawler se realiza en varios pasos. Primero tenemos que dar forma a
los datos que hemos obtenido del Ayuntamiento, el fichero CCTV.kml
y
obtener el listado de las camaras, así como la URL de la que descargar
sus imagenes de una forma más amigable. Para eso usamos
sacar_listado.py
que convierete dicho kml
en
lista_camaras.csv
Una vez obtenido este csv tenemos dos procesos distintos.
Uno, poblar_base_datos_camaras.py
, que se encarga de introducir esos
datos en la base de datos.
Y luego tenemos scrap_camara.py
, que es el scrapper en si mismo, que
se conecta a la url suministrada y baja la última imagen de cada camara
y la guarda en el directorio scrapped/
send_to_s3.py
hace varias cosas.
Por un lado almacena la imagen en S3, para poder recuperarla luego.
Tambien comprueba si esa imgen ha sido ya procesada. Puede que la lectura del feed nos de la misma imagen que en el ultimo crawl, y no queremos duplicar ni la imagen ni la información que sacamos de ella. Para ello hace distintas comprobaciones del tamaño, el hash de los primeros bytes del archivo y finalmente el hash completo del archivo. Esto se realiza así para darle menos trabajo al servidor que va a realizar las comprobaciones, ya que calcular hashes de archivos es bastante caro computacionalmente hablando.
Por último, y quizá el paso más importante es el mandar esa imagen a Amazon Rekognition, un servicio web de AWS que realiza un analisis de segmentación de imagen y devuelve todos los objetos que se 'ven' en la imagen. Esa información es limpiada un poco y se almacena en nuestra base de datos como el número de coches que se ven en la imagen.