arkparser 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. {arkparser-0.1.2 → arkparser-0.1.3}/PKG-INFO +50 -38
  2. {arkparser-0.1.2 → arkparser-0.1.3}/README.md +49 -37
  3. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/__init__.py +2 -2
  4. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/common/binary_reader.py +14 -10
  5. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/common/map_config.py +23 -4
  6. arkparser-0.1.3/arkparser/common/normalization.py +45 -0
  7. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/common/version_detection.py +2 -2
  8. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/data_models.py +23 -18
  9. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/export.py +221 -78
  10. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/files/__init__.py +1 -1
  11. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/files/cloud_inventory.py +6 -5
  12. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/files/profile.py +15 -7
  13. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/files/tribe.py +19 -11
  14. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/files/world_save.py +55 -134
  15. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/game_objects/container.py +10 -1
  16. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/game_objects/game_object.py +134 -23
  17. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/models/character.py +13 -10
  18. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/models/creature.py +72 -111
  19. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/models/player.py +4 -0
  20. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/models/tribe.py +5 -1
  21. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/properties/byte_property.py +3 -2
  22. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/properties/compound.py +55 -29
  23. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/properties/primitives.py +2 -3
  24. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/properties/registry.py +7 -0
  25. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/structs/property_list.py +26 -21
  26. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/structs/registry.py +18 -1
  27. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser.egg-info/PKG-INFO +50 -38
  28. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser.egg-info/SOURCES.txt +5 -1
  29. {arkparser-0.1.2 → arkparser-0.1.3}/pyproject.toml +1 -1
  30. arkparser-0.1.3/tests/test_binary_reader.py +25 -0
  31. {arkparser-0.1.2 → arkparser-0.1.3}/tests/test_cloud_inventory.py +16 -0
  32. arkparser-0.1.3/tests/test_data_models.py +21 -0
  33. arkparser-0.1.3/tests/test_export.py +118 -0
  34. arkparser-0.1.3/tests/test_game_objects.py +43 -0
  35. {arkparser-0.1.2 → arkparser-0.1.3}/tests/test_models.py +47 -1
  36. {arkparser-0.1.2 → arkparser-0.1.3}/tests/test_profile.py +7 -1
  37. {arkparser-0.1.2 → arkparser-0.1.3}/tests/test_tribe.py +9 -1
  38. {arkparser-0.1.2 → arkparser-0.1.3}/tests/test_version_detection.py +24 -8
  39. arkparser-0.1.3/tests/test_world_save.py +840 -0
  40. arkparser-0.1.2/arkparser/py.typed +0 -0
  41. arkparser-0.1.2/tests/test_world_save.py +0 -252
  42. {arkparser-0.1.2 → arkparser-0.1.3}/LICENSE +0 -0
  43. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/common/__init__.py +0 -0
  44. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/common/exceptions.py +0 -0
  45. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/common/types.py +0 -0
  46. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/files/base.py +0 -0
  47. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/game_objects/__init__.py +0 -0
  48. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/game_objects/location.py +0 -0
  49. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/models/__init__.py +0 -0
  50. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/models/item.py +0 -0
  51. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/models/stats.py +0 -0
  52. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/models/structure.py +0 -0
  53. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/properties/__init__.py +0 -0
  54. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/properties/base.py +0 -0
  55. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/structs/__init__.py +0 -0
  56. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/structs/base.py +0 -0
  57. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/structs/colors.py +0 -0
  58. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/structs/misc.py +0 -0
  59. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser/structs/vectors.py +0 -0
  60. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser.egg-info/dependency_links.txt +0 -0
  61. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser.egg-info/requires.txt +0 -0
  62. {arkparser-0.1.2 → arkparser-0.1.3}/arkparser.egg-info/top_level.txt +0 -0
  63. {arkparser-0.1.2 → arkparser-0.1.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arkparser
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Pure Python parser for ARK: Survival Evolved and ARK: Survival Ascended save files
5
5
  Author: Vertyco
6
6
  License-Expression: MIT
@@ -97,13 +97,13 @@ A pure-Python library for parsing ARK: Survival Evolved (ASE) and ARK: Survival
97
97
 
98
98
  ## Features
99
99
 
100
- - **Player Profiles** (`.arkprofile`) character name, level, stats, engrams
101
- - **Tribe Data** (`.arktribe`) members, ranks, logs, alliances
102
- - **Cloud Inventory / Obelisk** uploaded creatures, items, cryopod contents
103
- - **World Saves** (`.ark`) full map state: creatures, structures, items, players
104
- - **Dual Format** automatic ASE (v5-6) / ASA (v7+, SQLite) detection
105
- - **Export** ASV-compatible JSON export with GPS coordinate conversion
106
- - **Typed** full type annotations, `py.typed` marker
100
+ - **Player Profiles** (`.arkprofile`): character name, level, stats, engrams
101
+ - **Tribe Data** (`.arktribe`): members, ranks, logs, alliances
102
+ - **Cloud Inventory / Obelisk**: uploaded creatures, items, cryopod contents
103
+ - **World Saves** (`.ark`): full map state, including creatures, structures, items, and players
104
+ - **Dual Format**: automatic ASE (v5-6) / ASA (v7+, SQLite) detection
105
+ - **Export**: native JSON export with optional ASV-compatible naming and GPS coordinate conversion
106
+ - **Typed**: full type annotations, `py.typed` marker
107
107
 
108
108
  ## Installation
109
109
 
@@ -171,7 +171,7 @@ for item in inv.uploaded_items:
171
171
  ```python
172
172
  from arkparser import WorldSave
173
173
 
174
- # Works with both ASE (binary) and ASA (SQLite) auto-detected
174
+ # Works with both ASE (binary) and ASA (SQLite); auto-detected
175
175
  save = WorldSave.load("path/to/Extinction.ark") # ASE
176
176
  save = WorldSave.load("path/to/Extinction_WP.ark") # ASA
177
177
 
@@ -197,7 +197,7 @@ for obj in save.objects:
197
197
  print(f"{tamed.name} Lv{tamed.level}")
198
198
  ```
199
199
 
200
- ### JSON Export (ASV-compatible)
200
+ ### JSON Export
201
201
 
202
202
  ```python
203
203
  from arkparser import export_all
@@ -205,7 +205,7 @@ from arkparser.common import get_map_config
205
205
 
206
206
  map_config = get_map_config("extinction.ark")
207
207
  data = export_all(save, map_config)
208
- # Returns: {"ASV_Tamed": [...], "ASV_Wild": [...], "ASV_Players": [...], ...}
208
+ # Returns: {"tamed": [...], "wild": [...], "players": [...], ...}
209
209
  ```
210
210
 
211
211
  Or export to files:
@@ -214,6 +214,18 @@ Or export to files:
214
214
  from arkparser import export_to_files
215
215
 
216
216
  export_to_files(save, "output/", map_config)
217
+ # Creates: tamed.json, wild.json, players.json, etc.
218
+ ```
219
+
220
+ For compatibility with the original [ASV (Ark Save Visualizer)](https://github.com/miragedmuk/ASV) export naming:
221
+
222
+ ```python
223
+ from arkparser import export_all, export_to_files
224
+
225
+ data = export_all(save, map_config, naming="asv")
226
+ # Returns: {"ASV_Tamed": [...], "ASV_Wild": [...], "ASV_Players": [...], ...}
227
+
228
+ export_to_files(save, "output/", map_config, naming="asv")
217
229
  # Creates: ASV_Tamed.json, ASV_Wild.json, ASV_Players.json, etc.
218
230
  ```
219
231
 
@@ -242,7 +254,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
242
254
 
243
255
  #### Profile
244
256
 
245
- `arkparser.files.profile.Profile` Parser for `.arkprofile` player profile files.
257
+ `arkparser.files.profile.Profile`: Parser for `.arkprofile` player profile files.
246
258
 
247
259
  | Property | Type | Description |
248
260
  |---|---|---|
@@ -250,7 +262,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
250
262
  | `player_id` | `int \| None` | Unique player ID |
251
263
  | `unique_id` | `str \| None` | Platform ID (Steam/Xbox numeric ID) |
252
264
  | `tribe_id` | `int \| None` | Tribe ID (handles ASE `TribeId` / ASA `TribeID`) |
253
- | `tribe_name` | `str \| None` | Always `None` tribe name is not stored in profiles |
265
+ | `tribe_name` | `str \| None` | Always `None`; tribe name is not stored in profiles |
254
266
  | `level` | `int` | Current level (`ExtraCharacterLevel + 1`) |
255
267
  | `experience` | `float` | Total XP |
256
268
  | `total_engram_points` | `int` | Engram points spent |
@@ -268,7 +280,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
268
280
 
269
281
  #### Tribe (File Parser)
270
282
 
271
- `arkparser.files.tribe.Tribe` Parser for `.arktribe` tribe data files.
283
+ `arkparser.files.tribe.Tribe`: Parser for `.arktribe` tribe data files.
272
284
 
273
285
  | Property | Type | Description |
274
286
  |---|---|---|
@@ -292,7 +304,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
292
304
 
293
305
  #### CloudInventory
294
306
 
295
- `arkparser.files.cloud_inventory.CloudInventory` Parser for obelisk/cloud inventory files. Also available as `Obelisk`.
307
+ `arkparser.files.cloud_inventory.CloudInventory`: Parser for obelisk/cloud inventory files. Also available as `Obelisk`.
296
308
 
297
309
  | Property | Type | Description |
298
310
  |---|---|---|
@@ -312,7 +324,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
312
324
 
313
325
  #### WorldSave
314
326
 
315
- `arkparser.files.world_save.WorldSave` Unified parser for `.ark` world save files. Auto-detects ASE binary vs ASA SQLite.
327
+ `arkparser.files.world_save.WorldSave`: Unified parser for `.ark` world save files. Auto-detects ASE binary vs ASA SQLite.
316
328
 
317
329
  | Property | Type | Description |
318
330
  |---|---|---|
@@ -354,7 +366,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
354
366
 
355
367
  #### GameObject
356
368
 
357
- `arkparser.game_objects.game_object.GameObject` The fundamental entity in ARK saves representing creatures, items, structures, players, etc.
369
+ `arkparser.game_objects.game_object.GameObject`: The fundamental entity in ARK saves representing creatures, items, structures, players, etc.
358
370
 
359
371
  | Field | Type | Description |
360
372
  |---|---|---|
@@ -380,7 +392,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
380
392
 
381
393
  #### GameObjectContainer
382
394
 
383
- `arkparser.game_objects.container.GameObjectContainer` Relationship-aware container for game objects. Supports `len()`, iteration, and indexing.
395
+ `arkparser.game_objects.container.GameObjectContainer`: Relationship-aware container for game objects. Supports `len()`, iteration, and indexing.
384
396
 
385
397
  | Method | Returns | Description |
386
398
  |---|---|---|
@@ -403,7 +415,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
403
415
 
404
416
  #### LocationData
405
417
 
406
- `arkparser.game_objects.location.LocationData` 3D position and rotation.
418
+ `arkparser.game_objects.location.LocationData`: 3D position and rotation.
407
419
 
408
420
  | Field | Type | Description |
409
421
  |---|---|---|
@@ -428,7 +440,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
428
440
 
429
441
  #### TamedCreature
430
442
 
431
- `arkparser.models.creature.TamedCreature` Tamed creature with full stats, breeding, and ownership data.
443
+ `arkparser.models.creature.TamedCreature`: Tamed creature with full stats, breeding, and ownership data.
432
444
 
433
445
  | Property | Type | Description |
434
446
  |---|---|---|
@@ -470,7 +482,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
470
482
 
471
483
  #### WildCreature
472
484
 
473
- `arkparser.models.creature.WildCreature` Wild creature with level and stats.
485
+ `arkparser.models.creature.WildCreature`: Wild creature with level and stats.
474
486
 
475
487
  | Property | Type | Description |
476
488
  |---|---|---|
@@ -490,7 +502,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
490
502
 
491
503
  #### Player
492
504
 
493
- `arkparser.models.player.Player` In-world player entity built from profile data.
505
+ `arkparser.models.player.Player`: In-world player entity built from profile data.
494
506
 
495
507
  | Property | Type | Description |
496
508
  |---|---|---|
@@ -515,7 +527,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
515
527
 
516
528
  #### Character
517
529
 
518
- `arkparser.models.character.Character` Player character from the world save (`PlayerPawnTest_*` objects).
530
+ `arkparser.models.character.Character`: Player character from the world save (`PlayerPawnTest_*` objects).
519
531
 
520
532
  | Property | Type | Description |
521
533
  |---|---|---|
@@ -537,7 +549,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
537
549
 
538
550
  #### Structure
539
551
 
540
- `arkparser.models.structure.Structure` Placed structure with ownership and state.
552
+ `arkparser.models.structure.Structure`: Placed structure with ownership and state.
541
553
 
542
554
  | Property | Type | Description |
543
555
  |---|---|---|
@@ -560,7 +572,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
560
572
 
561
573
  #### Item
562
574
 
563
- `arkparser.models.item.Item` Inventory item with quality and stats.
575
+ `arkparser.models.item.Item`: Inventory item with quality and stats.
564
576
 
565
577
  | Property | Type | Description |
566
578
  |---|---|---|
@@ -583,7 +595,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
583
595
 
584
596
  #### TribeModel
585
597
 
586
- `arkparser.models.tribe.Tribe` Tribe data model (distinct from the file parser `arkparser.files.Tribe`). Imported as `TribeModel` from the top-level package.
598
+ `arkparser.models.tribe.Tribe`: Tribe data model (distinct from the file parser `arkparser.files.Tribe`). Imported as `TribeModel` from the top-level package.
587
599
 
588
600
  | Property | Type | Description |
589
601
  |---|---|---|
@@ -604,7 +616,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
604
616
 
605
617
  #### TribeMember
606
618
 
607
- `arkparser.models.tribe.TribeMember` Individual tribe member.
619
+ `arkparser.models.tribe.TribeMember`: Individual tribe member.
608
620
 
609
621
  | Field | Type | Description |
610
622
  |---|---|---|
@@ -614,7 +626,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
614
626
 
615
627
  #### TribeLogEntry
616
628
 
617
- `arkparser.models.tribe.TribeLogEntry` Parsed tribe log entry.
629
+ `arkparser.models.tribe.TribeLogEntry`: Parsed tribe log entry.
618
630
 
619
631
  | Field / Property | Type | Description |
620
632
  |---|---|---|
@@ -629,7 +641,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
629
641
 
630
642
  #### CreatureStats
631
643
 
632
- `arkparser.models.stats.CreatureStats` 12-stat named access for level-up points.
644
+ `arkparser.models.stats.CreatureStats`: 12-stat named access for level-up points.
633
645
 
634
646
  | Field | Type | Description |
635
647
  |---|---|---|
@@ -655,7 +667,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
655
667
 
656
668
  #### Location
657
669
 
658
- `arkparser.models.stats.Location` 3D position with optional GPS conversion.
670
+ `arkparser.models.stats.Location`: 3D position with optional GPS conversion.
659
671
 
660
672
  | Field | Type | Description |
661
673
  |---|---|---|
@@ -682,7 +694,7 @@ Lower-level data models for cloud inventory / obelisk data.
682
694
 
683
695
  #### UploadedCreature
684
696
 
685
- `arkparser.data_models.UploadedCreature` Uploaded creature from obelisk data.
697
+ `arkparser.data_models.UploadedCreature`: Uploaded creature from obelisk data.
686
698
 
687
699
  | Property | Type | Description |
688
700
  |---|---|---|
@@ -702,7 +714,7 @@ Lower-level data models for cloud inventory / obelisk data.
702
714
 
703
715
  #### UploadedItem
704
716
 
705
- `arkparser.data_models.UploadedItem` Uploaded item from obelisk data.
717
+ `arkparser.data_models.UploadedItem`: Uploaded item from obelisk data.
706
718
 
707
719
  | Property | Type | Description |
708
720
  |---|---|---|
@@ -723,7 +735,7 @@ Lower-level data models for cloud inventory / obelisk data.
723
735
 
724
736
  #### CryopodCreature
725
737
 
726
- `arkparser.data_models.CryopodCreature` Creature stored inside a cryopod.
738
+ `arkparser.data_models.CryopodCreature`: Creature stored inside a cryopod.
727
739
 
728
740
  | Property | Type | Description |
729
741
  |---|---|---|
@@ -746,7 +758,7 @@ Lower-level data models for cloud inventory / obelisk data.
746
758
 
747
759
  #### DinoStats
748
760
 
749
- `arkparser.data_models.DinoStats` Creature stat values (current and max).
761
+ `arkparser.data_models.DinoStats`: Creature stat values (current and max).
750
762
 
751
763
  | Field | Type | Description |
752
764
  |---|---|---|
@@ -770,7 +782,7 @@ Lower-level data models for cloud inventory / obelisk data.
770
782
 
771
783
  ### Export Functions
772
784
 
773
- `arkparser.export` ASV-compatible JSON export. All functions accept a `WorldSave` and optional `MapConfig` for GPS conversion.
785
+ `arkparser.export`: Native JSON export with optional ASV-compatible naming. All functions accept a `WorldSave` and optional `MapConfig` for GPS conversion.
774
786
 
775
787
  | Function | Returns | Description |
776
788
  |---|---|---|
@@ -787,7 +799,7 @@ Lower-level data models for cloud inventory / obelisk data.
787
799
 
788
800
  ### Map Config
789
801
 
790
- `arkparser.common.map_config` GPS coordinate conversion for ARK maps.
802
+ `arkparser.common.map_config`: GPS coordinate conversion for ARK maps.
791
803
 
792
804
  | Function | Returns | Description |
793
805
  |---|---|---|
@@ -801,7 +813,7 @@ Lower-level data models for cloud inventory / obelisk data.
801
813
 
802
814
  ### Version Detection
803
815
 
804
- `arkparser.common.version_detection` File format identification.
816
+ `arkparser.common.version_detection`: File format identification.
805
817
 
806
818
  | Function | Returns | Description |
807
819
  |---|---|---|
@@ -813,7 +825,7 @@ Lower-level data models for cloud inventory / obelisk data.
813
825
 
814
826
  ### Exceptions
815
827
 
816
- `arkparser.common.exceptions` All exceptions inherit from `ArkParseError`.
828
+ `arkparser.common.exceptions`: All exceptions inherit from `ArkParseError`.
817
829
 
818
830
  | Exception | Description |
819
831
  |---|---|
@@ -63,13 +63,13 @@ A pure-Python library for parsing ARK: Survival Evolved (ASE) and ARK: Survival
63
63
 
64
64
  ## Features
65
65
 
66
- - **Player Profiles** (`.arkprofile`) character name, level, stats, engrams
67
- - **Tribe Data** (`.arktribe`) members, ranks, logs, alliances
68
- - **Cloud Inventory / Obelisk** uploaded creatures, items, cryopod contents
69
- - **World Saves** (`.ark`) full map state: creatures, structures, items, players
70
- - **Dual Format** automatic ASE (v5-6) / ASA (v7+, SQLite) detection
71
- - **Export** ASV-compatible JSON export with GPS coordinate conversion
72
- - **Typed** full type annotations, `py.typed` marker
66
+ - **Player Profiles** (`.arkprofile`): character name, level, stats, engrams
67
+ - **Tribe Data** (`.arktribe`): members, ranks, logs, alliances
68
+ - **Cloud Inventory / Obelisk**: uploaded creatures, items, cryopod contents
69
+ - **World Saves** (`.ark`): full map state, including creatures, structures, items, and players
70
+ - **Dual Format**: automatic ASE (v5-6) / ASA (v7+, SQLite) detection
71
+ - **Export**: native JSON export with optional ASV-compatible naming and GPS coordinate conversion
72
+ - **Typed**: full type annotations, `py.typed` marker
73
73
 
74
74
  ## Installation
75
75
 
@@ -137,7 +137,7 @@ for item in inv.uploaded_items:
137
137
  ```python
138
138
  from arkparser import WorldSave
139
139
 
140
- # Works with both ASE (binary) and ASA (SQLite) auto-detected
140
+ # Works with both ASE (binary) and ASA (SQLite); auto-detected
141
141
  save = WorldSave.load("path/to/Extinction.ark") # ASE
142
142
  save = WorldSave.load("path/to/Extinction_WP.ark") # ASA
143
143
 
@@ -163,7 +163,7 @@ for obj in save.objects:
163
163
  print(f"{tamed.name} Lv{tamed.level}")
164
164
  ```
165
165
 
166
- ### JSON Export (ASV-compatible)
166
+ ### JSON Export
167
167
 
168
168
  ```python
169
169
  from arkparser import export_all
@@ -171,7 +171,7 @@ from arkparser.common import get_map_config
171
171
 
172
172
  map_config = get_map_config("extinction.ark")
173
173
  data = export_all(save, map_config)
174
- # Returns: {"ASV_Tamed": [...], "ASV_Wild": [...], "ASV_Players": [...], ...}
174
+ # Returns: {"tamed": [...], "wild": [...], "players": [...], ...}
175
175
  ```
176
176
 
177
177
  Or export to files:
@@ -180,6 +180,18 @@ Or export to files:
180
180
  from arkparser import export_to_files
181
181
 
182
182
  export_to_files(save, "output/", map_config)
183
+ # Creates: tamed.json, wild.json, players.json, etc.
184
+ ```
185
+
186
+ For compatibility with the original [ASV (Ark Save Visualizer)](https://github.com/miragedmuk/ASV) export naming:
187
+
188
+ ```python
189
+ from arkparser import export_all, export_to_files
190
+
191
+ data = export_all(save, map_config, naming="asv")
192
+ # Returns: {"ASV_Tamed": [...], "ASV_Wild": [...], "ASV_Players": [...], ...}
193
+
194
+ export_to_files(save, "output/", map_config, naming="asv")
183
195
  # Creates: ASV_Tamed.json, ASV_Wild.json, ASV_Players.json, etc.
184
196
  ```
185
197
 
@@ -208,7 +220,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
208
220
 
209
221
  #### Profile
210
222
 
211
- `arkparser.files.profile.Profile` Parser for `.arkprofile` player profile files.
223
+ `arkparser.files.profile.Profile`: Parser for `.arkprofile` player profile files.
212
224
 
213
225
  | Property | Type | Description |
214
226
  |---|---|---|
@@ -216,7 +228,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
216
228
  | `player_id` | `int \| None` | Unique player ID |
217
229
  | `unique_id` | `str \| None` | Platform ID (Steam/Xbox numeric ID) |
218
230
  | `tribe_id` | `int \| None` | Tribe ID (handles ASE `TribeId` / ASA `TribeID`) |
219
- | `tribe_name` | `str \| None` | Always `None` tribe name is not stored in profiles |
231
+ | `tribe_name` | `str \| None` | Always `None`; tribe name is not stored in profiles |
220
232
  | `level` | `int` | Current level (`ExtraCharacterLevel + 1`) |
221
233
  | `experience` | `float` | Total XP |
222
234
  | `total_engram_points` | `int` | Engram points spent |
@@ -234,7 +246,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
234
246
 
235
247
  #### Tribe (File Parser)
236
248
 
237
- `arkparser.files.tribe.Tribe` Parser for `.arktribe` tribe data files.
249
+ `arkparser.files.tribe.Tribe`: Parser for `.arktribe` tribe data files.
238
250
 
239
251
  | Property | Type | Description |
240
252
  |---|---|---|
@@ -258,7 +270,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
258
270
 
259
271
  #### CloudInventory
260
272
 
261
- `arkparser.files.cloud_inventory.CloudInventory` Parser for obelisk/cloud inventory files. Also available as `Obelisk`.
273
+ `arkparser.files.cloud_inventory.CloudInventory`: Parser for obelisk/cloud inventory files. Also available as `Obelisk`.
262
274
 
263
275
  | Property | Type | Description |
264
276
  |---|---|---|
@@ -278,7 +290,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
278
290
 
279
291
  #### WorldSave
280
292
 
281
- `arkparser.files.world_save.WorldSave` Unified parser for `.ark` world save files. Auto-detects ASE binary vs ASA SQLite.
293
+ `arkparser.files.world_save.WorldSave`: Unified parser for `.ark` world save files. Auto-detects ASE binary vs ASA SQLite.
282
294
 
283
295
  | Property | Type | Description |
284
296
  |---|---|---|
@@ -320,7 +332,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
320
332
 
321
333
  #### GameObject
322
334
 
323
- `arkparser.game_objects.game_object.GameObject` The fundamental entity in ARK saves representing creatures, items, structures, players, etc.
335
+ `arkparser.game_objects.game_object.GameObject`: The fundamental entity in ARK saves representing creatures, items, structures, players, etc.
324
336
 
325
337
  | Field | Type | Description |
326
338
  |---|---|---|
@@ -346,7 +358,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
346
358
 
347
359
  #### GameObjectContainer
348
360
 
349
- `arkparser.game_objects.container.GameObjectContainer` Relationship-aware container for game objects. Supports `len()`, iteration, and indexing.
361
+ `arkparser.game_objects.container.GameObjectContainer`: Relationship-aware container for game objects. Supports `len()`, iteration, and indexing.
350
362
 
351
363
  | Method | Returns | Description |
352
364
  |---|---|---|
@@ -369,7 +381,7 @@ All file parsers support `load(source)` which accepts `str`, `Path`, or `bytes`
369
381
 
370
382
  #### LocationData
371
383
 
372
- `arkparser.game_objects.location.LocationData` 3D position and rotation.
384
+ `arkparser.game_objects.location.LocationData`: 3D position and rotation.
373
385
 
374
386
  | Field | Type | Description |
375
387
  |---|---|---|
@@ -394,7 +406,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
394
406
 
395
407
  #### TamedCreature
396
408
 
397
- `arkparser.models.creature.TamedCreature` Tamed creature with full stats, breeding, and ownership data.
409
+ `arkparser.models.creature.TamedCreature`: Tamed creature with full stats, breeding, and ownership data.
398
410
 
399
411
  | Property | Type | Description |
400
412
  |---|---|---|
@@ -436,7 +448,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
436
448
 
437
449
  #### WildCreature
438
450
 
439
- `arkparser.models.creature.WildCreature` Wild creature with level and stats.
451
+ `arkparser.models.creature.WildCreature`: Wild creature with level and stats.
440
452
 
441
453
  | Property | Type | Description |
442
454
  |---|---|---|
@@ -456,7 +468,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
456
468
 
457
469
  #### Player
458
470
 
459
- `arkparser.models.player.Player` In-world player entity built from profile data.
471
+ `arkparser.models.player.Player`: In-world player entity built from profile data.
460
472
 
461
473
  | Property | Type | Description |
462
474
  |---|---|---|
@@ -481,7 +493,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
481
493
 
482
494
  #### Character
483
495
 
484
- `arkparser.models.character.Character` Player character from the world save (`PlayerPawnTest_*` objects).
496
+ `arkparser.models.character.Character`: Player character from the world save (`PlayerPawnTest_*` objects).
485
497
 
486
498
  | Property | Type | Description |
487
499
  |---|---|---|
@@ -503,7 +515,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
503
515
 
504
516
  #### Structure
505
517
 
506
- `arkparser.models.structure.Structure` Placed structure with ownership and state.
518
+ `arkparser.models.structure.Structure`: Placed structure with ownership and state.
507
519
 
508
520
  | Property | Type | Description |
509
521
  |---|---|---|
@@ -526,7 +538,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
526
538
 
527
539
  #### Item
528
540
 
529
- `arkparser.models.item.Item` Inventory item with quality and stats.
541
+ `arkparser.models.item.Item`: Inventory item with quality and stats.
530
542
 
531
543
  | Property | Type | Description |
532
544
  |---|---|---|
@@ -549,7 +561,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
549
561
 
550
562
  #### TribeModel
551
563
 
552
- `arkparser.models.tribe.Tribe` Tribe data model (distinct from the file parser `arkparser.files.Tribe`). Imported as `TribeModel` from the top-level package.
564
+ `arkparser.models.tribe.Tribe`: Tribe data model (distinct from the file parser `arkparser.files.Tribe`). Imported as `TribeModel` from the top-level package.
553
565
 
554
566
  | Property | Type | Description |
555
567
  |---|---|---|
@@ -570,7 +582,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
570
582
 
571
583
  #### TribeMember
572
584
 
573
- `arkparser.models.tribe.TribeMember` Individual tribe member.
585
+ `arkparser.models.tribe.TribeMember`: Individual tribe member.
574
586
 
575
587
  | Field | Type | Description |
576
588
  |---|---|---|
@@ -580,7 +592,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
580
592
 
581
593
  #### TribeLogEntry
582
594
 
583
- `arkparser.models.tribe.TribeLogEntry` Parsed tribe log entry.
595
+ `arkparser.models.tribe.TribeLogEntry`: Parsed tribe log entry.
584
596
 
585
597
  | Field / Property | Type | Description |
586
598
  |---|---|---|
@@ -595,7 +607,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
595
607
 
596
608
  #### CreatureStats
597
609
 
598
- `arkparser.models.stats.CreatureStats` 12-stat named access for level-up points.
610
+ `arkparser.models.stats.CreatureStats`: 12-stat named access for level-up points.
599
611
 
600
612
  | Field | Type | Description |
601
613
  |---|---|---|
@@ -621,7 +633,7 @@ High-level typed wrappers created from `GameObject` instances via `from_game_obj
621
633
 
622
634
  #### Location
623
635
 
624
- `arkparser.models.stats.Location` 3D position with optional GPS conversion.
636
+ `arkparser.models.stats.Location`: 3D position with optional GPS conversion.
625
637
 
626
638
  | Field | Type | Description |
627
639
  |---|---|---|
@@ -648,7 +660,7 @@ Lower-level data models for cloud inventory / obelisk data.
648
660
 
649
661
  #### UploadedCreature
650
662
 
651
- `arkparser.data_models.UploadedCreature` Uploaded creature from obelisk data.
663
+ `arkparser.data_models.UploadedCreature`: Uploaded creature from obelisk data.
652
664
 
653
665
  | Property | Type | Description |
654
666
  |---|---|---|
@@ -668,7 +680,7 @@ Lower-level data models for cloud inventory / obelisk data.
668
680
 
669
681
  #### UploadedItem
670
682
 
671
- `arkparser.data_models.UploadedItem` Uploaded item from obelisk data.
683
+ `arkparser.data_models.UploadedItem`: Uploaded item from obelisk data.
672
684
 
673
685
  | Property | Type | Description |
674
686
  |---|---|---|
@@ -689,7 +701,7 @@ Lower-level data models for cloud inventory / obelisk data.
689
701
 
690
702
  #### CryopodCreature
691
703
 
692
- `arkparser.data_models.CryopodCreature` Creature stored inside a cryopod.
704
+ `arkparser.data_models.CryopodCreature`: Creature stored inside a cryopod.
693
705
 
694
706
  | Property | Type | Description |
695
707
  |---|---|---|
@@ -712,7 +724,7 @@ Lower-level data models for cloud inventory / obelisk data.
712
724
 
713
725
  #### DinoStats
714
726
 
715
- `arkparser.data_models.DinoStats` Creature stat values (current and max).
727
+ `arkparser.data_models.DinoStats`: Creature stat values (current and max).
716
728
 
717
729
  | Field | Type | Description |
718
730
  |---|---|---|
@@ -736,7 +748,7 @@ Lower-level data models for cloud inventory / obelisk data.
736
748
 
737
749
  ### Export Functions
738
750
 
739
- `arkparser.export` ASV-compatible JSON export. All functions accept a `WorldSave` and optional `MapConfig` for GPS conversion.
751
+ `arkparser.export`: Native JSON export with optional ASV-compatible naming. All functions accept a `WorldSave` and optional `MapConfig` for GPS conversion.
740
752
 
741
753
  | Function | Returns | Description |
742
754
  |---|---|---|
@@ -753,7 +765,7 @@ Lower-level data models for cloud inventory / obelisk data.
753
765
 
754
766
  ### Map Config
755
767
 
756
- `arkparser.common.map_config` GPS coordinate conversion for ARK maps.
768
+ `arkparser.common.map_config`: GPS coordinate conversion for ARK maps.
757
769
 
758
770
  | Function | Returns | Description |
759
771
  |---|---|---|
@@ -767,7 +779,7 @@ Lower-level data models for cloud inventory / obelisk data.
767
779
 
768
780
  ### Version Detection
769
781
 
770
- `arkparser.common.version_detection` File format identification.
782
+ `arkparser.common.version_detection`: File format identification.
771
783
 
772
784
  | Function | Returns | Description |
773
785
  |---|---|---|
@@ -779,7 +791,7 @@ Lower-level data models for cloud inventory / obelisk data.
779
791
 
780
792
  ### Exceptions
781
793
 
782
- `arkparser.common.exceptions` All exceptions inherit from `ArkParseError`.
794
+ `arkparser.common.exceptions`: All exceptions inherit from `ArkParseError`.
783
795
 
784
796
  | Exception | Description |
785
797
  |---|---|
@@ -6,7 +6,7 @@ This package provides tools to parse various ARK save file formats:
6
6
  - Profile: Player profile data (.arkprofile)
7
7
  - Tribe: Tribe data (.arktribe)
8
8
  - CloudInventory: Obelisk/cloud inventory data (no extension)
9
- - WorldSave: World save data (.ark) auto-detects ASE binary and ASA SQLite
9
+ - WorldSave: World save data (.ark), auto-detects ASE binary and ASA SQLite
10
10
 
11
11
  Supports both ASE (ARK: Survival Evolved) and ASA (ARK: Survival Ascended)
12
12
  formats with automatic detection.
@@ -26,7 +26,7 @@ Example usage:
26
26
  >>> inv = CloudInventory.load("path/to/obelisk_file")
27
27
  >>> print(f"Creatures: {inv.creature_count}, Items: {inv.item_count}")
28
28
  >>>
29
- >>> # Load any world save ASE or ASA, auto-detected
29
+ >>> # Load any world save: ASE or ASA, auto-detected
30
30
  >>> save = WorldSave.load("path/to/TheIsland.ark") # ASE
31
31
  >>> save = WorldSave.load("path/to/Extinction_WP.ark") # ASA
32
32
  """