1
0
mirror of https://gitlab.com/Anson-Projects/zine.git synced 2025-06-16 13:36:40 +00:00

Added proper logging

This commit is contained in:
Anson Biggs 2024-03-01 01:09:20 -07:00
parent 8b30cc58b9
commit 59b2fdef91
6 changed files with 113 additions and 16 deletions

91
Cargo.lock generated
View File

@ -23,10 +23,12 @@ version = "0.2.0"
dependencies = [ dependencies = [
"chrono", "chrono",
"feed-rs", "feed-rs",
"log",
"maud", "maud",
"rayon", "rayon",
"reqwest", "reqwest",
"scraper", "scraper",
"simple_logger",
] ]
[[package]] [[package]]
@ -152,6 +154,16 @@ dependencies = [
"windows-targets 0.52.0", "windows-targets 0.52.0",
] ]
[[package]]
name = "colored"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8"
dependencies = [
"lazy_static",
"windows-sys 0.48.0",
]
[[package]] [[package]]
name = "core-foundation" name = "core-foundation"
version = "0.9.4" version = "0.9.4"
@ -216,6 +228,15 @@ dependencies = [
"syn 2.0.48", "syn 2.0.48",
] ]
[[package]]
name = "deranged"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
dependencies = [
"powerfmt",
]
[[package]] [[package]]
name = "derive_more" name = "derive_more"
version = "0.99.17" version = "0.99.17"
@ -738,6 +759,12 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
[[package]]
name = "num-conv"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]] [[package]]
name = "num-traits" name = "num-traits"
version = "0.2.18" version = "0.2.18"
@ -757,6 +784,15 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "num_threads"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "object" name = "object"
version = "0.32.2" version = "0.32.2"
@ -917,6 +953,12 @@ version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
[[package]]
name = "powerfmt"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]] [[package]]
name = "ppv-lite86" name = "ppv-lite86"
version = "0.2.17" version = "0.2.17"
@ -1165,9 +1207,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]] [[package]]
name = "scraper" name = "scraper"
version = "0.18.1" version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "585480e3719b311b78a573db1c9d9c4c1f8010c2dee4cc59c2efe58ea4dbc3e1" checksum = "5b80b33679ff7a0ea53d37f3b39de77ea0c75b12c5805ac43ec0c33b3051af1b"
dependencies = [ dependencies = [
"ahash", "ahash",
"cssparser", "cssparser",
@ -1273,6 +1315,18 @@ dependencies = [
"stable_deref_trait", "stable_deref_trait",
] ]
[[package]]
name = "simple_logger"
version = "4.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e7e46c8c90251d47d08b28b8a419ffb4aede0f87c2eea95e17d1d5bacbf3ef1"
dependencies = [
"colored",
"log",
"time",
"windows-sys 0.48.0",
]
[[package]] [[package]]
name = "siphasher" name = "siphasher"
version = "0.3.11" version = "0.3.11"
@ -1414,6 +1468,39 @@ dependencies = [
"utf-8", "utf-8",
] ]
[[package]]
name = "time"
version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
dependencies = [
"deranged",
"itoa",
"libc",
"num-conv",
"num_threads",
"powerfmt",
"serde",
"time-core",
"time-macros",
]
[[package]]
name = "time-core"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "time-macros"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
dependencies = [
"num-conv",
"time-core",
]
[[package]] [[package]]
name = "tinyvec" name = "tinyvec"
version = "1.6.0" version = "1.6.0"

View File

@ -14,5 +14,7 @@ feed-rs = "1.4.0"
reqwest = { version = "0.11.24", features = ["blocking"] } reqwest = { version = "0.11.24", features = ["blocking"] }
maud = "0.26.0" maud = "0.26.0"
chrono = "0.4.33" chrono = "0.4.33"
scraper = "0.18.1" scraper = "0.19.0"
rayon = "1.8.1" rayon = "1.8.1"
simple_logger = "4.3.3"
log = "0.4"

View File

