SubSonicMedia 1.0.4-beta.1

This is a prerelease version of SubSonicMedia.
There is a newer version of this package available.
See the version list below for details.
dotnet add package SubSonicMedia --version 1.0.4-beta.1
                    
NuGet\Install-Package SubSonicMedia -Version 1.0.4-beta.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SubSonicMedia" Version="1.0.4-beta.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SubSonicMedia" Version="1.0.4-beta.1" />
                    
Directory.Packages.props
<PackageReference Include="SubSonicMedia" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SubSonicMedia --version 1.0.4-beta.1
                    
#r "nuget: SubSonicMedia, 1.0.4-beta.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SubSonicMedia@1.0.4-beta.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SubSonicMedia&version=1.0.4-beta.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=SubSonicMedia&version=1.0.4-beta.1&prerelease
                    
Install as a Cake Tool

SubSonicMedia Logo

SubSonicMedia

Build and Test Status: Beta License: GPL-3.0 .NET NuGet NuGet Downloads GitHub Copilot Built with Claude

A comprehensive .NET client library for the Subsonic API, supporting API version 1.16.1.

๐Ÿ“‹ Features

  • Full implementation of Subsonic API v1.16.1
  • Strongly-typed response models
  • Interface-based architecture for easy testing and extensibility
  • Async support throughout
  • Comprehensive documentation

๐Ÿš€ Getting Started

Installation

Package Manager Console
Install-Package SubSonicMedia
```bash

#### .NET CLI

```bash
dotnet add package SubSonicMedia
```bash

#### PackageReference (in .csproj file)

```xml
<PackageReference Include="SubSonicMedia" Version="x.y.z" />

You can find the latest version on NuGet.org.

TestKit Usage

// Create a connection to your Subsonic server
var connectionInfo = new SubsonicConnectionInfo
{
    BaseUrl = "https://your-subsonic-server.com",
    Username = "username",
    Password = "password",
    ApiVersion = "1.16.1"
};

// Create the client
var client = new SubsonicClient(connectionInfo);

// Get all artists
var response = await client.Browsing.GetArtists();

// Play a song
var streamUrl = client.Media.GetStreamUrl("songId");

๐Ÿงช TestKit

The project includes a comprehensive TestKit for validating the SubSonicMedia API against your Subsonic server.

Features

  • Structured API tests with clear pass/fail results
  • JSON output for test results
  • JUnit XML output for integration with CI/CD systems
  • Record server responses for future mocking
  • Command-line interface for automation
  • npm-style output with UTF-8 icons
  • Detailed logging and error reporting

Configuration

The TestKit uses a .env file for configuration. Copy the .env.example file to .env in the TestKit directory and update the following settings:

# Server information
SUBSONIC_SERVER_URL=https://your-server-url
SUBSONIC_USERNAME=your-username
SUBSONIC_PASSWORD=your-password

# Test configuration
RECORD_TEST_RESULTS=true
OUTPUT_DIRECTORY=./TestResults
JUNIT_XML_OUTPUT=true

Usage

# Navigate to the TestKit directory
cd SubSonicMedia.TestKit

# Run all tests
dotnet run

# Run a specific test
dotnet run test "Connection Test"

# Run with JUnit XML output
dotnet run -- --junit-xml

# List available tests
dotnet run list

# Get help
dotnet run help

๐Ÿ› ๏ธ Development

Prerequisites

  • .NET 8.0 SDK or later
  • Visual Studio 2022, VS Code, or JetBrains Rider
  • PowerShell 7.0 or later

AI Development Tools

We use Claude Code (Anthropic's AI assistant, see CLAUDE.md and GitHub Copilot to accelerate development tasks, code reviews and documentation. This helps us maintain consistent code quality and speed up development workflows.

Building

# Clone the repository
git clone https://github.com/metaneutrons/SubSonicMedia.git
cd SubSonicMedia

# Build the solution
dotnet build

Detailed Documentation

For detailed development information, please refer to the following documents:

Versioning

This project follows semantic versioning with automated version bumping based on conventional commit messages.

We provide tools to automatically analyze commit messages and determine the appropriate version bump (major, minor, patch).

See docs/VERSIONING.md for details on:

  • Commit message conventions
  • Local version bump PowerShell script
  • GitHub workflow for automated versioning
  • Complete release process

VS Code Setup

The repository includes a VS Code setup with:

  • Build tasks for the library and TestKit
  • Debug configurations for running and debugging
  • Recommended extensions and settings

See docs/VSCODE.md for details.

๐Ÿ“„ License

This project is licensed under the GNU General Public License v3.0 or later.

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.5 573 7/29/2025
1.0.5-beta.1 230 5/4/2025
1.0.4-beta.1 125 3/21/2025
1.0.3-beta.20 72 3/21/2025