Files
kami/src/main.rs
2022-08-10 15:24:45 +01:00

144 lines
4.2 KiB
Rust

mod anime;
mod helpers;
mod ln;
mod ui;
use anime::anime::anime_stream;
use colored::Colorize;
use ln::search::search_ln;
use ln::{ln::ln_read, scraper::get_ln_next_page};
use crate::anime::{
player::open_video,
scraper::{anime_ep_range, anime_link, anime_names},
trackers::*,
};
use crate::helpers::take_input::{int_input, string_input};
use crate::ln::{menu::chapter_selector, open_text::open_bat, scraper::get_full_text};
use crate::ui::anime_ui::ui_anime;
fn main() {
let mut help = false;
let mut anime = false;
let mut ln = false;
let mut chapter: u32 = 0;
let mut episode: u32 = 0;
let mut resume = false;
//let search = option string
let mut search = String::new();
let mut count = 0;
for arg in std::env::args() {
if arg == "--help" || arg == "-h" {
help = true;
}
if arg == "--anime" || arg == "-a" {
anime = true;
//look at the next argument and see if it is a search term
if let Some(arg) = std::env::args().nth(count + 1) {
if !arg.starts_with("-") {
search = arg;
}
}
}
if arg == "--ln" || arg == "-l" {
ln = true;
//if let Some(arg) = std::env::args().nth(count + 1) and that arg does not start with a '-' set search to that arg
if let Some(arg) = std::env::args().nth(count + 1) {
if !arg.starts_with("-") {
search = arg;
}
}
}
if arg == "--chapter" || arg == "-c" {
if let Some(arg) = std::env::args().nth(count + 1) {
chapter = arg.parse::<u32>().unwrap();
} else {
chapter = 0;
}
}
if arg == "--episode" || arg == "-e" {
if let Some(arg) = std::env::args().nth(count + 1) {
episode = arg.parse::<u32>().unwrap();
} else {
episode = 0;
}
}
if arg == "--resume" || arg == "-r" {
resume = true;
}
count += 1;
}
if help == true {
print_help();
}
if anime == false && ln == false {
println!("1: Anime");
println!("2: Light Novel");
let a = int_input("pick your poison: ");
match a {
1 => anime = true,
2 => ln = true,
_ => println!("invalid option. "),
};
}
if anime == true && ln == true {
println!("you can only use one of the arguments at a time");
std::process::exit(0);
}
if ln == true {
ln_read(&search, chapter);
} else if anime == true {
//anime_stream(search, episode, resume);
ui_anime();
} else {
println!("Invalid argument");
}
}
fn page_selector(ln_id: &str, selected_page: u32) -> String {
get_ln_next_page(ln_id, &selected_page.to_string())
}
fn print_help() {
println!("anime:\t\t{}", format_args!("{}", "-a --anime".red()));
println!(
"{}",
"after this^^^ argument you can enter a search term".green()
);
println!("{}", "for exaple kami -a \"one piece\"");
//print blank line
println!("");
println!("episode:\t{}", format_args!("{}", "-e --episode".red()));
println!(
"{}",
"after this^^^ argument you can enter a chapter number".green()
);
println!("{}", "for exaple kami -c 200");
//print blank line
println!("");
println!("resume:\t\t{}", format_args!("{}", "-r --resume".red()));
println!("{}", "only works with anime".green());
println!("");
println!("light novel:\t{}", format_args!("{}", "-l --ln".red()));
println!(
"{}",
"after this^^^ argument you can enter a search term".green()
);
println!("{}", "for exaple kami -l \"one piece\"");
//print blank line
println!("");
println!("chapter:\t{}", format_args!("{}", "-c --chapter".red()));
println!(
"{}",
"after this^^^ argument you can enter a chapter number".green()
);
println!("{}", "for exaple kami -c 200");
//print blank line
println!("");
println!("help:\t\t{}", format_args!("{}", "-h --help".red()));
//kill the program
std::process::exit(0);
}