added resume functon for anime

This commit is contained in:
Zastian Pretorius
2022-08-08 22:50:48 +01:00
parent 77415b22b4
commit 333b638d06
3 changed files with 22 additions and 11 deletions

2
Cargo.lock generated
View File

@@ -315,7 +315,7 @@ checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
[[package]]
name = "kami"
version = "0.5.0"
version = "0.5.1"
dependencies = [
"base64",
"colored",

View File

@@ -5,7 +5,7 @@ use crate::{get_anime_id, get_token, get_user_anime_progress, update_anime_progr
use crate::{int_input, string_input};
use colored::Colorize;
//use crate
pub fn anime_stream(search: String, episode: u32) {
pub fn anime_stream(search: String, episode: u32, resume: bool) {
let token = get_token();
let query = if search != "" {
search
@@ -42,7 +42,7 @@ pub fn anime_stream(search: String, episode: u32) {
let title = &anime_list[anime_num];
let ep_range = anime_ep_range(title);
// if there is only one episode, then don't ask user to choose episode
let id = get_anime_id(&title.replace("-", " "));
let id = get_anime_id(&title);
if ep_range == 1 {
let link = anime_link(title, 1);
open_video(link);
@@ -57,12 +57,15 @@ pub fn anime_stream(search: String, episode: u32) {
ep_num = episode as usize;
} else {
let current_progress = get_user_anime_progress(id, &token);
println!("you are currently on episode: {}", current_progress);
println!("select episode 1-{}: ", ep_range);
while ep_num == usize::max_value() || ep_num > ep_range as usize {
ep_num = int_input("Enter episode number: ");
if ep_num > ep_range as usize {
println!("Invalid episode number");
if resume && current_progress != 0 {
ep_num = (current_progress + 1) as usize;
} else {
println!("select episode 1-{}: ", ep_range);
while ep_num == usize::max_value() || ep_num > ep_range as usize {
ep_num = int_input("Enter episode number: ");
if ep_num > ep_range as usize {
println!("Invalid episode number");
}
}
}
}
@@ -91,7 +94,7 @@ pub fn anime_stream(search: String, episode: u32) {
}
} else if input == "s" {
//remove all the arguments
anime_stream("".to_string(), 0);
anime_stream("".to_string(), 0, false);
} else if input == "q" {
std::process::exit(0);
} else {

View File

@@ -21,6 +21,7 @@ fn main() {
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;
@@ -60,6 +61,10 @@ fn main() {
episode = 0;
}
}
if arg == "--resume" || arg == "-r" {
resume = true;
}
count += 1;
}
@@ -84,7 +89,7 @@ fn main() {
if ln == true {
ln_read(&search, chapter);
} else if anime == true {
anime_stream(search, episode);
anime_stream(search, episode, resume);
} else {
println!("Invalid argument");
}
@@ -111,6 +116,9 @@ fn print_help() {
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!(
"{}",