From 210d20d9102f06195db8065139f7ca9f951c1c75 Mon Sep 17 00:00:00 2001
From: ld3zian <42660576+ld3z@users.noreply.github.com>
Date: Tue, 12 Mar 2024 11:10:17 -0700
Subject: [PATCH] Create main.rs
---
main.rs | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 main.rs
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(())
+}