Code Monkey home page Code Monkey logo

touchsmaps's Introduction

⚽🚀Football touch maps

Proyecto que actúa como consumidor de la Open API StatsBomb, para posteriormente, con los datos recibidos, generar el mapa de toques o intervenciones de un jugador de interés.

⚙Lenguajes & tecnologías utilizadas

Python StatsBomb API mplsoccer Matplotlib Pandas

Node.js child-process Express.js EJS JavaScript HTML CSS

  • Front end

  • Back End

    • NodeJS
      • Express
      • child_process
      • EJS view Engine
      • fs
    • Python
      • pandas
      • statsbomb
      • matplotlib
      • mplsoccer
    • JSON

💡Funcionamiento

  • Players: Se recuperan los datos de todos los jugadores con el módulo fs, del archivo players.json. Posteriormente se hace un render de la vista, y la página permite al cliente seleccionar un jugador de los 34 posibles para solicitar su mapa de toques.

  • Map: Cuando llega la request del usuario con el ID del jugador de interés, ocurren dos subprocesos

    • 1) Borrado de todas las imagenes generadas anteriormente: Se elimnan todas las imagenes que existan en la carpeta gen_img, para ahorrar espacio.
    • 2) Ejecución del script de python: Haciendo uso del método "exec" del paquete "child-process" de node, se ejecuta el script "main.py", que se encarga de crear el mapa del jugador con el ID solicitado, el cual se pasa como parámetro de consola. Este script devuelve una dirección que corresponde a la imagen generada, la cual se utilizada luego para hacer el render.
  • main.py: Rescata el ID del jugador recibido como parámetro y se encarga de ejecutar la solicitud a la open API de statsbomb para pedir información sobre todas las intervenciones de ese jugador en el partido. Posteriormente rescata los datos de ubicación de esas intervenciones y las integra en una instancia de la clase Pitch, del módulo mplsoccer. Luego, diferenciando los goles con un color diferente, dibuja el mapa y lo guarda en la carpeta gen_img, en formato png. Para nombrar las imágnes se utiliza un número que corresponde a una fecha en milisegundos. Al finalizar, imprime en consola la url de la imagen generada, para ser rescatada por node.

📋Requerimientos

Debe tener instalado el intérprete de python y las bibliotecas que se encuentran en requeriments.txt

Para la instalación de los módulos necesarios de python, abrir una terminal en el directorio y ejecutar:

pip install -r requirements.txt

Para instalar todos los módulos necesarios de node, ejecutar el siguiente comando:

npm install

Una vez finalizada la instalación de todo lo necesario, ejecutar el siguiente comando para levantar el servidor:

npm run start

Aclaración: El puerto por defecto en el que se levantará el servidor es el 3006, pero puedes cambiarlo editando la variable PORT que se encuentra en index.js.

📂Estructura

├──index.js     # Entrypoint
├──package.json 
├──package-lock.json
├──README.md
├──.gitignore
├──requirements.txt 
├──node_modules
├──public
    ├──gen_img          #Imágenes generadas
    ├──players_img      #Imágenes de los jugadores
    ├──styles
├──src
    ├──routes
        ├──map.routes.js
    ├──controllers
        ├──mapController.js
    ├──scripts
        ├──main.py
    ├──views
        ├──home.ejs
        ├──map.ejs
        ├──players.ejs
    ├──data
        ├──players.json

🖼️Views

Players

Captura de pantalla de la página

Map

Captura de pantalla de la página

touchsmaps's People

Contributors

tinchoran avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.