A todos los amantes del fútbol nos gusta estar informado, deseamos saber las estadísticas y resultados de nuestros equipos favoritos, en estos momentos se mueve mucha información a nivel de Selecciones de Fútbol ya que se está jugando la Copa America Centenario y la Eurocopa por lo que se me ocurrió tener mi propio script de resultados y estadísticas de fútbol.
Nuestro amigo jokecamp tiene una revisión bastante avanzada sobre Apis de fútbol de código abierto, por lo que conseguir de donde extraer la información me fue un poco sencillo,en líneas generales conocemos de seis desarrollo/datas alojados en github y de dos api Libres que nos permiten acceder a datos del deporte más lindo del mundo y son:
- Data de Código Abierto en github
- openfootball – football.db
- jokecamp/FootballData
- socerstats.us
- engsoccerdata
- awesome-football
- soccer-cli
- API Libres
- football-data.org (RESTful API)
- Sports Open Data (Serie A Italiana)
Daré un repaso a cada una de ellas, porque jokecamp ya ha hecho una gran revisión, la cuál me a servido para comenzar de manera más fácil este camino y de esta manera cumplir el objetivo que me plantee al principio. Aunque les adelantó que para este caso en específico seleccione football-data.org una grandiosa API que creó Daniel Freitag, además que utilizaré php, el ya conocido entorno LAMP y algunas clases libres,.
Sin más preámbulo hablemos de cada una de las datas y Apis libre que tenemos para extraer información referente al fútbol:
- openfootball – football.db: Es una base de datos libre y de código abierto, que está disponible para todos los aficionados del fútbol, está compuesta por datos históricos, horarios de juegos, equipos y jugadores, es la unión de muchos datos y muchos colaboradores. Su creador Gerald Bauer a creador está grandiosa data con la firme intención de convertirse en la data abierta más grande en la historia del fútbol.
Un ejemplo de la data que se puede obtener de este repositorio tenemos:
[Sat Aug/16]
12.45 Manchester United 1-2 Swansea City
15.00 Leicester City 2-2 Everton FC
15.00 Queens Park Rangers 0-1 Hull City
15.00 Stoke City 0-1 Aston Villa
De igual manera, openfootbal está compuesta por los siguientes repositorios:
- https://github.com/footballcsv
- https://github.com/openfootball
- https://github.com/rsssf
- https://github.com/footballdata
- jokecamp/FootballData: Es una base de dato realizada por jokecamp y que permite acceder a su información ya sea descargando sus datos mediante CSV o con solicitudes JSON. Está base de datos está orientada a la Liga Premier, pero también tiene bastante información de la EuroCopa.
- soccerstats.us: Es una base de datos que contempla múltiples repositorios de Github, en los cuáles se dan a conocer datos de múltiples ligas del Mundo, además de todos los campeonatos mundiales de fútbol. EL analizador de las bases de datos está escrita en Python y aparentemente extrae información de La Rec.Sport.Soccer Statistics Foundation (RSSSF).
- engsoccerdata: Es una base de datos que contempla mucha información de las Ligas y los Campeonatos de Inglaterra, de igual manera existen datos de Ligas Europeas cómo (España, Alemania, Italia y Holanda). Es un archivo csv que posee toda la información y que es actualizada constantemente.
- awesome-football: Es una colección grande de datos de fútbol (equipos nacionales e internacionales, clubes, los horarios de los partidos, jugadores, estadios entre otros). Está conformada por una lista de repositorios
- soccer-cli: Este sin duda alguna debe ser el favorito para los amantes de la consola. Todos los resultados del fútbol desde tu terminal, gracias a la maravillas de python.
- Sports Open Data: Es una api creada en el 2015 por Paolo Riva y Riccardo Quatra, para suplir la falta de data especializada de la Liga Italiana y que fuera totalmente libre. Está excelente API nos proporciona una API JSON REST, la cuál nos da la posibilidad de consultar, analizar y gestionar los datos almacenados en la base de datos de Sports Open Data. Esta organización tiene cómo lema «Datos libres creados por los usuarios para los usuarios».
- football-data.org: Es una magnifica RESTful API que contiene muchos datos que son actualizados constantemente. Se puede adquirir una API KEY Gratuita con solamente registrarse la cuál además le dará soporte CORS. Sin duda alguna es una APi sumamente completa y madura con un gran trabajo de su creador, muchos servicios y aplicaciones ya la incluyen cómo referencia para sus servicios.
La posibilidad de tener data actualizada, organizada, con acceso rápido y fácil hace de está una de las mejores API Libres referente al Fútbol, además football-data posee una excelente documentación, lo que permite que su línea de aprendizaje sea muy rápida.
Entre las funcionalidades que nos ofrece tenemos:
/soccerseasons/
/soccerseasons/{id}/ranking
/soccerseasons/{id}/fixtures
/fixtures
/soccerseasons/{id}/teams
/teams/{id}
/teams/{id}/fixtures/
Alguno ejemplos de las llamadas que ofrece esta API son:
- http://api.football-data.org/v1/soccerseasons
- http://api.football-data.org/v1/soccerseasons/351/teams
- http://api.football-data.org/v1/fixtures
- http://api.football-data.org/v1/teams/5
- http://api.football-data.org/v1/soccerseasons/424 (Consultas de la EuroCopa Francia 2016 y que utilizaremos para hacer nuestros sistema en PHP)
Ejemplo de salida JSON para información de Equipos de Fútbol:
{
"_links":{
"self":{
"href":"http://api.football-data.org/v1/teams/5"
},
"fixtures":{
"href":"http://api.football-data.org/v1/teams/5/fixtures"
},
"players":{
"href":"http://api.football-data.org/v1/teams/5/players"
}
},
"name":"FC Bayern München",
"code":"FCB",
"shortName":"Bayern",
"squadMarketValue":"559,100,000 €",
"crestUrl":"http://upload.wikimedia.org/wikipedia/commons/c/c5/Logo_FC_Bayern_München.svg"
}
Una vez hecho este repaso por cada una de las API y Datas que he conocido del mundo del Software Libre, nos ponemos mano a la obra para tener nuestro sencillo y ejemplar script en PHP que nos permita ver algunos datos de nuestros equipos y eventos favoritos.
El primer paso es instalar LAMP pero también puedes utilizar nginx cómo servidor web, debes tener a la mano un editor de texto, ya saben que me gusta sublime text que aunque no es libre funciona en Linux pero ustedes son libres de usar el que deseen nano, notepadqq, atom, scribes entre otros.
Me voy ayudar de una librería que acabo de conocer phplib-football-data y que tiene una base para la comunicación con football-data, les voy a ser sincero, antes de comenzar a escribir este artículo pensé que iba a ser más complicado pero está librería me ha hecho la vida muy fácil, por lo que sólo explicaremos el ejemplo que ellos nos ofrecen y añadiremos algún extra con fines educativos.
El primer paso que vamos a realizar es clonar el repositorio git de está librería.
git clone git://github.com/dfrt82/phplib-football-data.git
Nos ubicamos en la carpeta de la librería y editamos el archivo config.ini con la API KEY que obtenemos al registranos en football-data y que llega a nuestro correo.
cd phplib-football-data/
sudo subl3 config.ini
baseUri = 'http://api.football-data.org/v1/';
authToken = 'YOUR_AUTH_TOKEN';
Este archivo de configuración nos va a permitir más adelante comunicar la API con nuestra aplicación.
Está Librería de ejemplo está compuesta por 5 archivos importante.
- config.ini: Que guarda la información de la API y la cuál en este paso ya tenemos editado.
- FootballData.php: Esta clase de servicio encapsula la API REST de football-data.org. Es decir construye la comunicación entre la aplicación y la API, además contiene varios métodos que nos permitirán consultar diversos datos de la API cómo por ejemplo toda la temporada de una liga en específico.
- Soccerseason.php: Esta clase implementa las llamadas relacionadas con la información de los partidos y las ligas.
- Team.php: Está clase implementa las llamadas relacionadas con la información de los equipos.
- index.php: Que es la clase principal y la que hace el llamado a cada uno de los métodos que están implementado en las clases antes explicadas. Básicamente es la clase que debemos tocar si queremos cambiar los datos a mostrar, para nuestro ejemplo tomaremos la estructura inicial y simplemente la adaptaremos a la EuroCopa.
Con está pequeña modificación que le hice ya podemos tener los resultados de la Eurocopa 2016, pero sin duda podemos ponernos más creativo e ir añadiendo funcionalidades, ciclos, consultas a otras api entre otras cosas, que seguramente más adelante les mostraré. Por los momentos espero que nos muestren sus creaciones.
Hola, he estado leyendo tu blog, y me parece que la pagina que mencionas football-data.org tiene buena pinta para un proyecto de servicio web que estamos diseñando. Una gran duda que me surge y que no he sabido aclarar por lo que he leido es: como de actualizados estan los datos en football-data.org, te doy un ejemplo de lo que me refiero:
Fin de semana, partido Barcelona – Real Madrid, digamos que el partido acaba a las 22:00 de la noche de un sabado con 2-2. Entonces, sabrias aclararme cuando estaria este resultado disponible para hacer un request a la API y poder usar esa info en el servicio web?.
El tipo de servicio que estamos diseñando no es que requiera de informacion en tiempo real, pero si los resultados de la jornada en cuestion estan disponibles dias o semanas despues de producirse, entonces no seria interesante para nosotros.
Un saludo.
/Pedro.
Esto es sumamente interesante Luigys, no entiendo como Google no tiene tu contenido más arriba ya que me ha costado encontrar referencias de calidad sobre APIs deportivas. Como dice el compañero de abajo, Football-Data tiene muy buena pinta. Muchas gracias.