Reformat the logfile

This commit is contained in:
Eryn Wells 2022-04-16 18:20:59 +00:00
parent fde5bf81ea
commit a5a226a5b3
2 changed files with 308 additions and 313 deletions

View file

@ -1,299 +1,285 @@
{
"records": [
{
"nethack_version": "3.6.6",
"score": 2652,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 7,
"level_descriptive": "Level 7",
"max_level": 7,
"hit_points": 0,
"max_hit_points": 60,
"number_of_deaths": 1,
"end_date": "2022-04-03",
"start_date": "2022-01-16",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "killed by a Woodland-elf"
[
{
"score": 4171,
"dungeon": {
"n": 0,
"name": "The Dungeons of Doom",
"level": {
"n": 9,
"descriptive": "Level 9"
}
},
{
"nethack_version": "3.6.6",
"score": 40,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 1,
"level_descriptive": "Level 1",
"max_level": 1,
"hit_points": 0,
"max_hit_points": 15,
"number_of_deaths": 1,
"end_date": "2022-04-03",
"start_date": "2022-04-03",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"end_date": "2022-04-16",
"start_date": "2022-04-14",
"character": {
"name": "Eryn",
"reason_for_death": "killed by an electric shock"
"abbreviated": "Eryn-Sam-Hum-Fem-Law",
"max_level": 9,
"hp": {
"n": 0,
"max": 63
},
"role": {
"short": "Sam",
"descriptive": "Samurai"
},
"race": {
"short": "Hum",
"descriptive": "Human"
},
"gender": {
"short": "Fem",
"descriptive": "Female"
},
"alignment": {
"short": "Law",
"descriptive": "Lawful"
}
},
{
"nethack_version": "3.6.6",
"score": 1973,
"dungeon_number": 2,
"dungeon_name": "The Gnomish Mines",
"level": 6,
"level_descriptive": "Level 6",
"max_level": 6,
"hit_points": 0,
"max_hit_points": 57,
"number_of_deaths": 1,
"end_date": "2022-04-03",
"start_date": "2022-04-03",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "poisoned by a rotted gnomish wizard corpse"
"death": {
"n": 1,
"cause": "killed by a Green-elf"
},
{
"nethack_version": "3.6.6",
"score": 898,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 4,
"level_descriptive": "Level 4",
"max_level": 5,
"hit_points": 0,
"max_hit_points": 36,
"number_of_deaths": 1,
"end_date": "2022-04-04",
"start_date": "2022-04-03",
"system": {
"hostname": "nutmeg",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "died of starvation, while fainted"
},
{
"nethack_version": "3.6.6",
"score": 399,
"dungeon_number": 2,
"dungeon_name": "The Gnomish Mines",
"level": 3,
"level_descriptive": "Level 3",
"max_level": 3,
"hit_points": 0,
"max_hit_points": 21,
"number_of_deaths": 1,
"end_date": "2022-04-04",
"start_date": "2022-04-04",
"user_id": 1002,
"role": "Priest",
"race": "Elf",
"gender": "Female",
"alignment": "Chaotic",
"name": "Eryn",
"reason_for_death": "killed by a dwarf"
},
{
"nethack_version": "3.6.6",
"score": 138,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 2,
"level_descriptive": "Level 2",
"max_level": 2,
"hit_points": 0,
"max_hit_points": 14,
"number_of_deaths": 1,
"end_date": "2022-04-05",
"start_date": "2022-04-05",
"user_id": 1002,
"role": "Ranger",
"race": "Gnome",
"gender": "Female",
"alignment": "Neutral",
"name": "Eryn",
"reason_for_death": "killed by a jackal"
},
{
"nethack_version": "3.6.6",
"score": 455,
"dungeon_number": 2,
"dungeon_name": "The Gnomish Mines",
"level": 4,
"level_descriptive": "Level 4",
"max_level": 4,
"hit_points": 0,
"max_hit_points": 37,
"number_of_deaths": 1,
"end_date": "2022-04-07",
"start_date": "2022-04-05",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "killed by a little dog"
},
{
"nethack_version": "3.6.6",
"score": 397,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 4,
"level_descriptive": "Level 4",
"max_level": 4,
"hit_points": 0,
"max_hit_points": 15,
"number_of_deaths": 1,
"end_date": "2022-04-07",
"start_date": "2022-04-07",
"user_id": 1002,
"role": "Rogue",
"race": "Human",
"gender": "Female",
"alignment": "Chaotic",
"name": "Eryn",
"reason_for_death": "killed by a cave spider, while frozen by a monster's gaze"
},
{
"nethack_version": "3.6.6",
"score": 2552,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 6,
"level_descriptive": "Level 6",
"max_level": 6,
"hit_points": 0,
"max_hit_points": 44,
"number_of_deaths": 1,
"end_date": "2022-04-09",
"start_date": "2022-04-08",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "killed by a violet fungus"
},
{
"nethack_version": "3.6.6",
"score": 391,
"dungeon_number": 2,
"dungeon_name": "The Gnomish Mines",
"level": 3,
"level_descriptive": "Level 3",
"max_level": 3,
"hit_points": 0,
"max_hit_points": 36,
"number_of_deaths": 1,
"end_date": "2022-04-09",
"start_date": "2022-04-09",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "killed by a gnome king"
},
{
"nethack_version": "3.6.6",
"score": 567,
"dungeon_number": 2,
"dungeon_name": "The Gnomish Mines",
"level": 5,
"level_descriptive": "Level 5",
"max_level": 5,
"hit_points": 0,
"max_hit_points": 34,
"number_of_deaths": 1,
"end_date": "2022-04-09",
"start_date": "2022-04-09",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "killed by a little dog called Hachi, while fainted from lack of food"
},
{
"nethack_version": "3.6.6",
"score": 0,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 1,
"level_descriptive": "Level 1",
"max_level": 1,
"hit_points": 15,
"max_hit_points": 15,
"number_of_deaths": 0,
"end_date": "2022-04-11",
"start_date": "2022-04-11",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "quit"
},
{
"nethack_version": "3.6.6",
"score": 866,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 4,
"level_descriptive": "Level 4",
"max_level": 6,
"hit_points": 0,
"max_hit_points": 43,
"number_of_deaths": 1,
"end_date": "2022-04-12",
"start_date": "2022-04-11",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "killed by a bolt of cold"
},
{
"nethack_version": "3.6.6",
"score": 4143,
"dungeon_number": 0,
"dungeon_name": "The Dungeons of Doom",
"level": 6,
"level_descriptive": "Level 6",
"max_level": 7,
"hit_points": 0,
"max_hit_points": 64,
"number_of_deaths": 1,
"end_date": "2022-04-13",
"start_date": "2022-04-12",
"user_id": 1002,
"role": "Samurai",
"race": "Human",
"gender": "Female",
"alignment": "Lawful",
"name": "Eryn",
"reason_for_death": "killed by a plains centaur"
"nethack_version": "3.6.6"
}
]
}
},
{
"score": 4143,
"dungeon": {
"n": 0,
"name": "The Dungeons of Doom",
"level": {
"n": 6,
"descriptive": "Level 6"
}
},
"end_date": "2022-04-13",
"start_date": "2022-04-12",
"character": {
"name": "Eryn",
"abbreviated": "Eryn-Sam-Hum-Fem-Law",
"max_level": 7,
"hp": {
"n": 0,
"max": 64
},
"role": {
"short": "Sam",
"descriptive": "Samurai"
},
"race": {
"short": "Hum",
"descriptive": "Human"
},
"gender": {
"short": "Fem",
"descriptive": "Female"
},
"alignment": {
"short": "Law",
"descriptive": "Lawful"
}
},
"death": {
"n": 1,
"cause": "killed by a plains centaur"
},
"system": {
"hostname": "nutmeg",
"user_id": 1002,
"nethack_version": "3.6.6"
}
},
{
"score": 2652,
"dungeon": {
"n": 0,
"name": "The Dungeons of Doom",
"level": {
"n": 7,
"descriptive": "Level 7"
}
},
"end_date": "2022-04-03",
"start_date": "2022-01-16",
"character": {
"name": "Eryn",
"abbreviated": "Eryn-Sam-Hum-Fem-Law",
"max_level": 7,
"hp": {
"n": 0,
"max": 60
},
"role": {
"short": "Sam",
"descriptive": "Samurai"
},
"race": {
"short": "Hum",
"descriptive": "Human"
},
"gender": {
"short": "Fem",
"descriptive": "Female"
},
"alignment": {
"short": "Law",
"descriptive": "Lawful"
}
},
"death": {
"n": 1,
"cause": "killed by a Woodland-elf"
},
"system": {
"hostname": "nutmeg",
"user_id": 1002,
"nethack_version": "3.6.6"
}
},
{
"score": 399,
"dungeon": {
"n": 2,
"name": "The Gnomish Mines",
"level": {
"n": 3,
"descriptive": "Level 3"
}
},
"end_date": "2022-04-04",
"start_date": "2022-04-04",
"character": {
"name": "Eryn",
"abbreviated": "Eryn-Pri-Elf-Fem-Cha",
"max_level": 3,
"hp": {
"n": 0,
"max": 21
},
"role": {
"short": "Pri",
"descriptive": "Priest"
},
"race": {
"short": "Elf",
"descriptive": "Elf"
},
"gender": {
"short": "Fem",
"descriptive": "Female"
},
"alignment": {
"short": "Cha",
"descriptive": "Chaotic"
}
},
"death": {
"n": 1,
"cause": "killed by a dwarf"
},
"system": {
"hostname": "nutmeg",
"user_id": 1002,
"nethack_version": "3.6.6"
}
},
{
"score": 397,
"dungeon": {
"n": 0,
"name": "The Dungeons of Doom",
"level": {
"n": 4,
"descriptive": "Level 4"
}
},
"end_date": "2022-04-07",
"start_date": "2022-04-07",
"character": {
"name": "Eryn",
"abbreviated": "Eryn-Rog-Hum-Fem-Cha",
"max_level": 4,
"hp": {
"n": 0,
"max": 15
},
"role": {
"short": "Rog",
"descriptive": "Rogue"
},
"race": {
"short": "Hum",
"descriptive": "Human"
},
"gender": {
"short": "Fem",
"descriptive": "Female"
},
"alignment": {
"short": "Cha",
"descriptive": "Chaotic"
}
},
"death": {
"n": 1,
"cause": "killed by a cave spider, while frozen by a monster's gaze"
},
"system": {
"hostname": "nutmeg",
"user_id": 1002,
"nethack_version": "3.6.6"
}
},
{
"score": 138,
"dungeon": {
"n": 0,
"name": "The Dungeons of Doom",
"level": {
"n": 2,
"descriptive": "Level 2"
}
},
"end_date": "2022-04-05",
"start_date": "2022-04-05",
"character": {
"name": "Eryn",
"abbreviated": "Eryn-Ran-Gno-Fem-Neu",
"max_level": 2,
"hp": {
"n": 0,
"max": 14
},
"role": {
"short": "Ran",
"descriptive": "Ranger"
},
"race": {
"short": "Gno",
"descriptive": "Gnome"
},
"gender": {
"short": "Fem",
"descriptive": "Female"
},
"alignment": {
"short": "Neu",
"descriptive": "Neutral"
}
},
"death": {
"n": 1,
"cause": "killed by a jackal"
},
"system": {
"hostname": "nutmeg",
"user_id": 1002,
"nethack_version": "3.6.6"
}
}
]

View file

@ -13,6 +13,7 @@ import argparse
import datetime
import json
import os.path
import subprocess
import sys
DUNGEONS = {
@ -73,6 +74,8 @@ def main(argv):
print('Given path is not a real file!', file=sys.stderr)
return -1
hostname = subprocess.check_output(['hostname', '-s']).decode('ascii').strip()
records = []
with open(args.logfile) as logfile:
for record in logfile.readlines():
@ -90,34 +93,40 @@ def main(argv):
start_date = datetime.datetime.strptime(fields[9], '%Y%m%d').strftime('%Y-%m-%d')
end_date = datetime.datetime.strptime(fields[8], '%Y%m%d').strftime('%Y-%m-%d')
name, reason = fields[15].split(',', maxsplit=1)
name, cause_of_death = (s.strip() for s in fields[15].split(',', maxsplit=1))
role = fields[11]
race = fields[12]
gender = fields[13]
alignment = fields[14]
records.append({
'nethack_version': fields[0],
'score': int(fields[1]),
'dungeon_number': int(fields[2]),
'dungeon_name': dungeon_name,
'level': dungeon_level,
'level_descriptive': dungeon_level_descriptive,
'max_level': int(fields[4]),
'hit_points': int(fields[5]),
'max_hit_points': int(fields[6]),
'number_of_deaths': int(fields[7]),
'dungeon': {
'n': int(fields[2]),
'name': dungeon_name,
'level': {'n': dungeon_level, 'descriptive': dungeon_level_descriptive},
},
'end_date': end_date,
'start_date': start_date,
'user_id': int(fields[10]),
'role': ROLES[fields[11]],
'race': RACES[fields[12]],
'gender': GENDERS[fields[13]],
'alignment': ALIGNMENTS[fields[14]],
'name': name.strip(),
'reason_for_death': reason.strip(),
'character': {
'name': name,
'abbreviated': f'{name}-{role}-{race}-{gender}-{alignment}',
'max_level': int(fields[4]),
'hp': {'n': int(fields[5]), 'max': int(fields[6])},
'role': {'short': role, 'descriptive': ROLES[role]},
'race': {'short': race, 'descriptive': RACES[race]},
'gender': {'short': gender, 'descriptive': GENDERS[gender]},
'alignment': {'short': alignment, 'descriptive': ALIGNMENTS[alignment]},
},
'death': {'n': int(fields[7]), 'cause': cause_of_death},
'system': {
'hostname': hostname,
'user_id': int(fields[10]),
'nethack_version': fields[0],
}
})
output_object = {
'records': records,
}
json.dump(output_object, sys.stdout, indent=2)
json.dump(records, sys.stdout, indent=2)
print('\n')
if __name__ == '__main__':