MoosicBox Library
Music library management package providing database operations for artists, albums, and tracks with support for filtering, search, and pagination.
Features
- Artist Management: List and retrieve artists from the library
- Album Management: Browse albums with filtering, sorting, and pagination
- Track Management: Access track information with detailed metadata
- Search Functionality: Full-text search across artists, albums, and tracks
- Pagination Support: Efficient browsing of large music collections
- Filtering & Sorting: Filter albums by artist, name, source, and sort by various criteria
- Database Integration: Async database operations with proper error handling
- Version Support: Manage multiple album versions from different sources with varying quality levels
Installation
Add this to your Cargo.toml:
[]
= "0.1.4"
Enable additional features:
[]
= { = "0.1.4", = ["api"] }
Usage
Working with Artists
use favorite_artists;
use LibraryDatabase;
// LibraryDatabase is obtained from the PROFILES registry or via actix-web request extraction
async
Album Operations
use ;
use AlbumsRequest;
use Id;
use LibraryDatabase;
// LibraryDatabase is obtained from the PROFILES registry or via actix-web request extraction
async
Track Management
use ;
use Id;
use LibraryDatabase;
// LibraryDatabase is obtained from the PROFILES registry or via actix-web request extraction
async
Filtering and Sorting Albums
use ;
use ;
use ;
Search Operations
use ;
use ApiGlobalSearchResult;
Artist Albums
use artist_albums;
use LibraryAlbumType;
use Id;
use LibraryDatabase;
// LibraryDatabase is obtained from the PROFILES registry or via actix-web request extraction
async
Track File URLs
use ;
use Id;
use LibraryDatabase;
// LibraryDatabase is obtained from the PROFILES registry or via actix-web request extraction
async
API Reference
Core Functions
favorite_artists()- Get paginated artists from the libraryfavorite_albums()- Get paginated albums with filtering and sortingfavorite_tracks()- Get paginated tracks with optional ID filteringartist()- Get artist by IDalbum()- Get album by IDalbum_from_source()- Get album by ID and API sourcetrack()- Get track by IDartist_albums()- Get albums by specific artist with optional type filteringalbum_tracks()- Get tracks in specific albumalbum_versions()- Get available versions of an album grouped by quality
Utility Functions
filter_albums()- Filter albums by criteriasort_albums()- Sort albums by specified ordersearch()- Search across library contenttrack_file_url()- Get file URL for track playbackreindex_global_search_index()- Rebuild the search index from library data
API Integration (api feature)
api::bind_services()- Register all library HTTP endpoints on an Actix-web scope
Management Functions
Note: The following functions are currently non-functional placeholders that return Ok(()):
add_favorite_artist()- Placeholder: Add artist to favoritesremove_favorite_artist()- Placeholder: Remove artist from favoritesadd_favorite_album()- Placeholder: Add album to favoritesremove_favorite_album()- Placeholder: Remove album from favoritesadd_favorite_track()- Placeholder: Add track to favoritesremove_favorite_track()- Placeholder: Remove track from favorites
Error Handling
The library provides specific error types for different operations:
LibraryFavoriteArtistsError- Errors when fetching favorite artistsLibraryFavoriteAlbumsError- Errors when fetching favorite albumsLibraryFavoriteTracksError- Errors when fetching favorite tracksLibraryArtistError- Errors when fetching artist informationLibraryAlbumError- Errors when fetching album informationLibraryTrackError- Errors when fetching track informationSearchError- Errors during search operations
Enums and Types
Order and Direction
LibraryArtistOrder,LibraryAlbumOrder,LibraryTrackOrderLibraryArtistOrderDirection,LibraryAlbumOrderDirection,LibraryTrackOrderDirection
Search Types
LibrarySearchType- Artists, Albums, Tracks, Videos, Playlists, UserProfilesSearchType- Enum variants for search filtering
Audio Quality
LibraryAudioQuality- High, Lossless, HiResLossless
Features
The following cargo features are available:
api- Enable API integration features (actix-web support)openapi- Enable OpenAPI/utoipa schema generationfail-on-warnings- Treat warnings as errors during compilationall-encoders- Enable all audio encodersall-formats- Enable all audio format support- Format-specific features:
format-aac,format-flac,format-mp3,format-opus - Encoder-specific features:
encoder-aac,encoder-flac,encoder-mp3,encoder-opus
Dependencies
switchy_database- Database connection and operationsmoosicbox_music_models- Core music data modelsmoosicbox_library_models- Library-specific data modelsmoosicbox_paging- Pagination utilitiesmoosicbox_search- Search functionality