Skip to content

TheRealSavi/iOpenPod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

258 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iOpenPod

A desktop iPod manager for Windows, macOS, and Linux.

License: MIT Platform: Win | Mac | Linux GitHub Release Discord ko-fi

iOpenPod is a free, open-source desktop application for managing iPods without iTunes. It can browse and edit an iPod library, sync media from the PC, convert unsupported audio and video formats automatically, manage podcasts and playlists, write artwork and photos, and is built to preserve iPod-specific database behaviors.

Album Browser

Screenshots

Sync Setup Sync Review Track Editing
Media folder selection Sync review Track metadata and artwork editor
Track playback options editor Podcast manager Smart playlist editor
Backup browser Transcoding settings Light mode library view

Download

Download the latest release for your platform. Native builds do not require a separate Python installation. PyPI installs are recommended over native builds while native packaging is still being hardened.

Install from PyPI (Recommended)

iOpenPod is available as a Python package to download through pip, pipx, and uv tool.

Method Install Run Upgrade
pip python -m pip install iopenpod iopenpod python -m pip install --upgrade iopenpod
pipx pipx install iopenpod iopenpod pipx upgrade iopenpod
uv tool uv tool install iopenpod iopenpod uv tool upgrade iopenpod

Requires Python 3.11+.

After installing invoke in your shell with:

iopenpod

If iopenpod is not on your shell PATH yet, run pipx ensurepath for pipx installs or uv tool update-shell for uv tool installs.

Installs should be updated with the same tool used to install them.

Required tools: Install FFmpeg with ffprobe for transcoding and media probing, and Chromaprint for acoustic fingerprinting during sync.


How to Use

  1. Connect your iPod - Make sure it is mounted as a drive.
  2. Select the device - Choose the detected iPod in iOpenPod. If the device is detected incorrectly, please open an issue.
  3. Browse and edit - Manage tracks, playlists, podcasts, artwork, and metadata.
  4. Sync - Choose PC media folder(s), configure the sync, review the proposed changes, then apply.

Features

Format Conversion

iOpenPod transcodes unsupported audio and video formats to iPod-compatible output using FFmpeg. ffprobe is needed to detect incompatible formats. Converted files are optionally cached so repeat syncs do not need to re-encode unchanged media.

Podcasts

The built-in podcast manager can search, subscribe, download episodes, and sync them to an iPod.

Scrobbling

ListenBrainz and Last.FM scrobbling can submit play history during sync.

Media Types

Supports music, audiobooks, podcasts, videos, and photos.

Drag and Drop

Files can be copied directly to the iPod by dragging them into the app, without using the full PC-folder sync workflow.

Play Counts and Ratings

Play counts, ratings, and skip counts can be read from the iPod and synced back to the PC library metadata where supported.

Artwork

Embedded or folder artwork is extracted, resized, and written to the iPod artwork database.

Sync Review

Before writing changes, iOpenPod presents a review of planned additions, removals, metadata updates, and artwork changes.

Playlists and Smart Playlists

Standard playlists and rule-based smart playlists can be browsed and managed.

Backup and Rollback

iOpenPod saves a database snapshot before sync so earlier states can be restored if needed.

Settings

Settings are available for transcoding, sync behavior, external tools, device handling, and related workflows.


Supported iPods

iOpenPod supports most iPods. iPod Shuffle support is planned; iPod Touch support is not planned, but may be possible in the future.

Device Status Notes
iPod "Classic" (all generations 1st-7th) Supported
iPod Mini (all generations 1st and 2nd) Supported
iPod Nano (all generations 1st-7th) Supported
iPod Shuffle Planned Shuffle uses a different DB Structure. ETA ~4 mo
iPod Touch Not planned Touch requires accessing the device through non file-system protocols

For Contributing Developers

To run iOpenPod from source, clone the repository and use uv sync.

Prerequisites

  • uv (Python package manager)
  • FFmpeg with ffprobe (for transcoding and media probing)
  • Chromaprint (for fingerprinting)

Setup

git clone https://github.com/TheRealSavi/iOpenPod.git
cd iOpenPod
uv sync
uv run python main.py

uv sync installs dependencies into a local virtual environment.

Project Layout

iOpenPod/
├── GUI/                    # PyQt6 interface
│   ├── app.py              # Main window
│   └── widgets/            # Album grid, track list, sidebar, sync review, etc.
├── iTunesDB_Parser/        # Reads iPod's binary iTunesDB
├── iTunesDB_Writer/        # Writes iTunesDB
├── ArtworkDB_Parser/       # Reads ArtworkDB binary format
├── ArtworkDB_Writer/       # Writes album art to .ithmb files
├── SyncEngine/             # Fingerprinting, diffing, transcoding, sync execution
├── PodcastManager/         # Podcast search, subscription, and download
├── SQLiteDB_Writer/        # SQLite DB for Nano 6G/7G
└── main.py                 # Entry point

How Sync Works

The sync engine matches tracks between the PC library and iPod using acoustic fingerprints from Chromaprint. This allows the same recording to be matched across re-encodes, format changes, and metadata edits.

  1. Scan both the PC media folder and iPod's iTunesDB
  2. Compute or read cached fingerprints for each track
  3. Diff by fingerprint to classify: new, removed, changed, or matched
  4. Present the sync plan for review
  5. Copy/transcode files, update the database, sync artwork and play counts
  6. Rebuild the iTunesDB binary with the correct device-specific checksum

Contributing

Useful contributions include:

  • Hardware testing on different iPod models
  • macOS and Linux testing
  • Bug reports with steps to reproduce and logs
  • Focused pull requests for documented issues
  • Joining the discord to coordinate

Please open an issue before starting major changes, or use the Discord server to discuss implementation details.

Related Projects

  • libgpod — C library for iPod database access (the reference implementation this project learned from)
  • gtkpod — GTK+ iPod manager
  • Rockbox — Open-source firmware replacement for iPods

Support

iOpenPod is free and open source. Donations are optional and help support development.

ko-fi

License

MIT — see LICENSE.

Contributors

Languages