Novels of Scotland, software, and the space between. Author of the Wardstane Chronicles, the DI Cormac Buchan Investigations, and the Pondlife novels.
RadioObtainer
GitHub · C#

RadioObtainer

A tool for obtaining internet radio stream data.

View on GitHub

RadioObtainer

An example WinUI 3 application demonstrating how to read and download content from Usenet (NNTP) newsgroups.

Overview

RadioObtainer connects to a Usenet provider via NNTP, scans newsgroup headers, and downloads yEnc-encoded binary posts. It serves as a reference implementation for working with the NNTP protocol, yEnc decoding, and header caching in a .NET desktop application.

Features

Requirements

Building

dotnet build

Configuration

On first launch, go to Settings to configure:

Settings are saved to %LocalAppData%\RadioObtainer\config.json.

Project Structure

Services/
  NntpClient.cs       — Low-level NNTP protocol implementation
  DownloadService.cs   — High-level scan and download orchestration
  HeaderCache.cs       — Compressed header cache persistence
  YencDecoder.cs       — yEnc binary decoding and multi-part assembly
  LibraryScanner.cs    — Local file library scanning
  ConfigService.cs     — JSON configuration persistence
Models/
  AppConfig.cs         — Configuration and provider models
  RadioShow.cs         — Domain models (ArticleHeader, PostGroup, etc.)
Pages/
  BrowsePage.xaml.cs   — Scan headers and download posts
  GroupBrowserPage.xaml.cs — Discover newsgroups
  LibraryPage.xaml.cs  — View downloaded content
  SettingsPage.xaml.cs — Configure provider and preferences

License

This project is provided as an example for educational purposes.

View RadioObtainer on GitHub