Skip to content

Instantly share code, notes, and snippets.

@brandonros
Last active November 4, 2023 17:42
Show Gist options
  • Save brandonros/1f3e9d017e25adc1276b582f85be45b3 to your computer and use it in GitHub Desktop.
Save brandonros/1f3e9d017e25adc1276b582f85be45b3 to your computer and use it in GitHub Desktop.
Extracting MP3 tag information from an iPod Touch
# dependencies (requires fuse2, not fuse3)
sudo apt-get install build-essential checkinstall git autoconf automake libtool-bin libssl-dev python3-distutils python3-dev libusb-1.0-0 libusb-1.0-0-dev fuse libfuse-dev id3v2
# add to fuse
sudo groupadd fuse
sudo usermod -aG fuse $(whoami) # logout + log back in after
# clone
for x in libplist libimobiledevice-glue libusbmuxd usbmuxd libimobiledevice ifuse
do
git clone https://github.com/libimobiledevice/${x}.git
done
# env vars + directories
[ ! -d "$HOME/usr/src" ] && mkdir -p "$HOME/usr/src"
export PKG_CONFIG_PATH="${HOME}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
export CPATH="${HOME}/usr/include:${CPATH}"
export MANPATH="${HOME}/usr/share/man:${MANPATH}"
export PATH="${HOME}/usr/bin:${PATH}"
export LD_LIBRARY_PATH="${HOME}/usr/lib:${LD_LIBRARY_PATH}"
# build
for x in libplist libimobiledevice-glue libusbmuxd usbmuxd libimobiledevice ifuse
do
cd ~/usr/src/${x} && ./autogen.sh --prefix="$HOME/usr" && make && sudo make install && cd ..
done
# extract
find /mnt/iTunes_Control/Music -type f -iname '*.mp3' -exec sh -c '
for file do
target_dir="/home/brandon/tags/$(dirname "$file" | sed "s@/mnt/iTunes_Control/Music@@")"
mkdir -p "$target_dir"
id3v2 -l "$file" > "$target_dir/$(basename "${file%.mp3}").txt"
done
' _ {} +
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment