Skip to main content

sclibble

scrobble + CLI = sCLIbble

Fast, lightweight CLI that scrobbles plays from an iPod to Last.fm.

I found popular tools like Legacy Scrobbler 1) too slow to parse large databases, and 2) unnecessary to launch a whole Electron GUI just to sync and close.

Install

pip install sclibble
pipx install sclibble

Requires Python 3.9.

Quickstart

  1. sclibble login — authenticates via browser to Last.fm
  2. Connect your iPod in disk mode (required)
  3. sclibble sync — finds the device, parses new plays, and asks you to review / confirm before submitting
  4. Done. Any rejects are cached and retried automatically on the following sync

Commands

  • sclibble login — authenticates via browser to Last.fm
  • sclibble logout — logs out of current Last.fm session
  • sclibble sync — find connected iPod, parse new plays, review/select, scrobble; also retries cached failures
  • sclibble status — show logged-in username and pending cached scrobbles
  • sclibble delete — toggle auto-deletion of Play Counts after a fully successful sync. (you want this OFF if you're syncing with both iTunes and Last.fm!)
  • sclibble path — set or unset a custom iPod mount path

Configuration

Folder locations:

  • macOS: ~/Library/Application Support/sclibble/
  • Windows: C:\Users\<username>\AppData\Local\adityanaithani\sclibble
  • Linux: ~/.local/share/sclibble

Parameters

  • config.json — preferences: autodelete toggle and custom_path setting
  • session.json — Last.fm session key, cached username
  • failed_scrobbles.json — cache of failed scrobbles

How it works

  • iPods store two binary database files in the iPod_Control directory:
    1. iTunesDB - contains track metadata for every song on the device
    2. Play Counts - list of last-played tracks, play counts (of course), last-played timestamp
  • sclibble scans common mount points (or a custom path) for the directory, parses the database files, then matches Play_Counts positionally against iTunesDB. Timestamps are also converted from mac -> unix epoch and adjusted to match local timezone
  • For each track, Play Counts stores one last-played timestamp + a play count. For repeat plays, sclibble simulates one timestamp per listen by backdating from the last-played time by the track length, then resolves overlaps so plays are chronological
  • Scrobbles are submitted to the Last.fm API in batches of <=50. Transient failures are handled by timeouts and retry/backoff
  • Failed scrobbles are cached in failed_scrobbles.json and automatically retried on next sclibble sync
  • The Play Counts file is offered for deletion when every selected new play was accepted by Last.fm and the failure cache is empty. Cache-only retries never delete it, so play data is never wiped before it's safely scrobbled

Compatibility

Currently only tested and confirmed working on macOS with an iPod Mini 2G. Windows/Linux code does exist but I don't have a machine to test it on.

If you are able to test on a different OS or with a different device please create an issue and let me know so I can update this section.

Credentials

I will note that sclibble ships with hardcoded keys, which is mega insecure, but unfortunately the Last.fm API is quite old and doesn't have security features like modern APIs. For the super limited scope I imagine this tool will have I'm okay with it for now, if usage picks up I may switch to a proxy via a secure web server.

Dev Roadmap

  • Tests and CI
  • Windows / Linux validation
  • Auto-eject post sync
  • Improve settings UX
  • Clear cache command

License

MIT — see LICENSE.

Metadata

Release files for sclibble 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sclibble 0.1.0
File Size Uploaded
sclibble-0.1.0.tar.gz 14.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sclibble 0.1.0
File Interpreter ABI Platform
sclibble-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.8 kB

Release files / sclibble-0.1.0.tar.gz

Download URL sclibble-0.1.0.tar.gz
Size 14.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f2eea85ec421de2609f29a98196147783ddaf96105676b7b4723d6d464122124
BLAKE2b-256 checksum
How to use checksums
b8ece2f9e230c860c44ad7dbd0af5eddf78bd98b6d874ecdfcc9e7ec0340a936
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release files / sclibble-0.1.0-py3-none-any.whl

Download URL sclibble-0.1.0-py3-none-any.whl
Size 14.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ce6561b9355b8221e39e8c034a5a961199e8b4f1712a024f2b61d02806292cd
BLAKE2b-256 checksum
How to use checksums
5396fe990b831b2963a44b220a0383c3e4b17b18c03173dac7489509353f7634
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page