| Crates.io | moosicbox_music_api_models |
| lib.rs | moosicbox_music_api_models |
| version | 0.1.4 |
| created_at | 2025-05-07 13:19:35.148498+00 |
| updated_at | 2025-07-21 19:21:23.966692+00 |
| description | MoosicBox music API models package |
| homepage | |
| repository | https://github.com/MoosicBox/MoosicBox |
| max_upload_size | |
| id | 1663827 |
| size | 92,605 |
Data models and types for music API operations and requests.
The MoosicBox Music API Models package provides:
search feature)Add this to your Cargo.toml:
[dependencies]
moosicbox_music_api_models = { path = "../music_api/models" }
# Enable search functionality
moosicbox_music_api_models = {
path = "../music_api/models",
features = ["search"]
}
use moosicbox_music_api_models::{AlbumsRequest, AlbumFilters};
use moosicbox_music_models::{AlbumSort, AlbumType};
use moosicbox_paging::PagingRequest;
let request = AlbumsRequest {
sources: Some(vec![AlbumSource::Local]),
sort: Some(AlbumSort::NameAsc),
filters: Some(AlbumFilters {
album_type: Some(AlbumType::Lp),
artist: Some("Beatles".to_string()),
..Default::default()
}),
page: Some(PagingRequest {
offset: 0,
limit: 50,
}),
};
use moosicbox_music_api_models::TrackAudioQuality;
// Specify desired audio quality
let quality = TrackAudioQuality::FlacHiRes;
// Quality levels:
// - Low: MP3 320kbps
// - FlacLossless: FLAC 16-bit 44.1kHz
// - FlacHiRes: FLAC 24-bit ≤96kHz
// - FlacHighestRes: FLAC 24-bit >96kHz ≤192kHz
use moosicbox_music_api_models::TrackSource;
use moosicbox_music_models::AudioFormat;
// Local file source
let local_source = TrackSource::LocalFilePath {
path: "/music/artist/album/track.flac".to_string(),
format: AudioFormat::Flac,
track_id: Some(123.into()),
source: TrackApiSource::Local,
};
// Remote URL source
let remote_source = TrackSource::RemoteUrl {
url: "https://api.service.com/track/123".to_string(),
format: AudioFormat::Flac,
track_id: Some(123.into()),
source: TrackApiSource::Api(api_source),
headers: Some(vec![("Authorization".to_string(), "Bearer token".to_string())]),
};
use moosicbox_music_api_models::{ImageCoverSource, ImageCoverSize};
// Local cover art
let local_cover = ImageCoverSource::LocalFilePath(
"/covers/album_123.jpg".to_string()
);
// Remote cover art
let remote_cover = ImageCoverSource::RemoteUrl {
url: "https://covers.service.com/album/123".to_string(),
headers: Some(vec![("User-Agent".to_string(), "MoosicBox".to_string())]),
};
// Size specifications
let size = ImageCoverSize::Large; // Max, Large, Medium, Small, Thumbnail
search: Enable search-related models and types