85 lines
2.9 KiB
Markdown
85 lines
2.9 KiB
Markdown
# neo-pod-desktop
|
|
|
|
Desktop application for converting, managing and transferring music to iPod Nano 7G. Includes format conversion, metadata management, local library with playback, cover art pipeline, and full iTunesDB/ArtworkDB generation.
|
|
|
|
## Features
|
|
|
|
- **Convert** to iPod-compatible formats (AAC/M4A, MP3) with `-map 0:t?` cover preservation
|
|
- **Metadata** handling -- title, artist, album, track number, genre, embedded cover art
|
|
- **Cover art pipeline** -- extract from audio files (APIC/covr/FLAC pictures), encode to iPod Nano 7G formats (RGB565), write ArtworkDB + ithmb
|
|
- **iTunes-style player** -- play local library with cover art display (60x60), seek, volume
|
|
- **iPod Nano 7G database** -- full iTunesCDB sync, SQLite management, Locations.itdb with HASHAB checksums
|
|
- **Library management** -- sortable table, source/ready track separation, bulk transfer
|
|
- **Portable AppImage** -- `scripts/build-appimage.sh` builds standalone x86_64 AppImage
|
|
- **Config** stored in `~/.config/neo-pod-desktop/config.ini`
|
|
|
|
## Installation
|
|
|
|
### Dependencies
|
|
|
|
- Python 3.14+
|
|
- FFmpeg (for audio conversion)
|
|
- libusb (for USB device access on Linux)
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
Install FFmpeg:
|
|
- **macOS**: `brew install ffmpeg`
|
|
- **Linux**: `sudo apt-get install ffmpeg`
|
|
- **Windows**: Download from [ffmpeg.org](https://ffmpeg.org/download.html)
|
|
|
|
## Usage
|
|
|
|
### GUI Application
|
|
|
|
```bash
|
|
python src/main.py
|
|
```
|
|
|
|
### AppImage (portable)
|
|
|
|
```bash
|
|
./neo-pod-desktop-x86_64.AppImage
|
|
```
|
|
|
|
Build from source:
|
|
|
|
```bash
|
|
./scripts/build-appimage.sh
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
src/
|
|
main.py -- GUI application (PyQt6)
|
|
track_info.py -- TrackInfo data class
|
|
audio_converter.py -- FFmpeg audio conversion
|
|
metadata_handler.py -- ID3/MP4 tag reading and writing
|
|
metadata_editor.py -- GUI metadata editing widget
|
|
config_loader.py -- Config in ~/.config/
|
|
ipod_device.py -- iPod device detection and file management
|
|
ipod_nano7_db.py -- Nano 7G SQLite + iTunesCDB + ArtworkDB
|
|
ipod_mhbd_writer.py -- Binary iTunesDB writer
|
|
hashab.py -- HASHAB checksum generation
|
|
hotkeys.py -- Global keyboard shortcut management
|
|
library_cache.py -- Local library caching
|
|
artwork/
|
|
__init__.py -- Public API
|
|
presets.py -- 50+ iPod artwork format definitions
|
|
types.py -- ArtworkEntry, EncodedFormatPayload, IthmbLocation
|
|
codecs.py -- RGB565/RGB555/UYVY/JPEG encode/decode (numpy)
|
|
extractor.py -- Cover extraction from audio files (mutagen)
|
|
chunks.py -- ArtworkDB binary parser/writer (MHFD->MHII->MHNI)
|
|
writer.py -- ithmb file + ArtworkDB writing
|
|
cache.py -- Local JPEG cover cache for player UI
|
|
scripts/
|
|
build-appimage.sh -- AppImage builder (PyInstaller + appimagetool)
|
|
```
|
|
|
|
## License
|
|
|
|
MIT License
|