Clean up output, and fix more tests.

This commit is contained in:
2019-01-22 12:00:12 +01:00
parent a1d11c976d
commit 5a1d428c22
3 changed files with 51 additions and 72 deletions

View File

@@ -22,7 +22,13 @@ fn from_html(document: &str) -> Result<Entry, ()> {
let selector = Selector::parse("div.PhoneNoHit div.search-info-container p").unwrap();
if let Some(element) = html.select(&selector).next() {
let message = element.inner_html();
let message = element
.text()
.map(str::trim)
.filter(|s| !s.is_empty())
.collect::<Vec<_>>()
.join(" ");
let message = htmlescape::decode_html(&message).unwrap();
history.push(message);
@@ -94,10 +100,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![
"<strong>3464</strong> denna vecka och <strong>6637</strong> totalt.<!-- --> "
.to_string(),
],
history: vec!["3464 denna vecka och 6637 totalt.".to_string()],
comments: vec![],
};
@@ -123,10 +126,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![
"<strong>16</strong> denna vecka och <strong>98</strong> totalt.<!-- --> "
.to_string(),
],
history: vec!["16 denna vecka och 98 totalt.".to_string()],
comments: vec![],
};
@@ -139,10 +139,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![
"<strong>20</strong> denna vecka och <strong>602</strong> totalt.<!-- --> "
.to_string(),
],
history: vec!["20 denna vecka och 602 totalt.".to_string()],
comments: vec![],
};
@@ -155,10 +152,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![
"<strong>29</strong> denna vecka och <strong>900</strong> totalt.<!-- --> "
.to_string(),
],
history: vec!["29 denna vecka och 900 totalt.".to_string()],
comments: vec![],
};
@@ -171,10 +165,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![
"<strong>303</strong> denna vecka och <strong>304</strong> totalt.<!-- --> "
.to_string(),
],
history: vec!["303 denna vecka och 304 totalt.".to_string()],
comments: vec![],
};

View File

@@ -33,10 +33,21 @@ fn from_html(document: &str) -> Result<Entry, ()> {
let mut history = Vec::new();
let selector = Selector::parse("#content p:nth-child(5)").unwrap();
let selector = if messages.is_empty() {
Selector::parse("#content p:nth-child(4)").unwrap()
} else {
Selector::parse("#content p:nth-child(5)").unwrap()
};
if let Some(element) = html.select(&selector).next() {
history.push(element.inner_html());
let message = element
.text()
.map(str::trim)
.filter(|s| !s.is_empty())
.collect::<Vec<_>>()
.join(" ");
history.push(message);
}
let mut comments = Vec::new();
@@ -128,7 +139,7 @@ mod tests {
let expected = Entry {
messages: vec!["Folksam".to_string()],
history: vec!["De senaste 24 timmarna har <strong>9 personer</strong> sökt efter numret 0104754350. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst <strong>4786 personer</strong> sökt efter numret.".to_string()],
history: vec!["De senaste 24 timmarna har 9 personer sökt efter numret 0104754350. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst 4786 personer sökt efter numret.".to_string()],
comments: vec![
Comment {
datetime: "2018-05-09T12:31:39Z".parse::<DateTime<Utc>>().unwrap(),
@@ -172,7 +183,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![],
history: vec!["Du är den första de senaste 24 timmarna som söker efter detta nummer. Det tyder på att numret inte används av telefonförsäljare. Totalt har minst 301 personer sökt efter numret.".to_string()],
comments: vec![],
};
@@ -185,7 +196,7 @@ mod tests {
let expected = Entry {
messages: vec!["Alnö Design & Produktion AB".to_string()],
history: vec!["De senaste 24 timmarna har <strong>3 personer</strong> sökt efter numret 0702269893. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst <strong>4 personer</strong> sökt efter numret.".to_string()],
history: vec!["De senaste 24 timmarna har 3 personer sökt efter numret 0702269893. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst 4 personer sökt efter numret.".to_string()],
comments: vec![
Comment {
datetime: "2019-01-18T13:30:55Z".parse::<DateTime<Utc>>().unwrap(),
@@ -204,7 +215,7 @@ mod tests {
let expected = Entry {
messages: vec!["Tele2".to_string()],
history: vec!["De senaste 24 timmarna har <strong>1 personer</strong> sökt efter numret 0726443387. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst <strong>231 personer</strong> sökt efter numret.".to_string()],
history: vec!["De senaste 24 timmarna har 1 personer sökt efter numret 0726443387. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst 231 personer sökt efter numret.".to_string()],
comments: vec![
Comment {
datetime: "2018-10-31T17:48:27Z".parse::<DateTime<Utc>>().unwrap(),
@@ -223,7 +234,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![],
history: vec!["Du är den första de senaste 24 timmarna som söker efter detta nummer. Det tyder på att numret inte används av telefonförsäljare. Totalt har minst 38 personer sökt efter numret.".to_string()],
comments: vec![],
};
@@ -236,7 +247,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![],
history: vec!["Du är den första de senaste 24 timmarna som söker efter detta nummer. Det tyder på att numret inte används av telefonförsäljare. Totalt har minst 25 personer sökt efter numret.".to_string()],
comments: vec![],
};
@@ -249,7 +260,7 @@ mod tests {
let expected = Entry {
messages: vec![],
history: vec![],
history: vec!["Du är den första de senaste 24 timmarna som söker efter detta nummer. Det tyder på att numret inte används av telefonförsäljare. Totalt har minst 22 personer sökt efter numret.".to_string()],
comments: vec![],
};

View File

@@ -1,25 +1,36 @@
use std::str;
// use log::debug;
// use scraper::{Html, Selector};
use scraper::{Html, Selector};
use crate::context::Context;
use crate::probe::{Entry, Probe};
fn from_html(_document: &str) -> Result<Entry, ()> {
/*
fn from_html(document: &str) -> Result<Entry, ()> {
let html = Html::parse_document(document);
let messages = Vec::new();
let mut messages = Vec::new();
let history = Vec::new();
let comments = Vec::new();
let selector = Selector::parse("#toporganisations li").unwrap();
for element in html.select(&selector) {
let message = element
.text()
.map(str::trim)
.filter(|s| !s.is_empty())
.collect::<Vec<_>>()
.join(" ");
messages.push(message);
}
Ok(Entry {
messages,
history,
comments,
})
*/
Err(())
}
pub struct VemRingde;
@@ -50,40 +61,6 @@ impl Probe for VemRingde {
}
Err(_) => Err(()),
}
/*
if let Ok(page) = Page::from_html(&body) {
if !page.owners.is_empty() {
println!(" ägare:");
for owner in &page.owners {
println!(" * {} - {}", owner.title, owner.calls);
}
}
if !page.calls.is_empty() {
if !page.owners.is_empty() {
println!();
}
println!(" samtal:");
for call in &page.calls {
println!(" * {}: {}", call.date, call.who);
}
}
if page.owners.is_empty() && page.calls.is_empty() {
println!(" Inga samtal från {}", number);
}
} else {
if let Err(error) = Page::from_html(&body) {
debug!("vemringde: failed to parse page: {:#?}", error);
}
println!(" Failed to find any data");
}
*/
}
}
@@ -98,7 +75,7 @@ mod tests {
let document = include_str!("../../fixtures/vemringde/0104754350.html");
let expected = Entry {
messages: vec![],
messages: vec!["Folksam (5 samtal)".to_string()],
history: vec![],
comments: vec![],
};