diff --git a/.gitignore b/.gitignore index 83a3a5f..e5c8a6d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ gallery-dl/*.sqlite3 gallery-dl/log.txt Artists /target +*_generated.txt diff --git a/src/main.rs b/src/main.rs index 0746668..d87b031 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,17 +1,66 @@ use postgres::{Client, NoTls}; +use std::{env, fs, io::Write}; -fn main() { +fn website_is_valid(name: &str) -> bool { let mut client = Client::connect("host=192.168.0.10 port=28945 user=hentai password=h99nqaNPhpfbuuhCDwQXLpZAnoVTjSQP7taoqmQhpzc2rPLVC4JUAKxAHfuuhuU9", NoTls).unwrap(); - let output = client - .query("SELECT * FROM get_urls_and_paths('Rule34');", &[]) - .unwrap(); - let mut url: &str; - let mut path: &str; + let sqlstmt = format!("SELECT * FROM website WHERE name = '{}'", name); + let output = client.query(&sqlstmt, &[]).unwrap(); + + if output.len() == 0 { + return false; + } + + return true; +} + +fn generate_file(website_name: &str) { + dbg!(&website_name); + + if !website_is_valid(&website_name) { + panic!("Invalid website_name"); + } + + let filename = format!("{website_name}_generated.txt"); + dbg!(&filename); + + let mut file = match fs::File::create(filename) { + Ok(file) => file, + Err(error) => { + let message = error.to_string(); + panic!("Problem opening the file: {message}"); + } + }; + + let mut client = Client::connect("host=192.168.0.10 port=28945 user=hentai password=h99nqaNPhpfbuuhCDwQXLpZAnoVTjSQP7taoqmQhpzc2rPLVC4JUAKxAHfuuhuU9", NoTls).unwrap(); + let sqlstmt = format!("SELECT * FROM get_urls_and_paths('{}');", website_name); + let output = client.query(&sqlstmt, &[]).unwrap(); for row in output { - url = row.get(0); - path = row.get(1); + let url: String = row.get(0); + let folder_path: String = row.get(1); - println!("{} {}", url, path); + dbg!(&url, &folder_path); + write!(file, "{} # {}", url, folder_path).unwrap(); + } +} + +fn import_file(filename: &str) { + dbg!(&filename); +} + +fn main() { + let args: Vec = env::args().collect(); + dbg!(&args); + + if args.len() != 3 { + panic!("Too many or too few arguments"); + } + + let operation: &str = args[1].as_str(); + + match operation { + "generate" => generate_file(&args[2]), + "import" => import_file(&args[2]), + _ => panic!("Invalid argument"), } }