implemente pmoparadise
This commit is contained in:
72
pmoparadise/CHANGELOG.md
Normal file
72
pmoparadise/CHANGELOG.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.1.0] - 2024-10-12
|
||||
|
||||
### Added
|
||||
|
||||
- Initial release of pmoparadise
|
||||
- Core HTTP client for Radio Paradise API
|
||||
- Block metadata fetching with `get_block()` and `now_playing()`
|
||||
- Five quality levels: MP3 128, AAC 64/128/320, FLAC lossless
|
||||
- Block streaming with `stream_block()` and `stream_block_from_metadata()`
|
||||
- Prefetching support with `prefetch_next()`
|
||||
- Builder pattern for client configuration
|
||||
- Strong typing for EventId, DurationMs, and Bitrate
|
||||
- Comprehensive error handling with thiserror
|
||||
- Optional per-track extraction (feature: `per-track`)
|
||||
- FLAC decoding with claxon
|
||||
- WAV export with hound
|
||||
- PCM sample reading
|
||||
- Helper method `track_position_seconds()` for player-based seeking
|
||||
- Optional logging support (feature: `logging`)
|
||||
- Complete documentation with examples
|
||||
- Unit tests for data models
|
||||
- Integration tests with wiremock
|
||||
- Three example programs:
|
||||
- `now_playing` - Display current block and songs
|
||||
- `stream_block` - Stream a block to stdout
|
||||
- `extract_track` - Extract individual tracks (requires per-track feature)
|
||||
- CI/CD with GitHub Actions
|
||||
- MIT/Apache-2.0 dual licensing
|
||||
|
||||
### Documentation
|
||||
|
||||
- Comprehensive README with usage examples
|
||||
- Detailed module-level documentation
|
||||
- Rustdoc for all public APIs
|
||||
- Implementation notes and design decisions
|
||||
- Clear warnings about per-track limitations
|
||||
- Best practices for continuous playback
|
||||
|
||||
### Architecture
|
||||
|
||||
- Async/await with tokio runtime
|
||||
- Feature gates for optional functionality
|
||||
- Builder pattern for ergonomic configuration
|
||||
- Type-safe API with minimal runtime overhead
|
||||
- Stream-based block downloading
|
||||
- Integration-ready for PMOMusic ecosystem
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Planned Features
|
||||
|
||||
- Support for additional Radio Paradise channels (mellow, rock, world)
|
||||
- Historical block access by date/time
|
||||
- Optional block caching layer
|
||||
- WebSocket support for live updates (if API adds it)
|
||||
- Performance optimizations for per-track extraction
|
||||
|
||||
### Known Limitations
|
||||
|
||||
- Per-track extraction is resource-intensive (by design)
|
||||
- No built-in block caching (users implement as needed)
|
||||
- No authentication support (API is public)
|
||||
- FLAC seeking requires full decode (claxon limitation)
|
||||
|
||||
[0.1.0]: https://github.com/yourusername/pmomusic/releases/tag/pmoparadise-v0.1.0
|
||||
Reference in New Issue
Block a user