Desafortunadamente, los archivos de reproducción de Warthunder no parecen contener información fácilmente legible (como WOT, que incluye algunos JSON). Este es un intento muy básico de analizar los archivos de reproducción de Warthunder (.WRPL). Hay herramientas WT, que aunque no parecen funcionar con las repeticiones (multipart) del servidor.
Hay tres scripts disponibles:
️ Uso en su propio riesgo, el raspado (protegido) las páginas web pueden estar en contra de los TOS/ley en ciertos países
Este script se puede usar para raspar las repeticiones de la página https://warthunder.com/en/tournament/replay/. Invocarlo así:
python replays_scraper.py <num_pages>
donde <num_pages> es el número de páginas para raspar (generalmente hay 25 repeticiones por página). Imprimirá un objeto JSON con todas las repeticiones encontradas.
Dado que la página está protegida por inicio de sesión, este script espera un archivo auth_cookie.json con las cookies para el inicio de sesión:
auth_cookie.json:
{
"identity_sid" : " ... "
} ¿Dónde ... es el valor de la cookie identity_sid (que puede obtener iniciando sesión en WarThunder.com y leyendo las cookies en su navegador)?
Descargue una repetición de https://warthunder.com/en/tournament/replay/.
python download_replay.py <replay_id>
donde <replay_id> es la ID de repetición (64 bits, ya sea en notación decimal o hexadecimal). Esto almacenará los archivos de reproducción en una carpeta nombrada con el nombre de la ID de repetición en notación hexadecimal.
Analizar una repetición en una carpeta
python parse_replay.py <replay_folder>
Espera que los archivos de reproducción se denominen 0000.WRPL, 0001.WRPL, etc. Si no se da un <replay_folder> , usará el directorio actual.
La salida estará en forma JSON:
parsing replay in /path/to/replay/005569aa001501ca
parsing /path/to/replay/005569aa001501ca/0000.wrpl
parsing /path/to/replay/005569aa001501ca/0001.wrpl
parsing /path/to/replay/005569aa001501ca/0002.wrpl
parsing /path/to/replay/005569aa001501ca/0003.wrpl
parsing /path/to/replay/005569aa001501ca/0004.wrpl
parsing /path/to/replay/005569aa001501ca/0005.wrpl
parsing /path/to/replay/005569aa001501ca/0006.wrpl
parsing /path/to/replay/005569aa001501ca/0007.wrpl
parsing /path/to/replay/005569aa001501ca/0008.wrpl
parsing /path/to/replay/005569aa001501ca/0009.wrpl
{
"level": "levels/avg_normandy.bin",
"mission_file": "gamedata/missions/cta/tanks/normandy/normandy_dom.blk",
"mission_name": "normandy_Dom",
"time_of_day": "day",
"weather": "hazy",
"time_of_battle_ts": 1641217514,
"time_of_battle": "2022-01-03 14:45:14",
"num_players": 21,
"players": [
{
"player_id": 34,
"vehicles": [
"us_m1a1_abrams",
"us_m1a1_hc_abrams"
]
},
{
"player_id": 35,
"vehicles": [
"us_m1_ip_abrams",
"us_hstv_l"
]
},
...
]
}
También puede usar los scripts como módulos
import replays_scraper
import download_replay
import parse_replay
# set the cookies
cookies = { "identity_sid" : "secret_key" }
# download the html
pages = replays_scraper . download_pages ( 1 , cookies )
# scrape replay data from html
replays = []
for page in pages :
replays += replays_scraper . parse_page ( page )
# download the files of the last replay
download_replay . downloadReplay ( replays [ - 1 ][ "id" ])
# get the hexadecimal id (= folder name)
replay_id_hex = download_replay . _get_hex_id ( replays [ - 1 ][ "id" ])
# parse the replay
print ( parse_replay . parse_replay ( replay_id_hex ))