| Crates.io | amdm |
| lib.rs | amdm |
| version | 0.1.0 |
| created_at | 2026-01-25 17:16:35.71117+00 |
| updated_at | 2026-01-25 17:16:35.71117+00 |
| description | Rust client for amdm.ru with Russian lyrics stress marking and meter analysis |
| homepage | https://github.com/SolAstrius/amdm |
| repository | https://github.com/SolAstrius/amdm |
| max_upload_size | |
| id | 2069103 |
| size | 217,997 |
Rust client for amdm.ru (Russian guitar chord database) with Russian lyrics stress marking and meter analysis.
# Search for songs
amdm "мельница голубая трава"
# Show full lyrics with chords
amdm show "мельница голубая трава"
# Show Nth search result
amdm show "мельница" 3
# Fetch artist page
amdm artist melnitsa
# Output as JSON
amdm show "мельница" --json
# Add stress marks to lyrics (downloads models on first use)
amdm show "мельница голубая трава" --stress
# Show meter analysis
amdm show "мельница голубая трава" --meter
use amdm_rs::{AmdmClient, Result};
#[tokio::main]
async fn main() -> Result<()> {
let client = AmdmClient::new()?;
// Search for songs
let results = client.search("мельница", 1).await?;
// Fetch a song
if let Some(result) = results.results.first() {
let song = client.song_from_result(result).await?;
println!("{} - {}", song.meta.artist_name, song.meta.song_title);
for section in &song.sections {
for line in §ion.lines {
println!("{}", line.lyrics);
}
}
}
Ok(())
}
The stress engine uses ONNX models from the ruaccent project. Models are downloaded automatically to your system cache directory on first use (~50MB).
use amdm_rs::stress::StressEngine;
let mut engine = StressEngine::load(&model_path)?;
let stressed = engine.process("привет мир");
// Output: "прив+ет м+ир" (+ marks stressed vowels)
MIT