Warthunder -Wiederholungsdateien scheinen leider keine leicht lesbaren Informationen zu enthalten (wie WOT, einschließlich JSON). Dies ist ein sehr, sehr grundlegender Versuch, Warthunder -Wiederholungsdateien (.wrpl) zu analysieren. Es gibt WT-Tools, die zwar nicht mit (Multipart-) Server-Wiederholungen zu funktionieren scheint.
Es stehen drei Skripte zur Verfügung:
Euen Verwenden Sie auf eigenes Risiko, Scabing (geschützte) Webseiten könnten in bestimmten Ländern gegen das TOS/das Gesetz stehen
Dieses Skript kann verwendet werden, um Wiederholungen von https://warthunder.com/en/tournament/replay/ abzukratzen. Rufen Sie es so auf:
python replays_scraper.py <num_pages>
wobei <num_pages> die Anzahl der Seiten ist, um zu kratzen (normalerweise gibt es 25 Wiederholungen pro Seite). Es druckt ein JSON -Objekt mit allen gefundenen Wiederholungen.
Da die Seite geschützt ist, erwartet dieses Skript eine auth_cookie.json -Datei mit den Cookies für die Anmeldung:
auth_cookie.json:
{
"identity_sid" : " ... "
} Wo ... ist der Wert des identity_sid Cookies (den Sie durch Anmelden bei warthunder.com und dem Lesen der Cookies in Ihrem Browser erhalten können).
Laden Sie eine Wiederholung von https://warthunder.com/en/tournament/replay/ herunter.
python download_replay.py <replay_id>
wobei <replay_id> die Wiederholungs-ID ist (64-Bit, entweder in Dezimal- oder Hexadezimalnotation). Dadurch werden die Wiederholungsdateien in einem Ordner gespeichert, das nach der Wiederholung in der Hex -Notation benannt ist.
Analysieren Sie eine Wiederholung in einem Ordner
python parse_replay.py <replay_folder>
Es wird erwartet, dass die Wiederholungsdateien 0000.wrpl, 0001.wrpl usw. bezeichnet werden. Wenn kein <replay_folder> nicht angegeben ist, wird das aktuelle Verzeichnis verwendet.
Die Ausgabe erfolgt in JSON -Form:
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"
]
},
...
]
}
Sie können die Skripte auch als Module verwenden
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 ))