changelog shortlog graph tags branches changeset files revisions annotate raw help

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,
6 };
7 
8 #[tokio::main]
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"),
17  };
18  let config = FreesoundConfig::load(&config_path)?;
19  let mut client = FreeSoundClient::new_with_config(&config);
20  if let Some(cmd) = cmd {
21  if cmd.eq("auth") {
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(),
27  filter: None,
28  sort: "",
29  group_by_pack: false,
30  weights: "",
31  page: 1,
32  page_size: 150,
33  fields: &["id", "name"],
34  descriptors: &[],
35  normalized: false,
36  };
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(),
45  };
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());
49  }
50  } else {
51  println!("tenex-fs [auth|query|download/dl] ARG");
52  }
53  Ok(())
54 }