MoosicBox Music API
A unified API abstraction layer for music services in the MoosicBox ecosystem. This package provides standardized interfaces and implementations for accessing music metadata, search functionality, and authentication across different music streaming services.
Features
- Unified API Interface: Common abstractions for music services (Tidal, Qobuz, local library)
- Search Functionality: Standardized search across artists, albums, tracks, and playlists
- Authentication Management: Flexible authentication system supporting multiple auth methods
- Pagination Support: Efficient handling of large result sets with cursor-based pagination
- Profile Integration: Multi-profile support for different user configurations
- OpenAPI Documentation: Auto-generated API documentation and client SDKs
- Async/Await Support: Non-blocking operations with Tokio async runtime
- Error Handling: Comprehensive error types with detailed context
Installation
Add this to your Cargo.toml:
[]
= "0.1.1"
Usage
Basic API Implementation
use ;
use async_trait;
Search Operations
use ;
// Create search query
let query = new
.with_types
.with_limit
.with_offset;
// Execute search
let results = music_api.search.await?;
// Process results
for artist in results.artists
for album in results.albums
Authentication
use ;
// Username/password authentication
let auth = UsernamePassword ;
let result = music_api.authenticate.await?;
match result
Pagination
use ;
let mut page_request = new.with_limit;
let mut all_tracks = Vecnew;
loop
Programming Interface
Core Traits
Data Models
Configuration
Environment Variables
MUSIC_API_TIMEOUT: Request timeout in seconds (default: 30)MUSIC_API_RETRY_COUNT: Number of retry attempts (default: 3)MUSIC_API_CACHE_TTL: Cache time-to-live in seconds (default: 300)
Feature Flags
api: Enable Actix Web API endpointsauth-poll: Enable polling-based authenticationauth-username-password: Enable username/password authenticationmodels-api-search: Enable search API modelsopenapi: Enable OpenAPI documentation generation
Web API Endpoints
When the api feature is enabled, the following endpoints are available:
GET /search?q={query}&types={types}&limit={limit}
GET /artists/{id}
GET /albums/{id}
GET /tracks/{id}
GET /playlists/{id}
POST /auth
GET /auth/poll/{poll_id}
Error Handling
use ApiError;
match music_api.get_artist.await
Integration Examples
With Tidal API
use MusicApi;
use TidalApi;
let tidal = new?;
let results = tidal.search.await?;
With Local Library
use MusicApi;
use LocalLibraryApi;
let library = new?;
let results = library.search.await?;
Testing
# Run all tests
# Run with specific features
# Run integration tests
Troubleshooting
Common Issues
Authentication Failures
- Verify credentials are correct
- Check if service requires specific authentication flow
- Ensure network connectivity to authentication servers
Search Returns No Results
- Verify search query format
- Check if service requires authentication for search
- Try different search terms or types
Rate Limiting
- Implement exponential backoff
- Cache results to reduce API calls
- Consider using multiple API keys if supported
Performance Issues
- Enable response caching
- Use pagination for large result sets
- Implement connection pooling for HTTP clients
See Also
moosicbox_tidal- Tidal streaming service integrationmoosicbox_qobuz- Qobuz Hi-Res streaming integrationmoosicbox_library- Local music library managementmoosicbox_search- Full-text search functionalitymoosicbox_auth- Authentication and authorizationmoosicbox_paging- Pagination utilities