iPod di Milla
Spotify playlists directly to a classic iPod, locally.

A local web application that downloads Spotify playlists and albums, organizes the audio library, and syncs tracks and native iTunesDB databases directly to an iPod.
The problem
Classic iPods cannot stream music and require compatible audio formats, rich metadata tags, embedded cover art, and Apple's proprietary signed iTunesDB index. Manually downloading Spotify playlists or profiles, converting them to high-bitrate MP3/AAC, and writing to the device's file structure is tedious, error-prone, and risks corrupting existing device libraries.
The work
I designed and developed a local-first web app featuring a retro interface inspired by the iPod Nano 4th generation. The tool uses spotDL to download 320 kbps MP3 or M4A/AAC tracks with accurate ID3 tags and artwork, deduplicates files in an artist/album hierarchy, and writes native iPod_Control folders alongside signed iTunesDB files via iOpenPod. Device metadata is automatically backed up prior to any write operation.
Music download and metadata tagging
Support for Spotify playlist, album, and profile URLs. Downloads 320 kbps MP3 or M4A audio with embedded cover art and metadata, retrying missing tracks across multiple audio providers while avoiding duplicate downloads.
Native iPod database synchronization
Uses iOpenPod to map tracks into iPod_Control/Music/Fxx directory layouts and write the signed iTunesDB database matching iPod Nano 4G specifications, without overwriting existing unrelated tracks.
Safe backups and retro interface
Automatic backups of the iPod's iTunes, Artwork, and Device directories prior to writing. The web interface faithfully mimics the casing, screen, and color finishes of the iPod Nano 4th Gen, running strictly locally on localhost.
The result
A fully working, reliable open-source tool published under the MIT license on GitHub. Features cross-platform drive and iPod detection (verified on an 8 GB iPod Nano 4G), FFmpeg preflight checks, multi-provider fallbacks for missing songs, and a strictly local architecture bound to 127.0.0.1 to protect personal library data.
Role and tools
End-to-end design and development: Flask backend, spotDL and iOpenPod integrations, cross-platform drive detection, async sync job management, and custom retro iPod UI.
Python, Flask, spotDL, iOpenPod, JavaScript