Refactor metadata parsing to avoid repetition
This commit is contained in:
parent
4f5e01802f
commit
da62c7c2c6
1 changed files with 15 additions and 21 deletions
|
@ -45,27 +45,21 @@ pub fn parse_metadata(page: &str) -> Option<Embed> {
|
||||||
let mut meta_title = String::default();
|
let mut meta_title = String::default();
|
||||||
let mut meta_description = String::default();
|
let mut meta_description = String::default();
|
||||||
|
|
||||||
match (title, desc) {
|
if let (None, None) = (title, desc) {
|
||||||
// If both title and description aren't found return None
|
|
||||||
(None, None) => {
|
|
||||||
warn!("Couldn't parse any metadata for URL");
|
warn!("Couldn't parse any metadata for URL");
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
// Otherwise set the title/description to whatever we find
|
|
||||||
(Some(title), Some(desc)) => {
|
if let Some(title) = title {
|
||||||
meta_title = title.text().collect();
|
meta_title = title.text().collect();
|
||||||
meta_description = desc.value().attr("content").unwrap().to_string();
|
} else {
|
||||||
}
|
|
||||||
// Handle logging of parse failures
|
|
||||||
// and set values to whatever we *did* manage to scrape
|
|
||||||
(Some(title), None) => {
|
|
||||||
warn!("Failed to parse description HTML");
|
|
||||||
meta_title = title.text().collect();
|
|
||||||
}
|
|
||||||
(None, Some(desc)) => {
|
|
||||||
warn!("Failed to parse title HTML");
|
warn!("Failed to parse title HTML");
|
||||||
meta_description = desc.value().attr("content").unwrap().to_string();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(desc) = desc {
|
||||||
|
meta_description = desc.value().attr("content").unwrap().to_string();
|
||||||
|
} else {
|
||||||
|
warn!("Failed to parse description HTML");
|
||||||
}
|
}
|
||||||
|
|
||||||
Some(Embed::new(meta_title, meta_description))
|
Some(Embed::new(meta_title, meta_description))
|
||||||
|
|
Loading…
Reference in a new issue