Maksim Totmin 71f35c53cb refactor: vendor iOpenPod core modules instead of pip dependency
Vendored 5 packages from iOpenPod (TheRealSavi/iOpenPod):
  iTunesDB_Writer/  — binary iTunesDB generation
  iTunesDB_Shared/  — field defs, constants, album identity
  SQLiteDB_Writer/  — SQLite databases for Nano 6G/7G
  iTunesDB_Parser/  — play stats reading from iPod
  ipod_device/      — device detection, FireWire ID, capabilities

Rationale: iOpenPod is a standalone iPod manager app, not a library.
Pulling it as a pip dependency is heavy and confusing for users.

Changes:
  + src/vendor/   — 77 .py files + calcHashAB.wasm (506 KB)
  ~ ipod_nano7_db.py  — _find_iop_root() now returns src/vendor/
  ~ requirements.txt   — iopenpod replaced with wasmtime + pycryptodome
  ~ .gitignore         — removed iOpenPod/ exclusion
  (setup.py reads requirements.txt automatically)
2026-06-02 09:16:19 +07:00

22 lines
707 B
Python

"""MHIA (Album Item) field definitions.
Declarative :class:`FieldDef` list for the MHIA chunk — an album
record inside an MHLA (album list).
"""
from .field_base import FieldDef, _u32, _u16, _u64
_S = "mhia"
MHIA_HEADER_SIZE: int = 88
MHIA_FIELDS: list[FieldDef] = [
_u32("child_count", 0x0C, section_type=_S),
_u32("album_id", 0x10, section_type=_S, required=True),
_u64("sql_id", 0x14, section_type=_S),
_u16("platform_flag", 0x1C, section_type=_S, default=2),
_u16("album_compilation_flag", 0x1E, section_type=_S),
# Representative track db_track_id — only populated by some iTunes versions
_u64("album_track_db_id", 0x20, section_type=_S, min_header_length=0x28),
]