Infelizmente, os arquivos de reprodução de Warthunder não parecem conter informações facilmente legíveis (como o WOT, que inclui algum JSON). Esta é uma tentativa muito, muito básica de analisar os arquivos de reprodução de Warthunder (.WRPL). Existem ferramentas wt, que, embora não pareçam funcionar com repetições de servidores (multipart).
Existem três scripts disponíveis:
️ Use por sua conta e risco, as páginas da Web de raspagem (protegidas) podem ser contra o TOS/lei em certos países
Este script pode ser usado para raspar os replays da página https://warthunder.com/en/tournament/replay/. Invoque assim:
python replays_scraper.py <num_pages>
Onde <num_pages> é o número de páginas para raspar (normalmente existem 25 replays por página). Ele imprimirá um objeto JSON com todos os replays encontrados.
Como a página está protegida por login, este script espera um arquivo auth_cookie.json com os cookies para o login:
auth_cookie.json:
{
"identity_sid" : " ... "
} Onde ... é o valor do cookie identity_sid (que você pode obter login no warthunder.com e lendo os cookies no seu navegador).
Faça o download de uma repetição de https://warthunder.com/en/tournament/replay/.
python download_replay.py <replay_id>
onde <replay_id> é o ID de repetição (64 bits, em notação decimal ou hexadecimal). Isso armazenará os arquivos de reprodução em uma pasta nomeada após o ID de repetição na notação hexadecimal.
Analisar uma repetição em uma pasta
python parse_replay.py <replay_folder>
Ele espera que os arquivos de reprodução sejam nomeados 0000.WRPL, 0001.WRPL, etc. Se um <replay_folder> não for fornecido, ele usará o diretório atual.
A saída será no formulário 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"
]
},
...
]
}
Você também pode usar os 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 ))