Improve history and achievement export guidance

This commit is contained in:
Golumpa 2026-08-19 11:37:46 +01:00
parent 569299dbdd
commit 35918f24f1
2 changed files with 40 additions and 32 deletions

View file

@ -62,7 +62,7 @@ def print_banner() -> None:
print() print()
print(rule("=")) print(rule("="))
print(style(f" NTE History Exporter v{EXPORTER_VERSION}", BOLD, CYAN)) print(style(f" NTE History Exporter v{EXPORTER_VERSION}", BOLD, CYAN))
print(style(f" {GAME_NAME} pull history -> tracker JSON", DIM)) print(style(f" {GAME_NAME} history and achievements -> JSON", DIM))
print(style(f" {REPOSITORY_URL}", DIM)) print(style(f" {REPOSITORY_URL}", DIM))
heart = "❤️" if (getattr(sys.stdout, "encoding", None) or "").lower().replace("-", "") == "utf8" else "<3" heart = "❤️" if (getattr(sys.stdout, "encoding", None) or "").lower().replace("-", "") == "utf8" else "<3"
print(style(" Created with ", DIM) + style(heart, RED) + style(" by Golumpa", DIM)) print(style(" Created with ", DIM) + style(heart, RED) + style(" by Golumpa", DIM))
@ -75,27 +75,29 @@ def print_live_instructions(local_ip: str, backend: str = "windows_raw", detail:
backend_detail = f" ({detail})" if detail and detail != local_ip else "" backend_detail = f" ({detail})" if detail and detail != local_ip else ""
print(style(f" Capture backend: {backend}{backend_detail}", DIM)) print(style(f" Capture backend: {backend}{backend_detail}", DIM))
print() print()
print(style(" How to export your pull history", BOLD)) print(style(" Before you begin", BOLD))
print(" 1. For automatic user UID detection, start this tool") print(" Start this exporter before pressing Start on the game's")
print(" before pressing Start on the game's main menu.") print(" main menu. This lets it capture your achievements and")
print(" Already in game? You can still capture history;") print(" detect your account UID and server automatically.")
print(" the tool will ask for your UID if it cannot detect it.")
print(" 2. Open a supported history screen:")
print(style(" Monopoly > Standard Board history", CYAN))
print(style(" Monopoly > Limited Character Board history", CYAN))
print(style(" Gashapon > Arc Miracle Box history", CYAN))
print(style(" Gashapon > Mystery Box history", CYAN))
print(" 3. Start at page 1 and scroll down through every page")
print(" you want exported.")
print(" 4. Scroll one page past where you plan to stop so the")
print(" last pull group can be confirmed as complete.")
print(" 5. You can open several boards in the same session.")
print() print()
print(style(" Achievement export", BOLD)) print(" Already in game? Pull history still works, but achievement")
print(" Start the exporter before launching the game. Achievements") print(" capture requires restarting the game. Missing account details")
print(" loaded at login are captured automatically.") print(" will be requested when your exports are saved.")
print() print()
print(style(" Waiting for history pages... press any key here when done.", BOLD, GREEN)) print(style(" Pull history", BOLD))
print(" Open a supported history screen, start at page 1, then")
print(" scroll through every page you want to export. Go one page")
print(" further so the exporter can confirm the final pull group.")
print()
print(style(" Monopoly:", DIM) + " Standard Board or Limited Character Board")
print(style(" Gashapon:", DIM) + " Arc Miracle Box or Mystery Box")
print(style(" You can capture more than one board in the same session.", DIM))
print()
print(style(" Achievements", BOLD))
print(" Your completed achievements are captured automatically when")
print(" you log in after following the step above.")
print()
print(style(" Ready - use the game, then press any key here when finished.", BOLD, GREEN))
print(rule()) print(rule())

View file

@ -154,13 +154,6 @@ def run_live_capture(
stats = capture.stats() stats = capture.stats()
capture.close() capture.close()
if stats:
console.print_capture_stats(
stats.received,
stats.dropped,
stats.interface_dropped,
)
exports = [] exports = []
achievement_path = None achievement_path = None
if achievement_ids: if achievement_ids:
@ -168,7 +161,6 @@ def run_live_capture(
achievement_path.write_text( achievement_path.write_text(
json.dumps(achievement_ids, ensure_ascii=False) + "\n", encoding="utf-8" json.dumps(achievement_ids, ensure_ascii=False) + "\n", encoding="utf-8"
) )
console.print_note(f"Achievement list written: {achievement_path}")
diagnostics_path = None diagnostics_path = None
if write_debug_csv: if write_debug_csv:
diagnostics_path = new_diagnostics_path() diagnostics_path = new_diagnostics_path()
@ -214,14 +206,25 @@ def run_live_capture(
) )
console.print_results_header() console.print_results_header()
if stats:
console.print_capture_stats(
stats.received,
stats.dropped,
stats.interface_dropped,
)
if stats:
print()
if not exports: if not exports:
if achievement_path is not None: if achievement_path is not None:
console.print_note("No pull-history pages were captured.") console.print_success("Achievement export complete.")
console.print_note("No pull history was captured (this is fine if you only wanted achievements).")
print()
console.print_note(f"Export written: {achievement_path}")
else: else:
console.print_problem("No history pages were captured.") console.print_problem("No history pages were captured.")
console.print_note("Make sure the capture backend is running, then reopen the") console.print_note("Reopen a supported history screen and scroll from page 1.")
console.print_note("history screen and scroll from page 1. If no page messages") console.print_note("If no page messages appear, return to the main menu and re-enter the game.")
console.print_note("appear, return to the main menu and re-enter the game.")
if diagnostics_path is not None: if diagnostics_path is not None:
console.print_note(f"Diagnostics written: {diagnostics_path}") console.print_note(f"Diagnostics written: {diagnostics_path}")
return { return {
@ -246,6 +249,9 @@ def run_live_capture(
if item["csv_path"] is not None: if item["csv_path"] is not None:
console.print_note(f"CSV written: {item['csv_path']}") console.print_note(f"CSV written: {item['csv_path']}")
console.print_note(f"Export written: {item['json_path']}") console.print_note(f"Export written: {item['json_path']}")
if achievement_path is not None:
print()
console.print_note(f"Export written: {achievement_path}")
if diagnostics_path is not None: if diagnostics_path is not None:
console.print_note(f"Diagnostics written: {diagnostics_path}") console.print_note(f"Diagnostics written: {diagnostics_path}")