diff --git a/commands/title/info.py b/commands/title/info.py index 5957554..1005761 100644 --- a/commands/title/info.py +++ b/commands/title/info.py @@ -128,6 +128,13 @@ def _print_ticket_info(ticket: libWiiPy.title.Ticket): def _print_wad_info(title: libWiiPy.title.Title): print(f"WAD Info") + channel_title = "" + try: + channel_title = title.get_channel_name() + except ValueError: + pass + if channel_title: + print(f" Channel Name: {channel_title}") match title.wad.wad_type: case "Is": print(f" WAD Type: Standard Installable") diff --git a/commands/title/tmd.py b/commands/title/tmd.py index d13af22..acfc484 100644 --- a/commands/title/tmd.py +++ b/commands/title/tmd.py @@ -4,7 +4,7 @@ import pathlib import libWiiPy from modules.core import fatal_error -from modules.title import tmd_edit_ios, tmd_edit_tid, tmd_edit_type +from modules.title import title_edit_ios, title_edit_tid, title_edit_type def handle_tmd_edit(args): @@ -21,13 +21,16 @@ def handle_tmd_edit(args): edits_made = False # Go over every possible change, and apply them if they were specified. if args.tid is not None: - tmd = tmd_edit_tid(tmd, args.tid) + new_tid = title_edit_tid(tmd.title_id, args.tid) + tmd.set_title_id(new_tid) edits_made = True if args.ios is not None: - tmd = tmd_edit_ios(tmd, args.ios) + new_ios_tid = title_edit_ios(args.ios) + tmd.ios_tid = new_ios_tid edits_made = True if args.type is not None: - tmd = tmd_edit_type(tmd, args.type) + new_tid = title_edit_type(tmd.title_id, args.type) + tmd.set_title_id(new_tid) edits_made = True if not edits_made: diff --git a/commands/title/wad.py b/commands/title/wad.py index 528b62b..16f0614 100644 --- a/commands/title/wad.py +++ b/commands/title/wad.py @@ -5,7 +5,7 @@ import pathlib from random import randint import libWiiPy from modules.core import fatal_error -from modules.title import tmd_edit_ios, tmd_edit_tid, tmd_edit_type +from modules.title import title_edit_ios, title_edit_tid, title_edit_type def handle_wad_add(args): @@ -151,13 +151,17 @@ def handle_wad_edit(args): edits_made = False # Go over every possible change, and apply them if they were specified. if args.tid is not None: - title.tmd = tmd_edit_tid(title.tmd, args.tid) + new_tid = title_edit_tid(title.tmd.title_id, args.tid) + title.set_title_id(new_tid) edits_made = True if args.ios is not None: - title.tmd = tmd_edit_ios(title.tmd, args.ios) + new_ios_tid = title_edit_ios(args.ios) + title.tmd.ios_tid = new_ios_tid edits_made = True if args.type is not None: - title.tmd = tmd_edit_type(title.tmd, args.type) + print(title.tmd.title_id) + new_tid = title_edit_type(title.tmd.title_id, args.type) + title.set_title_id(new_tid) edits_made = True if not edits_made: diff --git a/modules/title.py b/modules/title.py index 8c1281e..7db35ce 100644 --- a/modules/title.py +++ b/modules/title.py @@ -2,11 +2,10 @@ # https://github.com/NinjaCheetah/WiiPy import binascii -import libWiiPy from modules.core import fatal_error -def tmd_edit_ios(tmd: libWiiPy.title.TMD, new_ios: str) -> libWiiPy.title.TMD: +def title_edit_ios(new_ios: str) -> str: # Setting a new required IOS. try: new_ios = int(new_ios) @@ -15,24 +14,22 @@ def tmd_edit_ios(tmd: libWiiPy.title.TMD, new_ios: str) -> libWiiPy.title.TMD: if new_ios < 3 or new_ios > 255: fatal_error("The specified IOS is not valid! The new IOS version should be between 3 and 255.") new_ios_tid = f"00000001{new_ios:08X}" - tmd.ios_tid = new_ios_tid - return tmd + return new_ios_tid -def tmd_edit_tid(tmd: libWiiPy.title.TMD, new_tid: str) -> libWiiPy.title.TMD: +def title_edit_tid(tid: str, new_tid: str) -> str: # Setting a new TID, only changing TID low since this expects a 4 character ASCII input. if len(new_tid) != 4: fatal_error(f"The specified Title ID is not valid! The new Title ID should be 4 characters long.") if not new_tid.isalnum(): fatal_error(f"The specified Title ID is not valid! The new Title ID should be alphanumeric.") # Get the current TID high, because we want to preserve the title type while only changing the TID low. - tid_high = tmd.title_id[:8] + tid_high = tid[:8] new_tid = f"{tid_high}{str(binascii.hexlify(new_tid.encode()), 'ascii')}" - tmd.set_title_id(new_tid) - return tmd + return new_tid -def tmd_edit_type(tmd: libWiiPy.title.TMD, new_type: str) -> libWiiPy.title.TMD: +def title_edit_type(tid: str, new_type: str) -> str: # Setting a new title type. new_tid_high = None match new_type: @@ -51,7 +48,6 @@ def tmd_edit_type(tmd: libWiiPy.title.TMD, new_type: str) -> libWiiPy.title.TMD: case _: fatal_error("The specified type is not valid! The new type must be one of: System, Channel, " "SystemChannel, GameChannel, DLC, HiddenChannel.") - tid_low = tmd.title_id[8:] + tid_low = tid[8:] new_tid = f"{new_tid_high}{tid_low}" - tmd.set_title_id(new_tid) - return tmd + return new_tid