Skip to content

Mandy-cyber/Everything-iPod

Repository files navigation

Everything-iPod

I'm just a sleepy girl, there's a lot of rough edges and things to adjust/fix/add/remove in the repo. Soon come!

Table of Contents


iPod Wrapped

This is my silly little attempt to recreate Spotify Wrapped for iPod music listening. It's a GTK4 app to sync your listening history and generate Spotify Wrapped-esque stats for whatever time range you please. image

Requirements

  1. An iPod running rockbox

  2. Logging needs to be enabled on your iPod. Go to Settings > Playback Settings > Logging > On

  3. Last.fm API credentials, which you can get for free here

Now, you're ready to run the iPod Wrapped app! Listen to some music first with logging enabled so you actually get some results in the app though haha!

Installers

Windows

Install:

  1. Download the latest ipod-wrapped-windows.zip from GitHub Releases
  2. Extract the ZIP file to any location (e.g., Desktop, Documents, or a USB drive)
  3. Double-click iPodWrapped.exe to run

The app is completely portable - no installation required! All your data is stored in the storage/ folder next to the executable.

Update to a New Version:

  1. Download the new ipod-wrapped-windows.zip from GitHub Releases
  2. Extract it to the same location as your current installation
  3. When prompted, choose to replace the files
  4. Your data in the storage/ folder will be preserved

Uninstall: Simply delete the entire iPodWrapped/ folder. All data is self-contained.

Linux & macOS

Coming soon!

Source Code

1. Clone the repository

git clone https://github.com/Mandy-cyber/Everything-iPod.git
cd Everything-iPod/ipod_wrapped

2. Install system dependencies

Ubuntu/Debian
sudo apt install python3 python3-gi python3-pip \
  libgtk-4-1 libadwaita-1-0 gir1.2-gtk-4.0 gir1.2-adw-1
Arch Linux
sudo pacman -S python python-gobject python-pip \
  gtk4 libadwaita
Fedora
sudo dnf install python3 python3-gobject python3-pip \
  gtk4 libadwaita
macOS
brew install python gtk4 libadwaita pygobject3 gtksourceview5
Windows
  1. Install MSYS2
  2. Open MSYS2 terminal and run:
    pacman -S mingw-w64-x86_64-python mingw-w64-x86_64-gtk4 \
      mingw-w64-x86_64-libadwaita mingw-w64-x86_64-python-gobject

3. Install Python dependencies

pip install -r requirements.txt

4. Run the app

python main.py

Follow the popup instructions and have fun!!


Custom Themes

N.B. Like most other rockbox themes, you'll need the default Rockbox font pack downloaded.

"The Letter"

A custom rockbox theme I drew and coded to act as a 'love letter' to physical media. It adjusts the lockscreen, main, while-playing, and USB, screens to look as follows:

lockscreen sbs wbs usb

Usage

Download here, or

# copy the theme over to your iPod
cp -r rockbox_themes/the_letter/.rockbox/. /path/to/iPod/.rockbox/

The current rockbox theme doesn't have the lockscreen--I'll eventually reupload with the lockscreen.


Minecraft Cherry Biome

A custom rockbox theme inspired by Minecraft's cherry blossom biome. It adjusts the lockscreen, main, while-playing, and USB, screens to look as follows:

1 2 3 4

Usage

Download here, or

# copy the theme over to your iPod
cp -r rockbox_themes/minecraft_cherry/.rockbox/. /path/to/iPod/.rockbox/

Utility Scripts

A collection of scripts that do random helpful things

album_art_fixer.py

This is not my code! Full credit goes to Xpl0itU. I just use the script in the sync_ipod.sh logic.

sync_ipod.sh

Syncs your local music directory with your iPod's. First extracts art covers from each album, before syncing the music and covers.

Usage

./sync_ipod.sh /path/to/local/Music/dir/ /path/to/iPod/Music/dir/

reload_theme.sh

Reloads your rockbox UI simulator with the theme being developed in ./rockbox-theme.

Usage

# adjust your env variables or dirs set in reload_theme.sh first
# TODO: accept args
./reload_theme.sh

update_album_genres.py

Manually update albums missing genre information in your iPod Wrapped db. Eventually this functionality will be added to the UI. Till then:

Usage

# edit the ALBUMS_WITH_GENRES list at the top of the file, then
python update_album_genres.py

FAQs

Ask me stuff so I have stuff to put here <3


Support

If you want to support, you can help via:

  • Writing some code!! Check out the CONTRIBUTING.md guide
  • Buying me some music from my wishlist, or your favorite album <3
    • FLAC preferred

TODO

ipod_wrapped

  • Proper 'Getting Started' page
  • Pass in Last.fm keys in UI
  • Add/Adjust logging
  • Support multiple formats of Music dir/song names
  • Add functionality to update album genres in the UI (currently only via utility script)
  • Add proper rate limiting logic for log analysis
  • Disable light mode LOL
  • Fix 'sorter' not bringing user back to top of table in songs page
  • Fix wonky resizing in songs page
  • Make text size responsive

  • Windows portable exe
  • Mac .app
  • Linux appimage

  • Add music player functionality
  • On bottom bar click, show expanded view
  • Add currently playing UI elements to bottom bar
  • Implement bottom bar stub methods
  • Add right-click menu with 'add to queue' and 'play next' options for genre songs

rockbox_theme

  • Fix and uncomment "the letter" lockscreen
  • Minecraft theme
  • Create a vinyl theme
  • Create a neofetch theme

utility_scripts

  • Accept args for all scripts instead of code editing

About

Stuff for my iPod—themes, iPod Wrapped, utility scripts, etc

Topics

Resources

Contributing

Stars

Watchers

Forks

Packages

No packages published