Mercurial > core / rust/lib/tenex/examples/freesound.rs
changeset 698: |
96958d3eb5b0 |
parent: |
0ccbbd142694
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: |
-rw-r--r-- |
description: |
fixes |
1 #![cfg(feature = "freesound")] 2 use std::{env, path::Path}; 3 use tenex::freesound::{ 4 write_sound, FreeSoundClient, FreeSoundRequest, FreeSoundResponse, 5 FreesoundConfig, Result, 9 async fn main() -> Result<()> { 10 let args: Vec<String> = std::env::args().collect(); 11 let mut args = args.iter().skip(1); 12 let cmd = args.next(); 13 let cfg_var = env::var("FREESOUND_CONFIG"); 14 let config_path = match cfg_var { 15 Ok(ref val) => Path::new(val), 16 Err(_) => Path::new("freesound.json"), 18 let config = FreesoundConfig::load(&config_path)?; 19 let mut client = FreeSoundClient::new_with_config(&config); 20 if let Some(cmd) = cmd { 22 client.auth(true).await.unwrap(); 23 client.save(&config_path)?; 24 } else if cmd.eq("search") { 25 let req = FreeSoundRequest::SearchText { 26 query: &args.next().unwrap(), 33 fields: &["id", "name"], 37 let res = client.request(req).await.unwrap(); 38 let response = FreeSoundResponse::parse(res).await; 39 println!("{}", response); 40 } else if cmd.eq("dl") || cmd.eq("download") { 41 let query = args.next().unwrap(); 42 let out = if let Some(p) = args.next() { p } else { query }; 43 let req = FreeSoundRequest::SoundDownload { 44 id: query.parse().unwrap(), 46 let res = client.request(req).await.unwrap(); 47 write_sound(res, &out, true).await.unwrap(); 48 println!("sound_id {} downloaded to {}", query, out.as_str()); 51 println!("tenex-fs [auth|query|download/dl] ARG");