mirror of
				https://github.com/NinjaCheetah/WiiPy.git
				synced 2025-10-30 23:26:19 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # "modules/title/info.py" from WiiPy by NinjaCheetah
 | |
| # https://github.com/NinjaCheetah/WiiPy
 | |
| 
 | |
| import pathlib
 | |
| import libWiiPy
 | |
| 
 | |
| 
 | |
| def _print_tmd_info(tmd: libWiiPy.title.TMD):
 | |
|     # Get all important keys from the TMD and print them out nicely.
 | |
|     print("Title Info")
 | |
|     print(f"  Title ID: {tmd.title_id}")
 | |
|     # This type of version number really only applies to the System Menu and IOS.
 | |
|     if tmd.title_id[:8] == "00000001":
 | |
|         print(f"  Title Version: {tmd.title_version} ({tmd.title_version_converted})")
 | |
|     else:
 | |
|         print(f"  Title Version: {tmd.title_version}")
 | |
|     if tmd.ios_tid == "0000000000000000":
 | |
|         print(f"  IOS Version: N/A")
 | |
|     else:
 | |
|         print(f"  Required IOS: IOS{int(tmd.ios_tid[-2:], 16)} ({tmd.ios_tid})")
 | |
|     print(f"  Region: {tmd.get_title_region()}")
 | |
|     print(f"  Title Type: {tmd.get_title_type()}")
 | |
|     print(f"  vWii Title: {bool(tmd.vwii)}")
 | |
|     print(f"  DVD Video Access: {tmd.get_access_right(tmd.AccessFlags.DVD_VIDEO)}")
 | |
|     print(f"  AHB Access: {tmd.get_access_right(tmd.AccessFlags.AHB)}")
 | |
|     print(f"  Fakesigned: {tmd.get_is_fakesigned()}")
 | |
|     # Iterate over the content and print their details.
 | |
|     print("\nContent Info")
 | |
|     print(f"Total Contents: {tmd.num_contents}")
 | |
|     for content in tmd.content_records:
 | |
|         print(f"  Content Index: {content.index}")
 | |
|         print(f"    Content ID: " + f"{content.content_id:08X}".lower())
 | |
|         print(f"    Content Type: {tmd.get_content_type(content.index)}")
 | |
|         print(f"    Content Size: {content.content_size} bytes")
 | |
|         print(f"    Content Hash: {content.content_hash.decode()}")
 | |
| 
 | |
| 
 | |
| def handle_info(args):
 | |
|     input_path = pathlib.Path(args.input)
 | |
| 
 | |
|     if not input_path.exists():
 | |
|         raise FileNotFoundError(input_path)
 | |
| 
 | |
|     if input_path.suffix.lower() == ".tmd":
 | |
|         tmd = libWiiPy.title.TMD()
 | |
|         tmd.load(open(input_path, "rb").read())
 | |
|         _print_tmd_info(tmd)
 | |
|     #elif input_path.suffix.lower() == ".tik":
 | |
|     #    tik = libWiiPy.title.Ticket()
 | |
|     #    tik.load(open(input_path, "rb").read())
 | |
|     #elif input_path.suffix.lower() == ".wad":
 | |
|     #    title = libWiiPy.title.Title()
 | |
|     #    title.load_wad(open(input_path, "rb").read())
 | |
|     else:
 | |
|         raise TypeError("This does not appear to be a TMD, Ticket, or WAD! No info can be provided.")
 |