| Crates.io | soulseek-rs-lib |
| lib.rs | soulseek-rs-lib |
| version | 0.3.0 |
| created_at | 2025-11-11 20:54:15.557393+00 |
| updated_at | 2025-11-13 13:13:42.184035+00 |
| description | Library for Soulseek protocol implementation in Rust |
| homepage | |
| repository | https://github.com/michel/soulseek-rs |
| max_upload_size | |
| id | 1928179 |
| size | 200,931 |
A Rust library for implementing the Soulseek peer-to-peer protocol.
This library provides the core functionality for interacting with the Soulseek network. It can be used to build custom Soulseek clients or bots.
Add this to your Cargo.toml:
[dependencies]
soulseek-rs-lib = "0.1.0"
use soulseek_rs::Client;
use std::time::Duration;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create and connect to Soulseek server
let mut client = Client::new("username", "password");
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(())
}
use soulseek_rs::{Client, ClientSettings, PeerAddress};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create client with custom settings
let settings = ClientSettings {
server_address: PeerAddress::new("server.slsknet.org".to_string(), 2242),
enable_listen: true,
listen_port: 3000,
..ClientSettings::new("username", "password")
};
let mut client = Client::with_settings(settings);
client.connect();
client.login()?;
Ok(())
}