add -k to open each kanji info in a browser tab

This commit is contained in:
jojii 2021-04-02 20:20:09 +02:00
parent 9eb9481067
commit d017288de4
No known key found for this signature in database
GPG key ID: 87B75C673974601F
3 changed files with 55 additions and 27 deletions

18
Cargo.lock generated
View file

@ -112,6 +112,7 @@ dependencies = [
"colored", "colored",
"serde_json", "serde_json",
"ureq", "ureq",
"webbrowser",
] ]
[[package]] [[package]]
@ -397,6 +398,17 @@ dependencies = [
"wasm-bindgen", "wasm-bindgen",
] ]
[[package]]
name = "webbrowser"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecad156490d6b620308ed411cfee90d280b3cbd13e189ea0d3fada8acc89158a"
dependencies = [
"web-sys",
"widestring",
"winapi",
]
[[package]] [[package]]
name = "webpki" name = "webpki"
version = "0.21.4" version = "0.21.4"
@ -416,6 +428,12 @@ dependencies = [
"webpki", "webpki",
] ]
[[package]]
name = "widestring"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
[[package]] [[package]]
name = "winapi" name = "winapi"
version = "0.3.9" version = "0.3.9"

View file

@ -14,3 +14,6 @@ serde_json = "1.0.64"
ansi_term = "0.12.1" ansi_term = "0.12.1"
colored = "2.0.0" colored = "2.0.0"
argparse = "0.2.2" argparse = "0.2.2"
webbrowser = "0.5.5"
[features]

View file

@ -46,36 +46,44 @@ fn main() -> Result<(), ureq::Error> {
}; };
loop { loop {
// Do API request if options.kanji {
let body: Value = ureq::get(&format!(JISHO_URL!(), query)) // Open kanji page here
.call()? query.chars().into_iter().for_each(|kanji| {
.into_json()?; webbrowser::open(&format!("https://jisho.org/search/{}%23kanji", kanji))
.expect("Couldn't open browser");
});
} else {
// Do API request
let body: Value = ureq::get(&format!(JISHO_URL!(), query))
.call()?
.into_json()?;
// Try to get the data json-object // Try to get the data json-object
let body = value_to_arr({ let body = value_to_arr({
let body = body.get("data"); let body = body.get("data");
if body.is_none() { if body.is_none() {
eprintln!("Error! Invalid response"); eprintln!("Error! Invalid response");
return Ok(()); return Ok(());
} }
body.unwrap() body.unwrap()
}); });
if options.interactive { if options.interactive {
println!();
}
// Iterate over meanings and print them
for (i, entry) in body.iter().enumerate() {
if i >= options.limit {
break;
}
if print_item(&query, entry).is_some() && i + 2 <= options.limit {
println!(); println!();
} }
// Iterate over meanings and print them
for (i, entry) in body.iter().enumerate() {
if i >= options.limit {
break;
}
if print_item(&query, entry).is_some() && i + 2 <= options.limit {
println!();
}
}
} }
if !options.interactive { if !options.interactive {
@ -268,13 +276,12 @@ fn parse_args() -> Options {
"Don't exit after running a query", "Don't exit after running a query",
); );
/* Uncomment when supported by jisho.org /* Uncomment when supported by jisho.org */
ap.refer(&mut options.kanji).add_option( ap.refer(&mut options.kanji).add_option(
&["--kanji", "-k"], &["--kanji", "-k"],
StoreFalse, StoreTrue,
"Look up a certain kanji", "Look up a certain kanji",
); );
*/
ap.parse_args_or_exit(); ap.parse_args_or_exit();
} }