add -k to open each kanji info in a browser tab
This commit is contained in:
parent
9eb9481067
commit
d017288de4
3 changed files with 55 additions and 27 deletions
18
Cargo.lock
generated
18
Cargo.lock
generated
|
@ -112,6 +112,7 @@ dependencies = [
|
|||
"colored",
|
||||
"serde_json",
|
||||
"ureq",
|
||||
"webbrowser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -397,6 +398,17 @@ dependencies = [
|
|||
"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]]
|
||||
name = "webpki"
|
||||
version = "0.21.4"
|
||||
|
@ -416,6 +428,12 @@ dependencies = [
|
|||
"webpki",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "widestring"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
|
|
|
@ -14,3 +14,6 @@ serde_json = "1.0.64"
|
|||
ansi_term = "0.12.1"
|
||||
colored = "2.0.0"
|
||||
argparse = "0.2.2"
|
||||
webbrowser = "0.5.5"
|
||||
|
||||
[features]
|
||||
|
|
61
src/main.rs
61
src/main.rs
|
@ -46,36 +46,44 @@ fn main() -> Result<(), ureq::Error> {
|
|||
};
|
||||
|
||||
loop {
|
||||
// Do API request
|
||||
let body: Value = ureq::get(&format!(JISHO_URL!(), query))
|
||||
.call()?
|
||||
.into_json()?;
|
||||
if options.kanji {
|
||||
// Open kanji page here
|
||||
query.chars().into_iter().for_each(|kanji| {
|
||||
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
|
||||
let body = value_to_arr({
|
||||
let body = body.get("data");
|
||||
// Try to get the data json-object
|
||||
let body = value_to_arr({
|
||||
let body = body.get("data");
|
||||
|
||||
if body.is_none() {
|
||||
eprintln!("Error! Invalid response");
|
||||
return Ok(());
|
||||
}
|
||||
if body.is_none() {
|
||||
eprintln!("Error! Invalid response");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
body.unwrap()
|
||||
});
|
||||
body.unwrap()
|
||||
});
|
||||
|
||||
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 {
|
||||
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!();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if !options.interactive {
|
||||
|
@ -268,13 +276,12 @@ fn parse_args() -> Options {
|
|||
"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(
|
||||
&["--kanji", "-k"],
|
||||
StoreFalse,
|
||||
StoreTrue,
|
||||
"Look up a certain kanji",
|
||||
);
|
||||
*/
|
||||
|
||||
ap.parse_args_or_exit();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue