{"id":46754221,"url":"https://github.com/therealsavi/iopenpod","last_synced_at":"2026-04-18T09:05:58.783Z","repository":{"id":280096308,"uuid":"940915913","full_name":"TheRealSavi/iOpenPod","owner":"TheRealSavi","description":"Open source iPod sync tool - manage your iPod without iTunes","archived":false,"fork":false,"pushed_at":"2026-04-15T11:01:29.000Z","size":28879,"stargazers_count":112,"open_issues_count":7,"forks_count":15,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-15T13:06:54.169Z","etag":null,"topics":["ipod","ipod-classic","ipod-manager","itunes","itunes-alternative","itunesdb","music-sync","python"],"latest_commit_sha":null,"homepage":"https://therealsavi.github.io/iOpenPod/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheRealSavi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-01T03:43:32.000Z","updated_at":"2026-04-15T11:01:33.000Z","dependencies_parsed_at":"2026-04-15T13:03:10.348Z","dependency_job_id":null,"html_url":"https://github.com/TheRealSavi/iOpenPod","commit_stats":null,"previous_names":["therealsavi/iopenpod"],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/TheRealSavi/iOpenPod","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRealSavi%2FiOpenPod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRealSavi%2FiOpenPod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRealSavi%2FiOpenPod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRealSavi%2FiOpenPod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheRealSavi","download_url":"https://codeload.github.com/TheRealSavi/iOpenPod/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRealSavi%2FiOpenPod/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31962892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ipod","ipod-classic","ipod-manager","itunes","itunes-alternative","itunesdb","music-sync","python"],"created_at":"2026-03-09T21:23:48.503Z","updated_at":"2026-04-18T09:05:58.777Z","avatar_url":"https://github.com/TheRealSavi.png","language":"Python","funding_links":["https://ko-fi.com/johngibbons"],"categories":[],"sub_categories":[],"readme":"# iOpenPod\n\n**Ditch iTunes. Sync your iPod the open way.**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Platform: Win | Mac | Linux](https://img.shields.io/badge/Platform-Win%20%7C%20Mac%20%7C%20Linux-lightgrey.svg)](#download)\n[![GitHub Release](https://img.shields.io/github/v/release/TheRealSavi/iOpenPod)](https://github.com/TheRealSavi/iOpenPod/releases/latest)\n[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord\u0026logoColor=white)](https://discord.gg/9Yy499Tf5d)\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/johngibbons)\n\niOpenPod is a free, open-source desktop app that lets you manage your iPod without iTunes. Plug in your iPod, and sync. FLAC, OGG, MP3, any file format, it automatically handles the conversion. Access to all the features your iPod makes possible. Works on Windows, macOS, and Linux.\n\n![Album Browser](assets/screenshots/hero.png)\n\n---\n\n## Download\n\nGrab the latest release for your platform. No Python required, no setup wizards, just download, extract, and run:\n\n### ➡️ [Download iOpenPod here](https://github.com/TheRealSavi/iOpenPod/releases/latest)\n\n| Platform | File | Instructions |\n|----------|------|-------------|\n| **Windows** | `iOpenPod-windows.zip` | Extract, and run `iOpenPod.exe` |\n| **macOS** | `iOpenPod-macos.tar.gz` | Extract, and run `iOpenPod.app`, you will need to allow the unknown developer in System Settings. |\n| **Linux (All distros, recommended)** | `iOpenPod-Linux-x86_64.AppImage ` | Make it executable with `chmod a+x ./iOpenPod-Linux-x86_64.AppImage` and run. |\n| **Linux (Arch-based)** | [`iopenpod`](https://aur.archlinux.org/packages/iopenpod)\u003csup\u003eAUR\u003c/sup\u003e | Available in the AUR |\n| **Linux (All distros)** | `iOpenPod-linux.tar.gz` | Extract, and run `./iOpenPod` |\n\nOnce installed, iOpenPod can check for updates automatically and can update itself right from the app. (Except when installed from AUR.)\n\n\u003e **Optional extras:** Install [FFmpeg](https://ffmpeg.org/) for transcoding (FLAC to ALAC, etc.) and [Chromaprint](https://acoustid.org/chromaprint) for acoustic fingerprinting needed for syncing.\n\n---\n\n## How to Use\n\n1. **Plug in your iPod** — Make sure it is mounted as a drive\n2. **Pick your device** — Select your iPod in iOpenPod. If it detects the iPod incorrectly, please open an issue.\n3. **Browse** — Manage your iPod's library, modifying any existing tracks, playlists, podcasts, etc.\n4. **Sync** — Press sync, choose a folder on your PC to sync, decide what you want and what you don't, and you're done.\n\n![Device Picker](assets/screenshots/devicepicker.png)\n\n---\n\n## Features\n\n### 🎵 Sync Music From Any Format\nDrop in any file format and iOpenPod transcodes whatever the iPod can't play natively into ALAC or AAC. Converted files are cached so repeat syncs are fast.\n\n### 📻 Podcasts\nSubscribe to podcasts right inside iOpenPod with the built-in podcast manager. Search, subscribe, download episodes, and sync them to your iPod.\n\n![Podcasts](assets/screenshots/podcasts.png)\n\n### 🎧 ListenBrainz Scrobbling\nSign into ListenBrainz and your listening history gets scrobbled automatically every time you sync.\n\n### 📚 More Than Just Music\nAudiobooks, movies, and TV shows are all supported. iOpenPod handles the different media types so your iPod sorts them correctly.\n\n### 🖱️ Drag and Drop\nDon't care about keeping your PC and iPod perfectly in sync? Just drag files into the app and they'll land on your iPod. No fingerprinting or file tracking.\n\n![Manage Tracks](assets/screenshots/managetracks.png)\n\n### 📊 Play Counts \u0026 Ratings\nListen on your iPod, plug it in, and your play counts, ratings, and skip counts can sync back to your PC library.\n\n### 🖼️ Album Art Just Works\nArt gets extracted from your files, resized, and written in the iPod's native RGB565 format. No extra steps.\n\n### ✅ Review Before You Commit\nEvery sync shows you exactly what's happening, adds, removes, metadata updates, all with checkboxes for each item. Nothing changes until you say so.\n\n![Sync Review](assets/screenshots/syncreview.png)\n\n### 📋 Playlists \u0026 Smart Playlists\nBrowse and manage standard playlists. Smart playlists with rule-based filtering are supported too.\n\n![Playlists](assets/screenshots/playlists.png)\n![Smart Playlists](assets/screenshots/smartplaylist.png)\n\n### 🛡️ Backup \u0026 Rollback\nA snapshot of your iPod database is saved before every sync. If something goes wrong, roll back to any previous state.\n\n![Backups](assets/screenshots/backup.png)\n\n### ⚙️ Configurable\nTweak transcoding settings, sync behavior, and more.\n\n---\n\n## Supported iPods\n\nWorks with every click-wheel iPod Apple ever made. Shuffle support coming soon!\n\n| Device | Status | Notes |\n|--------|--------|-------|\n| iPod 1G–5G, Mini, Photo | ✅ Fully supported | No hash required |\n| iPod Classic (all gens) | ✅ Fully supported | Uses FireWire ID |\n| iPod Nano 1G–2G | ✅ Fully supported | No hash required |\n| iPod Nano 3G–4G | ✅ Fully supported | Uses FireWire ID |\n| iPod Nano 5G | ✅ Fully supported | Needs one iTunes sync for HashInfo |\n| iPod Nano 6G–7G | ✅ Fully supported | HASHAB via WebAssembly |\n| iPod Shuffle | 🔜 Coming soon | |\n| iPod Touch | ❌ Not planned | |\n\n---\n\n## For Developers\n\nWant to help make iOpenPod? Here's how to get a dev environment running.\n\n### Prerequisites\n\n- **Python 3.13+**\n- **[uv](https://docs.astral.sh/uv/)** (Python package manager)\n- **[FFmpeg](https://ffmpeg.org/)** (for transcoding)\n- **[Chromaprint](https://acoustid.org/chromaprint)** (for fingerprinting)\n\n### Setup\n\n```bash\ngit clone https://github.com/TheRealSavi/iOpenPod.git\ncd iOpenPod\nuv sync\nuv run python main.py\n```\n\nThat's it. `uv sync` installs all dependencies into a virtual environment automatically.\n\n### Project Layout\n\n```\niOpenPod/\n├── GUI/                    # PyQt6 interface\n│   ├── app.py              # Main window\n│   └── widgets/            # Album grid, track list, sidebar, sync review, etc.\n├── iTunesDB_Parser/        # Reads iPod's binary iTunesDB\n├── iTunesDB_Writer/        # Writes iTunesDB\n├── ArtworkDB_Parser/       # Reads ArtworkDB binary format\n├── ArtworkDB_Writer/       # Writes album art to .ithmb files\n├── SyncEngine/             # Fingerprinting, diffing, transcoding, sync execution\n├── PodcastManager/         # Podcast search, subscription, and download\n├── SQLiteDB_Writer/        # SQLite DB for Nano 6G/7G\n└── main.py                 # Entry point\n```\n\n### How Sync Works\n\nThe sync engine matches tracks between your PC and iPod using acoustic fingerprints ([Chromaprint](https://acoustid.org/chromaprint)). This means it can identify the same song even after re-encoding, format conversion, or metadata changes.\n\n1. Scan both the PC media folder and iPod's iTunesDB\n2. Compute or read cached fingerprints for each track\n3. Diff by fingerprint to classify: new, removed, changed, or matched\n4. Present the sync plan for review\n5. Copy/transcode files, update the database, sync artwork and play counts\n6. Rebuild the iTunesDB binary with the correct device-specific checksum\n\n### Areas Where Help Is Needed\n\n- **Real hardware testing** - Every iPod is a little different.\n- **macOS and Linux testing** - Primary dev is on Windows\n- **Bug reports** - Open an issue with steps to reproduce\n\nPlease open an issue before starting major changes so we can coordinate, or [join the discord server](https://discord.gg/9Yy499Tf5d).\n\n### Related Projects\n\n- [libgpod](https://github.com/gtkpod/libgpod) — C library for iPod database access (the reference implementation this project learned from)\n- [gtkpod](https://github.com/gtkpod/gtkpod) — GTK+ iPod manager\n- [Rockbox](https://www.rockbox.org/) — Open-source firmware replacement for iPods\n\n---\n\n## Support\n\niOpenPod is and always will be completely free and open source. If you like it and would like to support me, it is so very appreciated.\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/johngibbons)\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftherealsavi%2Fiopenpod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftherealsavi%2Fiopenpod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftherealsavi%2Fiopenpod/lists"}