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",
|
"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"
|
||||||
|
|
|
@ -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]
|
||||||
|
|
61
src/main.rs
61
src/main.rs
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue