Les fichiers de relecture de Wartthunder ne semblent malheureusement pas contenir d'informations facilement lisibles (comme WOT, qui inclut certains JSON). C'est une tentative très, très basique d'analyser les fichiers de relecture de Warthunder (.Wrpl). Il y a WT-Tools, qui ne semble cependant pas fonctionner avec les rediffusions de serveurs (multipart).
Il y a trois scripts disponibles:
️ Utiliser à vos propres risques, les pages Web (protégées) pourraient être contraires à la TOS / Law dans certains pays
Ce script peut être utilisé pour gratter les rediffusions à partir de la page https://warthunder.com/en/tournament/replay/. Invoquez-le comme ceci:
python replays_scraper.py <num_pages>
où <num_pages> est le nombre de pages à gratter (généralement il y a 25 rediffusions par page). Il imprimera un objet JSON avec toutes les rediffusions trouvées.
Étant donné que la page est protégée par la connexion, ce script s'attend à un fichier auth_cookie.json avec les cookies pour la connexion:
auth_cookie.json:
{
"identity_sid" : " ... "
} Où ... est la valeur du cookie identity_sid (que vous pouvez obtenir en vous connectant à Warthunder.com et en lisant les cookies dans votre navigateur).
Téléchargez une rediffusion depuis https://warthunder.com/en/tournoi/replay/.
python download_replay.py <replay_id>
où <replay_id> est l'ID de relecture (64 bits, en notation décimale ou hexadécimale). Cela stockera les fichiers de relecture dans un dossier nommé d'après l'ID de relecture en notation hexagonale.
Analyser une rediffusion dans un dossier
python parse_replay.py <replay_folder>
Il s'attend à ce que les fichiers de relecture soient nommés 0000.wrpl, 0001.wrpl, etc. Si un <replay_folder> n'est pas donné, il utilisera le répertoire actuel.
La sortie sera sous forme 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"
]
},
...
]
}
Vous pouvez également utiliser les scripts comme modules
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 ))