@ -22,7 +22,7 @@ fn create_featured_card(entry: &Entry) -> Markup {
let lang = link.clone().href_lang.unwrap_or("en".to_string()); let lang = link.clone().href_lang.unwrap_or("en".to_string());
if lang != "en" { if lang != "en" {
println!("Non english! {} {}", lang, link.href); log::warn!("Non english! {} {}", lang, link.href);
} }
let mut image_url = entry let mut image_url = entry
@ -34,7 +34,7 @@ fn create_featured_card(entry: &Entry) -> Markup {
// Fallback to fetching social image if direct extraction didn't work // Fallback to fetching social image if direct extraction didn't work
if image_url.is_empty() { if image_url.is_empty() {
println!( log::info!(
"Falling back to searching for a social image for {}", "Falling back to searching for a social image for {}",
link.href link.href
); );
@ -60,7 +60,6 @@ fn create_featured_card(entry: &Entry) -> Markup {
let truncated_description = utilities::truncate_description(&cleaned_description, 500); let truncated_description = utilities::truncate_description(&cleaned_description, 500);
let main_url = utilities::get_root_url(link.href.as_str()); let main_url = utilities::get_root_url(link.href.as_str());
dbg!(main_url);
html! { html! {
article { article {
@ -93,7 +92,7 @@ fn create_post_card(entry: &Entry) -> Markup {
let lang = link.clone().href_lang.unwrap_or("en".to_string()); let lang = link.clone().href_lang.unwrap_or("en".to_string());
if lang != "en" { if lang != "en" {
println!("Non english! {} {}", lang, link.href); log::warn!("Non english! {} {}", lang, link.href);
} }
let mut image_url = entry let mut image_url = entry
@ -105,12 +104,15 @@ fn create_post_card(entry: &Entry) -> Markup {
// Fallback to fetching social image if direct extraction didn't work // Fallback to fetching social image if direct extraction didn't work
if image_url.is_empty() { if image_url.is_empty() {
println!( log::info!(
"Falling back to searching for a social image for {}", "Falling back to searching for a social image for {}",
link.href link.href
); );
image_url = web_fetchers::fetch_social_image(link.href.as_str()).unwrap_or_default(); image_url = web_fetchers::fetch_social_image(link.href.as_str()).unwrap_or_default();
} }
if image_url.is_empty() {
log::warn!("No image could be gathered for {}", link.href);
}
let description = entry.content.as_ref().map_or_else( let description = entry.content.as_ref().map_or_else(
|| { || {
@ -249,10 +251,10 @@ pub fn generate_index(mut entries: Vec<Entry>) -> Markup {
let featured = entries.remove(0); let featured = entries.remove(0);
if running_in_gitlab { if running_in_gitlab {
println!("Building for deployment"); log::info!("Building for deployment");
entries.truncate(30); entries.truncate(30);
} else { } else {
println!("Building for development"); log::info!("Building for development");
entries.truncate(6); entries.truncate(6);
} }

View File

@ -14,13 +14,15 @@ mod utilities;
mod web_fetchers; mod web_fetchers;
fn main() -> Result<(), Box<dyn Error>> { fn main() -> Result<(), Box<dyn Error>> {
simple_logger::init_with_level(log::Level::Info).unwrap();
let featured = read_feed("featured_feeds.txt").first().unwrap().clone(); let featured = read_feed("featured_feeds.txt").first().unwrap().clone();
let mut entries = read_feed("feeds.txt"); let mut entries = read_feed("feeds.txt");
// Move featured article to the front // Move featured article to the front
entries.retain(|entry| entry != &featured); entries.retain(|entry| entry != &featured);
entries.insert(0, featured); entries.insert(0, featured);
println!( log::info!(
"Featured article: {}", "Featured article: {}",
entries[0].links.first().unwrap().href.as_str() entries[0].links.first().unwrap().href.as_str()
); );
@ -34,8 +36,8 @@ fn main() -> Result<(), Box<dyn Error>> {
.unwrap(); .unwrap();
match write(output_path, index.into_string()) { match write(output_path, index.into_string()) {
Ok(_) => println!("Successfully wrote to {}", output_path.display()), Ok(_) => log::info!("Successfully wrote to {}", output_path.display()),
Err(e) => eprintln!("Failed to write to {}: {}", output_path.display(), e), Err(e) => log::error!("Failed to write to {}: {}", output_path.display(), e),
} }
Ok(()) Ok(())

View File

@ -9,7 +9,7 @@ pub fn read_feed(path: &str) -> Vec<Entry> {
let binding = fs::read_to_string(path).unwrap(); let binding = fs::read_to_string(path).unwrap();
let feed_urls: Vec<&str> = binding.lines().collect(); let feed_urls: Vec<&str> = binding.lines().collect();
println!("Fetching feeds:"); log::trace!("Fetching feeds:");
let raw_entries: Vec<Result<Vec<Entry>, String>> = feed_urls let raw_entries: Vec<Result<Vec<Entry>, String>> = feed_urls
.into_par_iter() .into_par_iter()
.map(|url| { .map(|url| {
@ -22,7 +22,7 @@ pub fn read_feed(path: &str) -> Vec<Entry> {
for entry in raw_entries { for entry in raw_entries {
match entry { match entry {
Ok(mut feed_entries) => entries.append(&mut feed_entries), Ok(mut feed_entries) => entries.append(&mut feed_entries),
Err(e) => println!("{}", e), Err(e) => log::warn!("{}", e),
} }
} }

View File

@ -9,7 +9,11 @@ use std::error::Error;
pub fn fetch_feed(url: &str) -> Result<Vec<Entry>, Box<dyn Error>> { pub fn fetch_feed(url: &str) -> Result<Vec<Entry>, Box<dyn Error>> {
let content = get(url)?.text()?; let content = get(url)?.text()?;
let feed = parser::parse(content.as_bytes())?; let feed = parser::parse(content.as_bytes())?;
println!("\tFeed {} returned {} items", url, feed.entries.len()); if feed.entries.is_empty() {
log::warn!("Feed {url} returned no items!");
} else {
log::info!("Feed {} returned {} items", url, feed.entries.len());
}
Ok(feed.entries) Ok(feed.entries)
} }