Una de las cosas que más me gusta de programar es que es muy fácil reutilizar lo que has hecho anteriormente y volver a aplicarlo a una situación parecida a la original con muy poco esfuerzo. Apenas me ha costado media hora preparar el Python for Runners 2.0, el reto Sevilla - Barcelona! :)
Sólo si sois muy muy muy geeks, el código está disponible aquí:
https://github.com/iZydro/python-for-runners
Si algo de lo que viene a continuación no lo entendéis y os interesa, os invito a releer el post de hace nueve meses, no ha cambiado prácticamente nada lo que he hecho hoy.
Ha sido muy fácil preparar la versión de este año. En el caso de la maratón de Barcelona, sólo había un cambio en la URL de donde se sacaban los datos de los tiempos de los corredores. En el caso de Sevilla, fue un poco más divertido, no estaba del todo claro de dónde se sacaban los datos, en este caso la web estaba hecha de manera mucho más profesional y descargaban el resultado usando JavaScript, sin recargar toda la página del navegador. Como no tenía ganas de perder mucho tiempo, puse el WireShark, un monitor de red, y vi rápidamente que cada vez que consultaba el tiempo de un runner la web obtenía los datos de esta URL:
En este caso, el chorizo enorme 53072209-9240-4455-9f22-0e7fbc5ffd2c es el identificador de la maratón de Sevilla, y el 1727 que viene después el dorsal del runner. Lo otro parece un timestamp, y en realidad parece que no se usa... La estructura de los datos que devolvía el servidor era muy parecida a la del de Barcelona, así que cambiando apenas un par de líneas puse en marcha los dos scripts y en poco más de una hora ya tenía todos los datos preparados en sendos ficheros de texto que contenían el nombre de cada finisher y su tiempo.
Y con los datos de los 14223 finishers de Barcelona y los 7998 de Sevilla, ¿sabéis cuántos locos como yo corrimos ambas maratones en un plazo de 3 semanas de tiempo, cuál fue el tiempo medio que hicimos los repetidores de las dos pruebas y cuál fue más rápida y por cuánto? Para eso está el Python for Runners... :) Para darme cuenta de que quizá no haya sido una locura tan grande, o al menos, que hay otros 67 locos como yo que corrieron ambas maratones... :)
¿Y todo esto para qué? Para corroborar que el tiempo medio de los 69 repetidores en Sevilla fue de 3:39:40, y en Barcelona de 3:43:29...
1: jorge guisado serrano SEV=>3:43:06 BCN=>2:44:20 - BCN faster by 0:58:46
2: scott paul johnston SEV=>2:48:48 BCN=>2:56:09 - SEV faster by 0:07:21
3: ramon lopez mendizabal SEV=>3:16:25 BCN=>4:29:41 - SEV faster by 1:13:16
4: albert caballero recio SEV=>2:37:13 BCN=>2:40:20 - SEV faster by 0:03:07
5: oriol sibila vidal SEV=>3:28:26 BCN=>2:58:35 - BCN faster by 0:29:51
6: chris zair SEV=>3:38:18 BCN=>3:48:04 - SEV faster by 0:09:46
7: angel ortiz de villajos sanz SEV=>3:20:08 BCN=>3:23:20 - SEV faster by 0:03:12
8: jose gaspar escudier vega SEV=>2:55:12 BCN=>3:08:30 - SEV faster by 0:13:18
9: miguel moreno moreno SEV=>3:16:18 BCN=>3:29:10 - SEV faster by 0:12:52
10: rafael toribio medina SEV=>3:36:31 BCN=>3:02:11 - BCN faster by 0:34:20
11: garry mcgrotty SEV=>3:43:11 BCN=>3:33:35 - BCN faster by 0:09:36
12: isidro gilabert SEV=>3:14:39 BCN=>3:28:19 - SEV faster by 0:13:40
13: jose enrique calleja gonzalez SEV=>3:29:21 BCN=>4:35:16 - SEV faster by 1:05:55
14: guillermo rodriguez ramirez SEV=>3:27:28 BCN=>3:28:33 - SEV faster by 0:01:05
15: luis morales martinez SEV=>3:45:31 BCN=>3:12:28 - BCN faster by 0:33:03
16: jordi castells marchante SEV=>3:34:02 BCN=>3:33:14 - BCN faster by 0:00:48
17: josep maria sibila figuls SEV=>3:28:26 BCN=>3:32:06 - SEV faster by 0:03:40
18: alvaro garcia suarez SEV=>3:38:47 BCN=>3:43:57 - SEV faster by 0:05:10
19: pedro jose lopez cosano SEV=>3:18:48 BCN=>3:29:15 - SEV faster by 0:10:27
20: antonio garrido esmerado SEV=>3:24:40 BCN=>3:42:46 - SEV faster by 0:18:06
21: marta lozano gimenez SEV=>5:07:59 BCN=>4:43:31 - BCN faster by 0:24:28
22: pau gimenez martinez SEV=>5:07:58 BCN=>3:56:31 - BCN faster by 1:11:27
23: ferran santoyo medina SEV=>4:30:21 BCN=>4:35:38 - SEV faster by 0:05:17
24: flavio augusto francisco SEV=>3:21:46 BCN=>3:39:19 - SEV faster by 0:17:33
25: pablo moreno sillero SEV=>3:38:20 BCN=>3:36:26 - BCN faster by 0:01:54
26: antonio sanchez corpas SEV=>3:38:24 BCN=>3:36:26 - BCN faster by 0:01:58
27: david lopez ruiz SEV=>3:19:29 BCN=>3:52:32 - SEV faster by 0:33:03
28: marlene fonseca SEV=>3:45:17 BCN=>4:00:55 - SEV faster by 0:15:38
29: manuel dato dato SEV=>3:48:45 BCN=>3:50:59 - SEV faster by 0:02:14
30: santiago jose perez moya SEV=>3:41:55 BCN=>3:57:09 - SEV faster by 0:15:14
31: jaime ruiz diaz SEV=>3:40:00 BCN=>4:10:31 - SEV faster by 0:30:31
32: david bertomeu baile SEV=>3:45:08 BCN=>4:15:22 - SEV faster by 0:30:14
33: vasco rodrigues silva SEV=>3:42:26 BCN=>3:52:21 - SEV faster by 0:09:55
34: carmine semonella SEV=>3:36:35 BCN=>4:39:56 - SEV faster by 1:03:21
35: bruce bignell SEV=>4:09:45 BCN=>4:25:04 - SEV faster by 0:15:19
36: brian dunne SEV=>3:56:17 BCN=>3:13:54 - BCN faster by 0:42:23
37: javier garcia moreno SEV=>3:11:33 BCN=>4:05:23 - SEV faster by 0:53:50
38: filipe torres SEV=>3:19:01 BCN=>3:21:05 - SEV faster by 0:02:04
39: miguel angel velasco llamas SEV=>3:51:59 BCN=>4:23:37 - SEV faster by 0:31:38
40: jesus ramon fernandez rico SEV=>3:57:07 BCN=>4:10:15 - SEV faster by 0:13:08
41: julio agullo ramon SEV=>3:57:52 BCN=>4:10:54 - SEV faster by 0:13:02
42: alfredo pradas salamanca SEV=>3:57:04 BCN=>3:54:32 - BCN faster by 0:02:32
43: eduard mora pareja SEV=>3:56:57 BCN=>3:58:04 - SEV faster by 0:01:07
44: joao mota freitas SEV=>3:42:25 BCN=>3:32:11 - BCN faster by 0:10:14
45: juan herrera martinez SEV=>4:31:27 BCN=>4:28:24 - BCN faster by 0:03:03
46: pedro pereira SEV=>3:09:50 BCN=>4:12:18 - SEV faster by 1:02:28
47: jesus villanueva angulo SEV=>2:56:05 BCN=>2:50:23 - BCN faster by 0:05:42
48: david garcia sanchez SEV=>3:53:55 BCN=>2:56:54 - BCN faster by 0:57:01
49: manuel barrera rodriguez SEV=>3:09:57 BCN=>3:08:44 - BCN faster by 0:01:13
50: carlos castillo guardia SEV=>3:14:50 BCN=>3:22:40 - SEV faster by 0:07:50
51: felix cobo paquez SEV=>3:19:56 BCN=>3:36:09 - SEV faster by 0:16:13
52: joan noguera gonzalez SEV=>3:17:39 BCN=>3:21:20 - SEV faster by 0:03:41
53: marta navarro salles SEV=>3:37:44 BCN=>3:48:35 - SEV faster by 0:10:51
54: elisabet valero morera SEV=>4:25:35 BCN=>3:34:59 - BCN faster by 0:50:36
55: enrique coder martinez SEV=>3:46:19 BCN=>4:04:12 - SEV faster by 0:17:53
56: jose francisco cabezas sedano SEV=>3:14:34 BCN=>2:56:18 - BCN faster by 0:18:16
57: joaquin carmona garcia SEV=>3:32:27 BCN=>3:37:12 - SEV faster by 0:04:45
58: stefano leonino SEV=>3:21:08 BCN=>3:31:49 - SEV faster by 0:10:41
59: brian pim SEV=>3:13:53 BCN=>3:19:45 - SEV faster by 0:05:52
60: carlos fernandez garcia SEV=>4:17:40 BCN=>5:17:08 - SEV faster by 0:59:28
61: enrique jorquera barrionuevo SEV=>4:42:06 BCN=>3:04:43 - BCN faster by 1:37:23
62: rodrigo ferreira SEV=>4:10:19 BCN=>4:10:10 - BCN faster by 0:00:09
63: laia ratera rubiralta SEV=>3:22:08 BCN=>3:19:50 - BCN faster by 0:02:18
64: tomas padua vega SEV=>2:27:44 BCN=>2:40:12 - SEV faster by 0:12:28
65: jose maria segura saint-gerons SEV=>4:19:01 BCN=>4:27:26 - SEV faster by 0:08:25
66: juan ignacio rovira magraner SEV=>4:21:14 BCN=>4:00:20 - BCN faster by 0:20:54
67: manuel masedo gomez SEV=>4:15:53 BCN=>4:26:45 - SEV faster by 0:10:52
68: montse urbea puig SEV=>3:47:01 BCN=>3:58:52 - SEV faster by 0:11:51
Ran SEV2 faster: 45, ran BCN faster: 23
Average SEV time 3:39:40
Average BCN time 3:43:29
Average difference: SEV faster by 3 minutes, 48 seconds
Como datos curiosos... Un runner hizo 2:37 en Sevilla y 2:40 en Barcelona, y otro 2:27 y 2:40 también... Qué bestias... Otro que me dejó pensativo fue el que hizo 4:42 en Sevilla, y luego se marcó un 3:04 en Barcelona. Otro hizo también 3:54 y 2:56, respectivamente. Habrán hecho una maratón cochilona en Sevilla para luego cascarse un sub 3h en Barcelona. Esas cosas nunca las habría sabido sin mi querido python...
Supongo que esto es fruto del Marathon Blues... :)
Muy, pero que muy interesante. Habría que hacer algo parecido con todas las maratones de España... :-)
ResponderEliminarInteresante! Me molan este tipo de estudios, y la verdad es que requiere dedicación y paciencia. Te lo has currado!
ResponderEliminarMuy friki pero muy interesante. Hay desviaciones de algunos tiempos muy significativas.
ResponderEliminarPetadas gloriosas, regalos( o robos) de dorsal, quién sabe...
Para un paleto informático como yo, que logres esto es magia.Un saludo
Muy, muy interesante Isidro, otra posibilidad que se me ocurre para esas diferencias tan significativas es que algún corredor corriera con algún amigo, hermano, hermana, pareja etc.
EliminarLas chicas clavan sus tiempos por pocos segundos y son de nivelazo.
ResponderEliminarBien por Pyton...nunca me gustó especialmente ese lenguaje, pero he de reconocer que le has sacado un partido curioso.
ResponderEliminarMe gustaría probarlo con algunos 10K que he corrido...que le pasas como entrada, un excel? pdf? html?
Un archivo de texto que contiene el nombre, el signo | y el tiempo para cada runner
EliminarMe encanta estas comparativas!! datos muyyy interesantes!!
ResponderEliminarHay mucho loco por allí pero pocos frikis como tú!
Enhorabuena por los dos maratones!!
bss
Tania
Madre mia, y tu dices que solo te ha llevado media hora?....pufff pues a mi me parece tela, eso si muy interesante.
ResponderEliminarMe encanta :)
ResponderEliminarAdemás el código es bello y elegante ;)
Hacía tiempo que no veía python, últimamente estoy liado con VB