From 5497b7c0aada39cc13bee49c80efe7680ea0b6bb Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 7 Feb 2023 18:54:23 -0500 Subject: [PATCH] small refactor --- .../src/payloads/web_scraping_result.rs | 27 ++++++++++++------- .../src/sites/cnn/cnn_article_scraper.rs | 12 +++++---- .../techcrunch/techcrunch_article_scraper.rs | 12 +++++---- .../workers/web_content_scraping/main_loop.rs | 2 +- .../workers/web_index_ingestion/main_loop.rs | 2 +- 5 files changed, 33 insertions(+), 22 deletions(-) diff --git a/crates/lib/web_scrapers/src/payloads/web_scraping_result.rs b/crates/lib/web_scrapers/src/payloads/web_scraping_result.rs index 0290151ab5..b8ff57e35e 100644 --- a/crates/lib/web_scrapers/src/payloads/web_scraping_result.rs +++ b/crates/lib/web_scrapers/src/payloads/web_scraping_result.rs @@ -1,9 +1,17 @@ use enums::by_table::web_scraping_targets::web_content_type::WebContentType; -// TODO: Add publish date - +// TODO: Rename this to not confuse with `Result`. #[derive(Clone, Debug, Serialize, Deserialize)] pub struct WebScrapingResult { + /// Surface the original HTML to callers that care about it. + pub original_html: String, + + /// Output of *successful* scraping. + pub result: ScrapedWebArticle, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ScrapedWebArticle { /// Location the article came from pub url: String, @@ -28,15 +36,14 @@ pub struct WebScrapingResult { /// A featured image (somewhere in the body), if present pub maybe_featured_image_url: Option, - // TODO + // TODO: Add publish date // pub maybe_publish_date_utc: Option> } -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct OriginalHtmlWithWebScrapingResult { - /// Surface the original HTML to callers that care about it. - pub original_html: String, +// TODO: Other types - threaded discussions (HN, Reddit), video essays (CNN, YouTube), etc. +// then return these in an enum container. +pub struct ScrapedThreadedDiscussion { +} - /// Output of *successful* scraping. - pub result: WebScrapingResult, -} \ No newline at end of file +pub struct ScrapedVideo { +} diff --git a/crates/lib/web_scrapers/src/sites/cnn/cnn_article_scraper.rs b/crates/lib/web_scrapers/src/sites/cnn/cnn_article_scraper.rs index d0e85c660c..e48307e2d5 100644 --- a/crates/lib/web_scrapers/src/sites/cnn/cnn_article_scraper.rs +++ b/crates/lib/web_scrapers/src/sites/cnn/cnn_article_scraper.rs @@ -1,5 +1,6 @@ +use crate::common_extractors::extract_featured_image::extract_featured_image; use crate::common_extractors::extract_title::extract_title; -use crate::payloads::web_scraping_result::{OriginalHtmlWithWebScrapingResult, WebScrapingResult}; +use crate::payloads::web_scraping_result::{WebScrapingResult, ScrapedWebArticle}; use crate::payloads::web_scraping_target::WebScrapingTarget; use enums::by_table::web_scraping_targets::web_content_type::WebContentType; use errors::{anyhow, AnyhowResult}; @@ -29,7 +30,7 @@ pub static CNN_FEATURED_IMAGE_SELECTOR: Lazy = Lazy::new(|| { Selector::parse(".image__lede .image__picture > img").expect("this selector should parse") }); -pub async fn cnn_article_scraper(url: &str) -> AnyhowResult { +pub async fn cnn_article_scraper(url: &str) -> AnyhowResult { let downloaded_document= reqwest::get(url) .await? .bytes() @@ -68,19 +69,20 @@ pub async fn cnn_article_scraper(url: &str) -> AnyhowResult = Lazy::new(|| { Selector::parse(".article__featured-image").expect("this selector should parse") }); -pub async fn techcrunch_article_scraper(url: &str) -> AnyhowResult { +pub async fn techcrunch_article_scraper(url: &str) -> AnyhowResult { let downloaded_document= reqwest::get(url) .await? .bytes() @@ -66,19 +67,20 @@ pub async fn techcrunch_article_scraper(url: &str) -> AnyhowResult