8 Commits

Author SHA1 Message Date
Maksim Totmin
11c40c8a99 Fix Nano 7 database: duration samples, HASHAB cbk, duplicate detection, Locations.itdb
- Fix avformat_info duration: store in SAMPLES not ms (firmware uses this to
  determine playback length; wrong units caused tracks to stop at ~3-11 seconds)
- Add Locations.itdb insert/delete for each track (ipod_path mapping)
- Add sync_locations_cbk() with HASHAB signing via WASM module
- Detect FirewireGuid from SysInfo for cbk header signature
- Add duplicate detection in add_track (title+artist match, skip if exists)
- Add get_orphaned_files() and delete_orphaned_files() for cleanup
- Sync cbk after every add/delete operation
2026-05-31 14:39:04 +07:00
Maksim Totmin
4ee62764ca Add HASHAB signing support for iPod Nano 6G/7G
- Add hashab.py module using WASM calcHashAB (from dstaley/hashab)
- Bundle calcHashAB.wasm binary
- Implements 57-byte HASHAB signature for Locations.itdb.cbk
- Required by Nano 6G/7G firmware to accept SQLite databases
2026-05-31 14:38:55 +07:00
Maksim Totmin
381bf106ed Fix audio conversion: replace ffmpeg-python with subprocess, add AAC-LC profile and faststart
- Replace ffmpeg-python with subprocess.run + timeout (prevents hangs)
- Add -ar 44100 -ac 2 for iPod Nano 7 compatibility
- Add -profile:a aac_low and -movflags +faststart (moov atom at start)
- Add -map 0:a to skip embedded cover art streams in FLAC files
- Validate output file size, reject empty/corrupt conversions
2026-05-31 14:38:48 +07:00
Maksim Totmin
47bfdf0011 Add track management: view and delete tracks on iPod from Transfer tab
- Add get_all_tracks() to load all tracks with file paths via tag matching
- Add delete_track() to remove tracks from SQLite DB and delete physical files
- Add _cleanup_orphaned_entries() to remove orphaned artist/album records
- Add track count label and 'Remove Selected' button to Transfer tab
- Load existing tracks on device detection
- Confirmation dialog before deleting tracks
- Reload track list after successful transfer
2026-05-31 12:37:13 +07:00
Maksim Totmin
1b4c092a04 Add metadata extraction from local audio files for proper tag preservation
- Add extract_tags() to metadata_handler.py: reads tags from FLAC, MP3, OGG, M4A
- Support ID3v2 (MP3), Vorbis comments (FLAC/OGG), MP4 tags (M4A)
- Extract cover art from METADATA_BLOCK_PICTURE (FLAC), APIC (MP3), covr (M4A)
- Update _run_convert to use extract_tags instead of guessing from filename
- Fix tag reading in ipod_nano7_db.get_audio_info() using EasyID3 for MP3
2026-05-31 12:26:53 +07:00
Maksim Totmin
761f896ea8 Add iPod Nano 7 SQLite database support for proper track transfer
- Create ipod_nano7_db.py module for Nano 7 SQLite DB management (Library.itdb)
- Fix case-insensitive iPod label detection in device detection
- Add /run/media to mount point search paths for Arch Linux
- Support already-mounted devices without requiring ifuse
- Add local file selection in Convert tab (FLAC, WAV, OGG, etc.)
- Transfer now properly registers tracks in iPod database so they appear in UI
2026-05-31 12:07:17 +07:00
Antonio Lorusso
436898987b
update gitignore 2025-03-12 01:18:07 +01:00
Antonio Lorusso
9dcb1228ca initial app 2025-03-12 01:01:43 +01:00