dobro
dobro copied to clipboard
Unofficial Pandora terminal client written in Rust
dobro
Unofficial Pandora terminal client written in Rust.
Building
Required libraries
Some modules of the terminal client uses modules that depend on some C libraries for dynamic linking.
Compiling
If everything is installed, a simple cargo run with the nightly compiler should suffice for testing the player.
What's going on right now?
This an app that I'm building during my free time. It will consist of the following main components (most to least important):
- API interaction (pandora-rs).
- Audio playback.
- Text-based user interface (TUI).
- User Settings.
Local crates for components can be found at src/lib.
API Interaction (pandora-rs)
Most of the work for this module is already done. It interacts with the API in a very rusty way using hyper; all the requests/responses are serialized/deserialized using serde and serde_json. The pandora-rs module interacts with the API found here.
Audio playback (earwax, ao-rs)
For audio decoding I made a small C library with Rust bindings based on ffmpeg 2.8 called Earwax. For audio playpack I'm using libao with safe ffi bindings.
TUI
Simple interface made with ncurses. This would be the "main" Dobro application, and it builds on the lower-level components.
User settings
After everything else is done. Should load from simple configuration files (preferably in toml format).