more options
This commit is contained in:
		
							
								
								
									
										29
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								src/main.rs
									
									
									
									
									
								
							| @@ -2,11 +2,16 @@ use std::num::ParseIntError; | |||||||
| use std::process::Command; | use std::process::Command; | ||||||
| use std::rc::Rc; | use std::rc::Rc; | ||||||
|  |  | ||||||
|  | use colored::Colorize; | ||||||
| use iptvnator_rs::{download_with_progress, setup, M3u8, Parser, Readline}; | use iptvnator_rs::{download_with_progress, setup, M3u8, Parser, Readline}; | ||||||
|  |  | ||||||
| #[tokio::main] | #[tokio::main] | ||||||
| async fn main() { | async fn main() { | ||||||
|     println!("Welcome to iptvnator_rs, the port of my iptvprogram written in python, now in rust BLAZINGLY FAST\n"); |     println!("Welcome to iptvnator_rs, the port of my iptvprogram written in python, now in rust BLAZINGLY FAST\n"); | ||||||
|  |     println!( | ||||||
|  |         "There will be some options along the way \n {} is for refreshing your iptvfile.\n {} is to quit and save watched feeds\n {} is to download fields\n {} is to perform a new search", | ||||||
|  |         "r".bold(),"q".bold(),"d".bold(),"s".bold() | ||||||
|  |     ); | ||||||
|     let parser = Parser::new("iptv.m3u8".to_owned(), setup(), "watched.txt".to_owned()).await; |     let parser = Parser::new("iptv.m3u8".to_owned(), setup(), "watched.txt".to_owned()).await; | ||||||
|  |  | ||||||
|     let mut search_result: Option<Rc<Vec<&M3u8>>> = None; |     let mut search_result: Option<Rc<Vec<&M3u8>>> = None; | ||||||
| @@ -15,12 +20,16 @@ async fn main() { | |||||||
|     loop { |     loop { | ||||||
|         // Dont't perform a search if user has just watched, instead present the previous search |         // Dont't perform a search if user has just watched, instead present the previous search | ||||||
|         if search_result.is_none() { |         if search_result.is_none() { | ||||||
|             let search = readline.input("Search by name: "); |             let search = readline.input("Search by name [r | q]: "); | ||||||
|             let search = search.trim(); |             let search = search.trim(); | ||||||
|  |  | ||||||
|             // If they want to quit, let them- |             // If they want to quit, let them- | ||||||
|             if search == "q" { |             if search == "q" { | ||||||
|                 break; |                 break; | ||||||
|  |             } else if search == "r" { | ||||||
|  |                 search_result = None; | ||||||
|  |                 refresh(&parser).await; | ||||||
|  |                 continue; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             search_result = Some(Rc::new(parser.find(search))); |             search_result = Some(Rc::new(parser.find(search))); | ||||||
| @@ -48,14 +57,7 @@ async fn main() { | |||||||
|         } else if user_wish == "r" { |         } else if user_wish == "r" { | ||||||
|             println!("Refreshing local m3u8-file"); |             println!("Refreshing local m3u8-file"); | ||||||
|             search_result = None; |             search_result = None; | ||||||
|  |             refresh(&parser).await; | ||||||
|             // I know that this is also frowned upon, but it is perfectly safe right here, |  | ||||||
|             // even though the borrowchecker complains |  | ||||||
|             { |  | ||||||
|                 let ptr = &parser as *const Parser as *mut Parser; |  | ||||||
|                 let p = unsafe { &mut *ptr }; |  | ||||||
|                 p.forcefully_update().await; |  | ||||||
|             } |  | ||||||
|             continue; |             continue; | ||||||
|         } else if user_wish == "d" { |         } else if user_wish == "d" { | ||||||
|             let selection = readline.input("Download all or select in comma separated [A]: "); |             let selection = readline.input("Download all or select in comma separated [A]: "); | ||||||
| @@ -102,6 +104,15 @@ async fn main() { | |||||||
|     parser.save_watched(); |     parser.save_watched(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * I know that this is also frowned upon, but it is perfectly safe right here, | ||||||
|  |  * even though the borrowchecker complains | ||||||
|  |  */ | ||||||
|  | async fn refresh(parser: &Parser) { | ||||||
|  |     let ptr = parser as *const Parser as *mut Parser; | ||||||
|  |     let p = unsafe { &mut *ptr }; | ||||||
|  |     p.forcefully_update().await; | ||||||
|  | } | ||||||
| async fn download_m3u8(files_to_download: Rc<Vec<&M3u8>>) { | async fn download_m3u8(files_to_download: Rc<Vec<&M3u8>>) { | ||||||
|     for m3u8 in files_to_download.iter() { |     for m3u8 in files_to_download.iter() { | ||||||
|         let file_ending_place = m3u8.link.rfind(".").unwrap(); |         let file_ending_place = m3u8.link.rfind(".").unwrap(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user