Skip to content

Examples

Loading a Database

from pathlib import Path
from mii import MiiDatabase, MiiType

database = MiiDatabase(Path("RFL_DB.dat"), MiiType.WII_PLAZA)
print(f"Loaded {len(database)} Miis")

Working with Mii Objects

mii = database[0]

print(f"Mii Name: {mii.name}")
print(f"Creator: {mii.creator_name}")
print(f"Gender: {mii.get_gender_string()}")
print(f"Birthday: {mii.get_birthday_string()}")
print(f"Favorite Color: {mii.favorite_color}")
print(f"Mii ID: {mii.get_mii_id_hex()}")

Iterating and Filtering

# Iterate over all Miis
for mii in database:
    print(f"{mii.name} by {mii.creator_name}")

# Get favorite Miis
favorites = database.get_favorites()

# Filter by color
red_miis = database.filter(lambda m: m.favorite_color == "Red")

# Filter by name
named_miis = database.filter(lambda m: m.name and m.name != "Unnamed")

# Find by name
mii = database.get_by_name("My Mii")

Parsing Individual Files

from mii import MiiParser

with open("WII_PL00000.mii", "rb") as f:
    mii_data = f.read()

mii = MiiParser.parse(mii_data)
print(mii.name)
print(mii.get_creation_datetime())

Exporting Miis

from pathlib import Path

# Export all Miis to a directory
output_dir = Path("./extracted_miis")
exported_paths = database.export_all(output_dir)

# Export a single Mii
mii.export(Path("./my_mii.mii"))

Working with Multiple Database Types

from mii import MiiDatabase, MiiType

databases = {}
for mii_type in MiiType:
    try:
        db = MiiDatabase(Path(mii_type.SOURCE), mii_type)
        databases[mii_type.display_name] = db
        print(f"{mii_type.display_name}: {len(db)} Miis")
    except MiiDatabaseError:
        print(f"{mii_type.display_name}: Not found")

Error Handling

from mii import MiiDatabase, MiiDatabaseError, MiiType

try:
    database = MiiDatabase(Path("nonexistent.dat"), MiiType.WII_PLAZA)
except MiiDatabaseError as e:
    print(f"Error: {e}")

Accessing Creation Timestamps

mii = database[0]
creation_time = mii.get_creation_datetime()
print(f"Created: {creation_time.strftime('%Y-%m-%d %H:%M:%S')}")

For more detailed examples, see the complete examples file.