diff --git a/main.rs b/main.rs new file mode 100644 index 0000000..f7f9b86 --- /dev/null +++ b/main.rs @@ -0,0 +1,56 @@ +use std::fs::File; +use std::io::prelude::*; +use std::path::Path; +use reqwest::blocking::get; + +fn generate_rss(data: &[serde_json::Value]) -> String { + let mut rss = String::from("\n\n\n\nComicK - English RSS Feed\nhttps://github.com/ld3z/manga-rss\nA simple RSS feed for ComicK!\n"); + + for i in data { + let c = i["md_comics"].as_object().unwrap(); + let title = format!("{} - Chapter {}", c["title"].as_str().unwrap().replace("&", "and"), i["chap"].as_str().unwrap()); + let link = format!("https://comick.io/comic/{}", c["slug"].as_str().unwrap()); + let description = format!("Chapter {} of {} is now available on ComicK!", i["chap"].as_str().unwrap(), c["title"].as_str().unwrap().replace("&", "and")); + + rss.push_str(&format!("\n\n {}\n {}\n {}\n\n", title, link, description)); + } + + rss.push_str("\n\n"); + rss +} + +fn main() -> Result<(), Box> { + let url_nsfw = "https://api.comick.fun/chapter/?lang=en&page=1&order=new&accept_mature_content=true"; + let url_sfw = "https://api.comick.fun/chapter/?lang=en&page=1&order=new&accept_mature_content=false"; + + let data_nsfw = get(url_nsfw)?.json::>()?; + let data_sfw = get(url_sfw)?.json::>()?; + + let filename_nsfw = "./comick/comick-rss-en-nsfw.xml"; + let filename_sfw = "./comick/comick-rss-en-sfw.xml"; + + if let Ok(dir) = std::fs::create_dir_all(Path::new(filename_nsfw).parent().unwrap()) { + if let Err(_) = dir { + println!("Failed to create directory!"); + return Ok(()); + } + } + + if let Ok(dir) = std::fs::create_dir_all(Path::new(filename_sfw).parent().unwrap()) { + if let Err(_) = dir { + println!("Failed to create directory!"); + return Ok(()); + } + } + + let rss_nsfw = generate_rss(&data_nsfw); + let rss_sfw = generate_rss(&data_sfw); + + let mut file_nsfw = File::create(filename_nsfw)?; + file_nsfw.write_all(rss_nsfw.as_bytes())?; + + let mut file_sfw = File::create(filename_sfw)?; + file_sfw.write_all(rss_sfw.as_bytes())?; + + Ok(()) +}