Files
qbz/crates/qbz-integrations/Cargo.toml
T
vicrodh bd30e7cf24 feat(qbz-integrations): create third-party integrations crate
New crate for Last.fm, ListenBrainz, and MusicBrainz integrations.
Designed to work WITHOUT Tauri for TUI/headless clients.

Modules:
- lastfm: Scrobbling and now-playing via Cloudflare Workers proxy
- listenbrainz: Direct API client with user token auth
- musicbrainz: Entity resolution with rate limiting

Features:
- `cache` (default): SQLite persistence for offline support
  - ListenBrainz: Credential storage, offline listen queue
  - MusicBrainz: Resolved entity cache with TTL

Architecture:
- Pure async Rust, no Tauri dependencies
- Shared error types via IntegrationError enum
- Rate limiting for MusicBrainz (1 req/sec direct, faster via proxy)
2026-02-15 10:36:53 -06:00

37 lines
799 B
TOML

[package]
name = "qbz-integrations"
version = "0.1.0"
edition = "2021"
description = "Third-party service integrations for QBZ (Last.fm, ListenBrainz, MusicBrainz)"
license = "MIT"
[dependencies]
# Async runtime
tokio = { version = "1", features = ["sync", "time"] }
# HTTP client
reqwest = { version = "0.12", features = ["json"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Logging
log = "0.4"
# Error handling
thiserror = "1"
# URL encoding for API queries
urlencoding = "2"
# SQLite for caching (optional, enabled by default)
rusqlite = { version = "0.31", features = ["bundled"], optional = true }
# Time handling for cache TTL
chrono = { version = "0.4", optional = true }
[features]
default = ["cache"]
cache = ["dep:rusqlite", "dep:chrono"]