All around the globe, music is a common communicator that reaches across boundaries.
Some take it even farther — displaying their love for music on Last.fm, where they track
their listens, called scrobbles, for the whole world to see.
I am one of those people.
winScrobbler was born out of a frustration with deprecated software. After posting online
to garner other users' experiences, it became clear I wasn't alone, which lead to the birth of winScrobbler.
A scrobble is a single logged listen — automatically recorded to your Last.fm profile as you play a track, timestamped and tied to your account. Collectively, your scrobbles form a complete history of everything you have ever listened to, displayed publicly on your Last.fm profile for the world to see.
The term originates from Last.fm itself and has become widely used among music enthusiasts. To scrobble is to listen with intention, building a living archive of your taste over time.
Because this application is centred around the Last.fm platform, their API was the number one cited resource — providing clear requirements on how to build a functioning scrobbler.
The track must be longer than 30 seconds to qualify.
Played for at least half its duration, or 4 minutes — whichever comes first.
Scrobbled after listening, or after reaching the scrobble threshold.
Beyond the core requirements, offline scrobbling was a priority — keeping a local log of track metadata so scrobbles can be flushed to Last.fm once connection is restored, with the correct listening timestamp. Stored data is deleted after a successful flush.
Python was chosen as the primary language, with tkinter handling the GUI. The following packages were installed to support the application:
HTTP calls to the Last.fm API — scrobbling, now playing, user info, album art
Windows system tray icon, right-click menu, toast notifications
Image processing — album art, profile pictures, tray icon rendering
Windows media session — track metadata, artist, playback status
winScrobbler ships with everything needed to work at its fullest potential.
Authenticate your Last.fm account via OAuth directly within app settings.
Configurable toast notifications for scrobbles, offline queue, and toggle events.
Scrobbles saved locally when offline, flushed to Last.fm on reconnection.
Pause and resume scrobbling from the tray or the in-app power button.
Your Last.fm profile picture populates the toolbar. Click to open your profile.
An in-app about section accessible from settings.
A number of improvements could transform winScrobbler into a more user-friendly application going forward.
An installation wizard or streamlined open-source Git distribution would make setup seamless for non-technical users.
A proper day/night mode dependent on user preference, giving users more control over how the app looks.
An integrated bug report feature would allow users to flag issues directly, keeping development responsive.
Resources relied primarily upon Last.fm's API documentation, studied extensively. Without it, this project would not have been completed. Online Python and tkinter resources were consulted for bug fixes and UI improvements. YouTube videos on Python application development and creating distributable executables were also instrumental.
I'd like to thank all of my Computer Science professors at California State University Channel Islands for their expertise. The entire Computer Science Faculty has had a positive impact on my education and will leave an everlasting impression throughout my professional career.