changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate 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
67
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
1
 #![cfg(feature = "freesound")]
28
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
2
 use std::{env, path::Path};
67
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
3
 use tenex::freesound::{
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
4
   write_sound, FreeSoundClient, FreeSoundRequest, FreeSoundResponse,
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
5
   FreesoundConfig, Result,
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
6
 };
28
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
7
 
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
8
 #[tokio::main]
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
9
 async fn main() -> Result<()> {
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
10
   let args: Vec<String> = std::env::args().collect();
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
11
   let mut args = args.iter().skip(1);
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
12
   let cmd = args.next();
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
13
   let cfg_var = env::var("FREESOUND_CONFIG");
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
14
   let config_path = match cfg_var {
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
15
     Ok(ref val) => Path::new(val),
67
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
16
     Err(_) => Path::new("freesound.json"),
28
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
17
   };
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
18
   let config = FreesoundConfig::load(&config_path)?;
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
19
   let mut client = FreeSoundClient::new_with_config(&config);
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
20
   if let Some(cmd) = cmd {
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
21
     if cmd.eq("auth") {
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
22
       client.auth(true).await.unwrap();
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
23
       client.save(&config_path)?;
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
24
     } else if cmd.eq("search") {
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
25
       let req = FreeSoundRequest::SearchText {
67
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
26
         query: &args.next().unwrap(),
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
27
         filter: None,
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
28
         sort: "",
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
29
         group_by_pack: false,
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
30
         weights: "",
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
31
         page: 1,
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
32
         page_size: 150,
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
33
         fields: &["id", "name"],
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
34
         descriptors: &[],
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
35
         normalized: false,
28
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
36
       };
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
37
       let res = client.request(req).await.unwrap();
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
38
       let response = FreeSoundResponse::parse(res).await;
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
39
       println!("{}", response);
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
40
     } else if cmd.eq("dl") || cmd.eq("download") {
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
41
       let query = args.next().unwrap();
67
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
42
       let out = if let Some(p) = args.next() { p } else { query };
28
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
43
       let req = FreeSoundRequest::SoundDownload {
67
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 28
diff changeset
44
         id: query.parse().unwrap(),
28
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
45
       };
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
46
       let res = client.request(req).await.unwrap();
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
47
       write_sound(res, &out, true).await.unwrap();
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
48
       println!("sound_id {} downloaded to {}", query, out.as_str());
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
49
     }
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
50
   } else {
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
51
     println!("tenex-fs [auth|query|download/dl] ARG");
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
52
   }
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
53
   Ok(())
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents:
diff changeset
54
 }