Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

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

  • NNTP client — Connects to Usenet providers over TCP/SSL, authenticates, and retrieves article headers and bodies using standard NNTP commands (XOVER, BODY, GROUP, LIST).
  • Header caching — Caches scanned headers locally in compressed (gzip) JSON files for incremental scanning.
  • yEnc decoding — Decodes yEnc-encoded binary attachments and assembles multi-part posts into complete files.
  • Library tracking — Scans a local folder to identify which posts have already been downloaded, avoiding duplicates.
  • Newsgroup browsing — Discover and subscribe to newsgroups from the server's full group list.

Requirements

  • .NET 8
  • Windows 10 (19041) or later
  • Windows App SDK / WinUI 3

Building

dotnet build

Configuration

On first launch, go to Settings to configure:

  • Usenet provider — Host, port, SSL, and credentials for your NNTP server.
  • Newsgroups — The newsgroups to scan for content.
  • Library folder — Where downloaded files are stored.

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages