Welcome to WebRadioFM
WebRadioFM is a Windows Phone 8.1 Silverlight music player that reads the phone's local music library and reports listening activity to Last.fm. This handbook documents the shipped application, its legacy build environment, and every major part of its source code.
Windows Phone 8.1 and its Silverlight development stack are discontinued. WebRadioFM is most useful for preservation, learning, and already-provisioned devices or emulator environments. A current .NET SDK by itself cannot build this application.
What the app does
- Lists tracks from XNA's
MediaLibraryand plays them throughMediaPlayer. - Provides play/pause, next, previous, and shuffle controls.
- publishes Now Playing updates to Last.fm.
- Scrobbles eligible tracks after a configurable listening threshold.
- Loves or unloves the active track.
- Displays recent tracks, top artists, and top tracks.
- Applies literal or regular-expression metadata edits before Last.fm submission.
- Blocks scrobbles matching configured artist/title fragments.
- Provides ten accent choices and dark/light appearance modes.
Choose your path
| I want to… | Start here |
|---|---|
| Install an existing XAP | Installation |
| Configure the app for the first time | First run |
| Connect a Last.fm account | Last.fm setup |
| Understand scrobble timing | Scrobbling behavior |
| Build or modify the source | Build from source |
| Understand the implementation | Architecture overview |
| Look up a class or method | API reference |
Platform at a glance
| Area | Technology |
|---|---|
| Language | C# |
| UI | Windows Phone Silverlight XAML + code-behind |
| Target | Windows Phone 8.1 (WindowsPhone,Version=v8.1) |
| Audio | Microsoft.Xna.Framework.Media |
| Networking | callback-based HttpWebRequest |
| JSON | DataContractJsonSerializer |
| Persistence | IsolatedStorageSettings.ApplicationSettings |
| Package | XAP |
| External service | Last.fm Web Services API 2.0 |
Repository map
WebRadioFM.sln Visual Studio solution
WebRadioFM/ Windows Phone application project
├── App.xaml[.cs] startup, services, frame, resources
├── MainPage.xaml[.cs] library/player/scrobble orchestration
├── SettingsPage.xaml[.cs] account, rules, metadata, appearance
├── StatsPage.xaml[.cs] Last.fm listening statistics
├── Services/ audio and Last.fm integrations
├── Helpers/ settings, signatures, themes, converters
├── Models/ app and Last.fm JSON models
├── Properties/ package and assembly manifests
└── Resources/ localizable resources
BuildOutput/ checked-in XAP artifacts
build.ps1 standard multi-platform PowerShell build
docs/ this Docusaurus handbook
src/ documentation site components and styling
Important implementation realities
This documentation describes current behavior rather than intended behavior:
- The app persists the Last.fm session key and username, but not the API key or API secret. Signed calls need credentials to be entered again after a fresh process launch.
- The Last.fm base URLs in source use plain
http://, not HTTPS. Treat account tokens and API secrets accordingly; see Privacy and security. - “Fetch album art” currently requests track information but does not bind returned art into the player UI.
- The repository contains no automated application test project; validation is manual and requires a compatible Windows environment.
These constraints are also called out where they affect setup, maintenance, and debugging.
Next step
Already have an XAP? Continue to Installation. Working from source? Go directly to Build from source.