From b9def3324eaa23ea52454adc0e92042b367b2b5e Mon Sep 17 00:00:00 2001 From: SadlyNotSappho Date: Fri, 25 Aug 2023 12:27:39 -0700 Subject: [PATCH] get_page() now returns the actual page data (and will probably crash if you give it an invalid page) --- src/lib.rs | 27 ++++++++++++++++++++++++--- src/main.rs | 3 ++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 867a915..4e07e73 100755 --- a/src/lib.rs +++ b/src/lib.rs @@ -53,6 +53,7 @@ pub struct Config { pub cache_folder: String, } +#[derive(Debug)] pub struct Page { pub date: String, pub next_page: Option, @@ -60,7 +61,7 @@ pub struct Page { pub image: String, } -pub async fn get_page(date: String) { +pub async fn get_page(date: String) -> Page { let page_html = &reqwest::get(format!( "https://girlgeniusonline.com/comic.php?date={date}" )) @@ -73,9 +74,29 @@ pub async fn get_page(date: String) { let parsed = Html::parse_document(page_html); // get image url for this page - let selector = Selector::parse("img[alt=Comic]").unwrap(); + let imageselector = Selector::parse("img[alt=Comic]").unwrap(); let mut image = String::new(); - for element in parsed.select(&selector) { + for element in parsed.select(&imageselector) { image = element.value().attr("src").unwrap().replace('"', ""); } + + // get pages + let next = Selector::parse("#topnext").unwrap(); + let mut next_page = None; + for element in parsed.select(&next) { + next_page = Some(element.value().attr("href").unwrap().to_string()); + } + + let prev = Selector::parse("#topprev").unwrap(); + let mut prev_page = None; + for element in parsed.select(&prev) { + prev_page = Some(element.value().attr("href").unwrap().to_string()); + } + + Page { + date, + next_page, + prev_page, + image, + } } diff --git a/src/main.rs b/src/main.rs index c2afb2e..26aa5b9 100755 --- a/src/main.rs +++ b/src/main.rs @@ -18,5 +18,6 @@ async fn main() { let config = ggg::read_config(&config_file); ggg::ensure_exists(config.cache_folder); - ggg::get_page(config.latest_date).await; + let current_page = ggg::get_page(config.latest_date).await; + println!("{current_page:?}"); }