feat: seperate into lib and cli packages
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# soulseek-rs-lib
|
||||
|
||||
A Rust library for implementing the Soulseek peer-to-peer protocol.
|
||||
|
||||
## About
|
||||
|
||||
This library provides the core functionality for interacting with the Soulseek
|
||||
network. It can be used to build custom Soulseek clients or bots.
|
||||
|
||||
## Usage
|
||||
|
||||
Add this to your `Cargo.toml`:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
soulseek-rs-lib = "0.1.0"
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```rust
|
||||
use soulseek_rs::{Client, PeerAddress};
|
||||
use std::time::Duration;
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
// Create and connect to Soulseek server
|
||||
let mut client = Client::new(
|
||||
PeerAddress::new("server.slsknet.org".to_string(), 2242),
|
||||
"username".to_string(),
|
||||
"password".to_string(),
|
||||
false,
|
||||
None,
|
||||
);
|
||||
|
||||
client.connect();
|
||||
client.login()?;
|
||||
|
||||
// Search for files
|
||||
let results = client.search("Alex Kassian lifestream", Duration::from_secs(10))?;
|
||||
|
||||
// Download first available file
|
||||
if let Some(result) = results.iter().find(|r| !r.files.is_empty()) {
|
||||
let file = &result.files[0];
|
||||
client.download(
|
||||
file.name.clone(),
|
||||
file.username.clone(),
|
||||
file.size,
|
||||
"~/Downloads".to_string(),
|
||||
)?;
|
||||
println!("Downloaded: {}", file.name);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user