Did a lot of things.
This commit is contained in:
47
_build.rs
Normal file
47
_build.rs
Normal file
@@ -0,0 +1,47 @@
|
||||
use std::env;
|
||||
use std::fs::read_dir;
|
||||
use std::fs::DirEntry;
|
||||
use std::fs::File;
|
||||
use std::io::Write;
|
||||
use std::path::Path;
|
||||
|
||||
fn main() {
|
||||
let out_dir = env::var("OUT_DIR").unwrap();
|
||||
let destination = Path::new(&out_dir).join("tests.rs");
|
||||
let mut test_file = File::create(&destination).unwrap();
|
||||
|
||||
// write_header(&mut test_file);
|
||||
|
||||
// let test_data_directories = read_dir("./tests/data/").unwrap();
|
||||
|
||||
/*
|
||||
for directory in test_data_directories {
|
||||
write_test(&mut test_file, &directory.unwrap());
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
fn write_header(test_file: &mut File) {
|
||||
write!(
|
||||
test_file,
|
||||
r#"
|
||||
use insta::assert_yaml_snapshot_matches;
|
||||
use whoareyou::*;
|
||||
"#
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn write_test(test_file: &mut File, directory: &DirEntry) {
|
||||
let directory = directory.path().canonicalize().unwrap();
|
||||
let path = directory.display();
|
||||
let test_name = format!("prefix_if_needed_{}", directory.file_name().unwrap().to_string_lossy());
|
||||
|
||||
write!(
|
||||
test_file,
|
||||
include_str!("./tests/test_template"),
|
||||
name = test_name,
|
||||
path = path
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
123
fixtures/eniro/0701807618.html
Normal file
123
fixtures/eniro/0701807618.html
Normal file
File diff suppressed because one or more lines are too long
106
fixtures/hitta/0701807618.html
Normal file
106
fixtures/hitta/0701807618.html
Normal file
File diff suppressed because one or more lines are too long
162
fixtures/konsumentinfo/0701807618.html
Normal file
162
fixtures/konsumentinfo/0701807618.html
Normal file
@@ -0,0 +1,162 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Telefon: 0701807618,+46701807618,0046701807618 - Konsumentinfo.se,konsumentinformation, konsument</title>
|
||||
<link href="/Content/css?v=iiqI13lBXkUM6VSOmdydyHDH090VHahihzwhXC8q94A1" rel="stylesheet" />
|
||||
<script src="/bundles/modernizr?v=inCVuEFe6J4Q07A0AcRsbJic_UE5MwpRMNGcOtk94TE1"></script>
|
||||
<meta name="robots" content="index,follow" />
|
||||
<meta name="description" content="Telefon: 0701807618,+46701807618,0046701807618,konsumentinformation, konsument" />
|
||||
<meta name="keywords" content="konsumentinfo,telefon,0701807618,+46701807618,0046701807618" />
|
||||
<meta property="og:title" content="Telefon: 0701807618,+46701807618,0046701807618 - Konsumentinfo.se,konsumentinformation, konsument" />
|
||||
<meta property="og:description" content="Telefon: 0701807618,+46701807618,0046701807618,konsumentinformation, konsument" />
|
||||
<meta property="og:url" content="http://konsumentinfo.se/telefonnummer/sverige/0701807618" />
|
||||
<link rel="canonical" href="http://konsumentinfo.se/telefonnummer/sverige/0701807618" />
|
||||
<meta name="google-site-verification" content="QqGHHRFDjLFocnfJh7kRqRCDJlPbhA6PTLjruhp6j8w" />
|
||||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({
|
||||
google_ad_client: "ca-pub-5116192787173638",
|
||||
enable_page_level_ads: true
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<script src="/bundles/jquery?v=DilzeZuJxdbQsfc_JOwsWB4VFDhTPM73urYeggaKdL81"></script>
|
||||
<script src="/bundles/jqueryval?v=WhRmI8vUVF186UwYB1zRP7-DwJzqpKlt0JksOBJvolw1"></script>
|
||||
|
||||
<script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
|
||||
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a href="/" class="navbar-brand">Konsument info</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav"><li class="dropdown"><a href="#" class="dropdown-toggle" id="dropdownCommonMenu5" data-toggle="dropdown">Register</a><ul class="dropdown-menu" role="menu" aria-labelledby="dropdownCommonMenu2"><li role="menubar"><a href="/telefonnummer/area">Telefonnummer</a></li><li role="menubar"><a href="/foretag/register/sverige">Företag</a></li></ul></li><li class="dropdown"><a href="#" class="dropdown-toggle" id="dropdownCommonMenu10" data-toggle="dropdown">Information</a><ul class="dropdown-menu" role="menu" aria-labelledby="dropdownCommonMenu2"><li role="menubar"><a href="/information/hus-och-hem">Hus & Hem</a></li></ul></li><li class="dropdown"><a href="#" class="dropdown-toggle" id="dropdownCommonMenu8" data-toggle="dropdown">Om</a><ul class="dropdown-menu" role="menu" aria-labelledby="dropdownCommonMenu2"><li role="menubar"><a href="/om-oss/kontakt">Kontakta oss</a></li></ul></li></ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="/Account/logon" id="Logon">Logga in</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container body-content">
|
||||
<div class="bg-danger text-center">
|
||||
<b>
|
||||
Hjälp oss. Ge ett bidrag på valfritt belopp. <a href="/info/meddelanden/bidrag">Vi behöver din hjälp. Läs mer här.</a>
|
||||
</b>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5116192787173638" data-ad-slot="3803063351" data-ad-format="auto"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-sm-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h1>0701807618</h1>
|
||||
0046701807618 alt: +46701807618
|
||||
<br />
|
||||
<br />
|
||||
Vi har ingen information om vem numret tillhör.
|
||||
<br />
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<h4>Numret har inga anteckningar gjorda av våra besökare.</h4>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<div id="formnoteinput">
|
||||
Vet du vem numret tillhör? / vad vet du om detta telefonnummer?
|
||||
<br />
|
||||
<form action="/inputdata/KiPhoneNumberNoteAdd" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#divInsertStatus" id="form0" method="post"><input id="textnumber" name="textnumber" type="hidden" value="0046701807618" /><input id="texthashid" name="texthashid" type="hidden" value="turtpf04hfuvive1ahxr3fum" /> <div class="row">
|
||||
<div class="col-md-12">
|
||||
<textarea cols="20" id="textboxinfo" name="textboxinfo" placeholder="Information om numret" rows="2" style="width: 100%; height: 150px;"></textarea>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<b>Name:</b> (Vill du vara anonym? ange bara Anonym.) <input id="name" name="name" type="text" value="Anonym" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<b>Epost:</b> <input id="epost" name="epost" type="text" value="" /> Du måste ange en fungerande e-post adress. Vi kommer att skicka ut ett e-post som du måste bekräfta innan ditt inlägg kommer att publiceras. Din e-post adress kommer inte att publiceras på sidan utan används endast för att verifiera så att inlägget inte är gjort utav en robot.
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12 col-xs-12"></div>
|
||||
<div class="col-lg-6">
|
||||
<b>Jag har läst igenom och godkänner <a href="/about/sv_se/villkor/regler">reglerna</a></b>
|
||||
<input id="rulesisok" name="rulesisok" type="checkbox" value="true" /><input name="rulesisok" type="hidden" value="false" />
|
||||
</div>
|
||||
<br />
|
||||
<div class="col-md-3 col-xs-12">
|
||||
<input type="submit" value="Publicera inlägget" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-12 col-xs-12">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div id="divInsertStatus"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5116192787173638" data-ad-slot="5000594950" data-ad-format="auto"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-12">
|
||||
<div class="panel-group">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<h3>10 senaste besökta nummer</h3><a href="/telefonnummer/sverige/0765790932">0765790932</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0761400942">0761400942</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0706423599">0706423599</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0798977475">0798977475</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0706269427">0706269427</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0700719051">0700719051</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0734667401">0734667401</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0730071731">0730071731</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0791577249">0791577249</a> - Vet du något om detta nummer?<br><a href="/telefonnummer/sverige/0763925840">0763925840</a> - Vet du något om detta nummer?<br>Informationen uppdateras varje minut </div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
funktionen är under uppbyggnad </div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
funktionen är under uppbyggnad </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-google-banner">
|
||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-5116192787173638" data-ad-slot="8947973355" data-ad-format="auto"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<footer>
|
||||
<p>© 2019 - Powered by <a href="http://www.zel.se">Zel Systems</a></p>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="/bundles/bootstrap?v=-g7cxTWQV6ve_iRyKtg7LoBytQltgj_w8zTNeaLaBc41"></script>
|
||||
<script>
|
||||
(function (i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
|
||||
(i[r].q = i[r].q || []).push(arguments)
|
||||
}, i[r].l = 1 * new Date(); a = s.createElement(o),
|
||||
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
|
||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
ga('create', 'UA-62398375-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
172
fixtures/telefonforsaljare/0701807618.html
Normal file
172
fixtures/telefonforsaljare/0701807618.html
Normal file
@@ -0,0 +1,172 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
|
||||
<head>
|
||||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({
|
||||
google_ad_client: "ca-pub-3371593287308651",
|
||||
enable_page_level_ads: true
|
||||
});
|
||||
</script><meta http-equiv="Content-Language" content="sv"><title>0701807618 - Har 070-180 76 18 ringt? | Nummerupplysning</title><meta name="description" content= "Har du fått telefonsamtal från 070-180 76 18? Se vem som äger 0701807618 och få mer information om numret." /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"><link href='https://fonts.googleapis.com/css?family=Titillium+Web|Noto+Sans|Open+Sans' rel='stylesheet' type='text/css'><meta name="google-site-verification" content="ih04r6quT5D5lp-Zunanx_Mz7sIetQumJdqd4zNyQoc" /><link rel="stylesheet" type="text/css" href="/style.css?n" /><meta property="og:site_name" content="Telefonförsäljare.nu"/><meta property="og:url" content="http://www.telefonforsaljare.nu"/>
|
||||
</head>
|
||||
<body><div class="container"><header><div class="row"><div id="header"><a href="/"><img src="/img/telefonforsaljare2.png" alt="Telefonförsäljare" id="headerimg"></a><h2><a href="/">Nummerupplysning</a></h2><h3>Vem ringde dig?</h3><span id="topbr"> </span></div><div id="forms">
|
||||
<form class="top" action="?" method="post" style="float: left;">
|
||||
<div>
|
||||
<div class="input-group input-group-lg">
|
||||
<input class="form-control" placeholder="Sök telefonnummer" type="tel" id="nr" name="nr" value="0701807618" />
|
||||
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn-primary " id="send">Sök</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<form id="right" action="?" method="post" style="float: right;clear: right;">
|
||||
|
||||
<div class="fb-like" data-send="false" data-layout="button_count" data-width="90" data-show-faces="false" data-action="like"></div>
|
||||
</form>
|
||||
|
||||
</div></div></header><article><div class="row"><div id="content"><h1>Har <a href="/telefonnummer/0701807618/">070-180 76 18</a> ringt dig?</h1><div class="adsbox">
|
||||
<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<!-- TF.nu -->
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-3371593287308651"
|
||||
data-ad-slot="8449417244"
|
||||
data-ad-format="rectangle"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<p>Numret är ett mobilnummer och använder operatören Telia Sverige AB.</p>
|
||||
<div itemscope itemtype="//data-vocabulary.org/Review-aggregate">
|
||||
<meta itemprop="rating" content="2.5"/>
|
||||
<meta itemprop="votes" content="1">
|
||||
<meta itemprop="count" content="1"><p>De senaste 24 timmarna har <strong>1 personer</strong> sökt efter numret 0701807618. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst <strong>2 personer</strong> sökt efter numret.</p><p>Sökningar efter 0701807618 de senaste två veckorna:</p><img class="number-graph" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="http://chart.apis.google.com/chart?cht=lc&chd=t:0,0,0,0,0,0,0,0,0,0,0,0,0,0|1,0,0,0,0,0,0,0,0,0,0,0,0,0,1&chxt=x,y&chxl=0:|17/1|24/1|25/1|26/1|27/1|28/1|29/1|30/1|31/1|1/2|2/2|3/2|4/2|5/2|6/2|1:|||1&chs=600x160&chds=0,1&chm=b,5bb8ff,0,1,0|b,AAEEAA,1,2,0|b,FFEE99,2,3,0|b,FFAAAA,3,4,0&chco=ffffff,ffffff,ffffff,ffffff,ffffff&chls=1,1,0|1,1,0|1,1,0|1,1,0|1,1,0&chf=c,lg,90,ffffff,0.9,ffffff,0.3" /><script>
|
||||
function init() {
|
||||
var imgDefer = document.getElementsByTagName('img');
|
||||
for (var i=0; i<imgDefer.length; i++) {
|
||||
if(imgDefer[i].getAttribute('data-src')) {
|
||||
imgDefer[i].setAttribute('src',imgDefer[i].getAttribute('data-src'));
|
||||
} } }
|
||||
window.onload = init;
|
||||
</script><p class="overAds">Kommentera ditt samtal från <span itemprop="itemreviewed">070-180 76 18</span> nedan:</p></div>
|
||||
|
||||
<!-- 1 -->
|
||||
<h3 id="rapportera_nummer">Har telefonförsäljare från 0701807618 ringt dig?</h3>
|
||||
|
||||
<div class="well well-small">
|
||||
<form action="?rapportera_0701807618" method="post" style="max-width: 400px;">
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label for="foretagsnamn">Namn på företaget:</label>
|
||||
<input class="form-control" type="text" id="foretagsnamn" name="namn" value="" placeholder="Vilket företag ringde de från?">
|
||||
|
||||
<input class="form-control" type="hidden" name="nummer" id="foretagsnummer" placeholder="Numret som de använde" value="0701807618" >
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="rating-input-1">Betygsätt samtalet (1-5):</label>
|
||||
<br>
|
||||
<span class="rating">
|
||||
<input type="radio" class="rating-input"
|
||||
id="rating-input-1-5" name="rating-input-1" value="5"/>
|
||||
<label for="rating-input-1-5" class="rating-star"></label>
|
||||
<input type="radio" class="rating-input"
|
||||
id="rating-input-1-4" name="rating-input-1" value="4"/>
|
||||
<label for="rating-input-1-4" class="rating-star"></label>
|
||||
<input type="radio" class="rating-input"
|
||||
id="rating-input-1-3" name="rating-input-1" value="3" checked/>
|
||||
<label for="rating-input-1-3" class="rating-star"></label>
|
||||
<input type="radio" class="rating-input"
|
||||
id="rating-input-1-2" name="rating-input-1" value="2"/>
|
||||
<label for="rating-input-1-2" class="rating-star"></label>
|
||||
<input type="radio" class="rating-input"
|
||||
id="rating-input-1-1" name="rating-input-1" value="1"/>
|
||||
<label for="rating-input-1-1" class="rating-star"></label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label for="kommentar">Skriv en kortare kommentar kring samtalet:</label>
|
||||
<textarea class="form-control" name="kommentar" placeholder="Kommentera samtalet du fick" id="kommentar" ></textarea>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="signatur">Ditt namn:</label>
|
||||
<input value="" class="form-control" type="text" name="signatur" placeholder="Ditt namn/Alias" id="signatur">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="spam">För att förhindra spam:</label>
|
||||
<div class="g-recaptcha" data-sitekey="6LdU3A8UAAAAAIQhqIAsCC15YpS7RjihYf1nWItj"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
<input type="submit" name="rapportera" class="form-control" value="Rapportera telefonförsäljare" id="submit">
|
||||
|
||||
<input type="hidden" name="email" ></form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h3>Tips</h3>
|
||||
<p>Om du vill slippa telefonförsäljare hem skaffa ett <a href="/gratis-kontantkort/" target="_blank">gratis kontantkort</a>. Det eftersom de ofta kollar ditt nummer på nummerupplysningen och då ringer till kontantkortet i stället. Vi har testat detta erbjudande själva och det är helt gratis utan förpliktelser.
|
||||
Ett annat tips är att ringa via mobilt bredband & Skype.
|
||||
<br/>
|
||||
Telemarketing är ett vanligt jobb bland ungdomar. Eftersom de jobbar provisionsbaserat kan de då och då säga till sin arbetsgivare att de sålt en produkt utan att de gjort det och kunden får då en faktura trots att så inte var överenskommet. Du ska då alltid meddela företaget att du bestrider fakturan. <a href="/gratis-kontantkort/" target="_blank">Få det kostnadsfria kontantkortet hemskickat till dörren</a>
|
||||
.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Numret 0701807618 kan även skrivas som 070-1807618 eller 0701-807618.<p>Internationell formatering av numret:<br>+46701807618<br>0046701807618<br></p></p>
|
||||
|
||||
<h3>Telefonnummer som liknar 0701807618</h3>
|
||||
<div class="well well-small">
|
||||
<a href="/telefonnummer/0701807608/">0701807608</a> - <a href="/telefonnummer/0701807609/">0701807609</a> - <a href="/telefonnummer/0701807610/">0701807610</a> - <a href="/telefonnummer/0701807611/">0701807611</a> - <a href="/telefonnummer/0701807612/">0701807612</a> - <a href="/telefonnummer/0701807613/">0701807613</a> - <a href="/telefonnummer/0701807614/">0701807614</a> - <a href="/telefonnummer/0701807615/">0701807615</a> - <a href="/telefonnummer/0701807616/">0701807616</a> - <a href="/telefonnummer/0701807617/">0701807617</a> - <a href="/telefonnummer/0701807618/">0701807618</a> - <a href="/telefonnummer/0701807619/">0701807619</a> - <a href="/telefonnummer/0701807620/">0701807620</a> - <a href="/telefonnummer/0701807621/">0701807621</a> - <a href="/telefonnummer/0701807622/">0701807622</a> - <a href="/telefonnummer/0701807623/">0701807623</a> - <a href="/telefonnummer/0701807624/">0701807624</a> - <a href="/telefonnummer/0701807625/">0701807625</a> - <a href="/telefonnummer/0701807626/">0701807626</a> - <a href="/telefonnummer/0701807627/">0701807627</a></div></div>
|
||||
</article>
|
||||
<footer>
|
||||
<div id="footer">
|
||||
<p>© 2019 Telefonförsäljare.nu - Se vem som ringde - <a href="/privacy.php">Privacy policy</a></p><p><a href="/riktnummer.php">Riktnummer</a> - <a href="/landsnummer.php">Landsnummer</a> <a href="/sitemap.php">Sidkarta</a></p>
|
||||
<p style="color: grey;">Kontakt: <i>telefonforsaljare(@)gmail.com</i> </p></div>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-2645096-25']);
|
||||
|
||||
_gaq.push(['_setCustomVar',
|
||||
1,
|
||||
'Nummer',
|
||||
'nej',
|
||||
1
|
||||
]);
|
||||
|
||||
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
</script>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="https://www.google.com/recaptcha/api.js" async></script>
|
||||
<script src="https://tools.ascontentcloud.com/cgi-bin/publisher/tools/asjs.pl?id=10824"></script>
|
||||
</body>
|
||||
</html>
|
||||
370
fixtures/vemringde/0701807618.html
Normal file
370
fixtures/vemringde/0701807618.html
Normal file
@@ -0,0 +1,370 @@
|
||||
<!DOCTYPE html><html xmlns='http://www.w3.org/1999/xhtml'
|
||||
xmlns:fb="http://www.facebook.com/2008/fbml"
|
||||
xmlns:og="http://opengraphprotocol.org/schema/"
|
||||
xml:lang="sv-SE"
|
||||
lang="sv-SE"
|
||||
version="HTML+RDFa 1.0">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Har 0701807618 ringt dig? | Vem ringde – missat samtal</title> <meta charset="UTF-8">
|
||||
<meta name="google-site-verification" content="9pRxF8v7Of7PgiQ2e5icbJdHsT-PcnwGYBKAkTfosLQ" >
|
||||
<meta name="keywords" content="0701807618,+46701807618,0046701807618,vemringde.se,vem ringde,telefonförsäljare,telemarketing" >
|
||||
<meta name="description" content="Har 0701807618 ringt dig?" >
|
||||
<meta name="robots" content="noindex, follow" > <meta property="og:title" content="Har 0701807618 ringt dig?"/>
|
||||
<meta property="og:type" content="article"/>
|
||||
<meta property="og:url" content="http://vemringde.se/?q=0701807618"/>
|
||||
<meta property="og:site_name" content="Vemringde.se" />
|
||||
<meta property="og:email" content="info@vemringde.se"/>
|
||||
<meta property="fb:page_id" content="29758225689" /><meta property="fb:app_id" content="155699657257"/><meta property="fb:admins" content="672184208" />
|
||||
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="http://s.vemringde.se/js/vemringde-0.1b.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<!--
|
||||
$(document).ready(function() {
|
||||
$("#callDate").datepicker({"dateFormat":"yy-mm-dd","dayNames":["S\u00f6ndag","M\u00e5ndag","Tisdag","Onsdag","Torsdag","Fredag","L\u00f6rdag"],"dayNamesMin":["S\u00f6","M\u00e5","Ti","On","To","Fr","L\u00f6"],"dayNamesShort":["S\u00f6n","M\u00e5n","Tis","Ons","Tors","Fre","L\u00f6r"],"firstDay":1,"maxDate":0,"monthNames":["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],"monthNamesShort":["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sept","Okt","Nov","Dec"],"nextText":"»","prevText":"«","showOtherMonths":true,"selectOtherMonths":true});
|
||||
});
|
||||
//-->
|
||||
|
||||
</script> <link href="/favicon.ico" rel="icon" type="image/vnd.microsoft.icon" >
|
||||
<link href="http://s.vemringde.se/css/template.css" media="screen" rel="stylesheet" type="text/css" >
|
||||
<link href="/apple-touch-icon-precomposed.png" rel="apple-touch-icon-precomposed" >
|
||||
<link href="/apple-touch-icon-72x72-precomposed.png" rel="apple-touch-icon-precomposed" sizes="72x72" >
|
||||
<link href="/apple-touch-icon-114x114-precomposed.png" rel="apple-touch-icon-precomposed" sizes="114x114" >
|
||||
<link href="http://vemringde.se/?q=0701807618" rel="canonical" >
|
||||
<link href="/rss?q=0701807618" rel="alternate" type="application/rss+xml" title="Feed for 0701807618 | Vemringde.se" >
|
||||
<link href="/rss?q=0701807618&type=atom" rel="alternate" type="application/atom+xml" title="Atom feed for 0701807618 | Vemringde.se" > <script type="text/javascript">
|
||||
//<!--
|
||||
(function() {
|
||||
var s = document.createElement("script"), t = document.getElementsByTagName("script")[0];
|
||||
|
||||
s.type = "text/javascript";
|
||||
s.async = true;
|
||||
s.src = "http://api.flattr.com/js/0.6/load.js?mode=auto&uid=24718&language=sv_SE&category=text";
|
||||
|
||||
t.parentNode.insertBefore(s, t);
|
||||
})(); //-->
|
||||
</script>
|
||||
<script type="text/javascript" src="http://apis.google.com/js/plusone.js">
|
||||
//<!--
|
||||
{lang: 'sv'} //-->
|
||||
</script>
|
||||
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/blogg/wp-content/themes/vemringde/style.css">
|
||||
<link rel="stylesheet" type="text/css" href="/blogg/wp-content/themes/vemringde/responsive.css">
|
||||
<script src="//s1.adform.net/banners/scripts/adx.js" async defer></script>
|
||||
|
||||
|
||||
</head>
|
||||
<body class="containerrr">
|
||||
<div id='wrapper' class="the-layout">
|
||||
<div id='topbar-search'>
|
||||
<div class='inside'>
|
||||
<a id='logo' href='/'>
|
||||
Vemringde.se
|
||||
</a>
|
||||
<div id='mainsearch-div'>
|
||||
<form name='mainsearch' id='mainsearch' method='get' enctype="application/x-www-form-urlencoded" accept-charset="UTF-8" action='/'>
|
||||
<div id="wrapper-q">
|
||||
<input type='search' name='q' id='q' value='0701807618' maxlength='100' />
|
||||
</div>
|
||||
<input id="search-submit" type="submit" value="Sök" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id='main'>
|
||||
<!--[if lte IE 6]>
|
||||
<style type="text/css">
|
||||
#ie6msg{border:3px solid #090; margin:0 0 20px 0; background:#cfc; color:#000;}
|
||||
#ie6msg h4{margin:8px; padding:0;}
|
||||
#ie6msg p{margin:8px; padding:0;}
|
||||
#ie6msg p a.getie7{font-weight:bold; color:#006;}
|
||||
#ie6msg p a.ie6expl{font-weight:normal; color:#006;}
|
||||
</style>
|
||||
<div id="ie6msg">
|
||||
<h4>Tips från oss: Du har en gammal version av webbläsaren Internet Explorer.</h4>
|
||||
<p>
|
||||
För att få en bättre och säkrare upplevelse på nätet rekommenderar vi att du <a class="getie7" href="http://www.microsoft.com/sverige/windows/downloads/ie/getitnow.mspx" target="_blank">hämtar en nyare version av Internet Explorer</a>. Uppgraderingen är kostnadsfri.
|
||||
Sitter du på jobb och inte har kontroll över din dator själv bör du kontakta din IT-ansvarige.
|
||||
</p>
|
||||
<p>
|
||||
Vi kan också <b>varmt</b> rekommendera dig att prova någon av följade alternativa webbläsare <a href="http://www.google.com/chrome">Google Chrome</a>, <a href="http://www.opera.com">Opera</a>, <a href="http://mozilla.com">FireFox</a> eller <a href="http://www.apple.com/safari/download/">Safari</a>
|
||||
</p>
|
||||
<p>
|
||||
<a class="ie6expl" href="http://labs.finn.no/blog/finn-anbefaler-ie6-brukere-a-oppgradere-sin-nettleser" target="_blank">Den här uppmaningen har sitt ursprung i Norge och på en av deras största sajter, finn.no, kan du läsa om varför du bör uppgradera.</a>
|
||||
</p>
|
||||
</div>
|
||||
<![endif]--> <div id='container'>
|
||||
<div id='content' class="search-content">
|
||||
|
||||
|
||||
|
||||
<div class="called-content">
|
||||
|
||||
<div class="desktop-googlead-numberpage">
|
||||
<div class="ad above_org">
|
||||
<!-- Vemringde.se ad Desktop Above Organisation Panorama #8cc4c46a3f7b7a519913f705bb7a0827 -->
|
||||
<script src="https://lwadm.com/lw/pbjs?pid=7158118B-6090-4592-BC9F-02A981915ECE"
|
||||
onload="lwhb.load(this)"
|
||||
async="true"
|
||||
data-tid="Vemringde.se_AllTopPano_980x240/120_prebid"
|
||||
data-pbid="7158118B-6090-4592-BC9F-02A981915ECE">
|
||||
</script>
|
||||
|
||||
<!-- end ad code -->
|
||||
</div> </div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 class="heading-didcall">Har 0701807618 ringt dig?</h1>
|
||||
<div id='savecall'>
|
||||
<form enctype="application/x-www-form-urlencoded" action="/ajax/savecall" accept-charset="utf-8" method="post"><ol class="table noBorder"><li>
|
||||
|
||||
<input type="hidden" name="number" value="46701807618" id="number">
|
||||
|
||||
<input type="text" name="website" id="website" value="">
|
||||
<div class="w50">
|
||||
<input type="text" name="organisation" id="organisation" value="" placeholder="Företagsnamn" class="required" maxlength="50">
|
||||
<p style="visibility:hidden;" class="hint"><a href="#" onclick='javascript:document.getElementById("organisation").value="okänd";return false;'>Jag vet inte</a></p></div>
|
||||
<div class="w30">
|
||||
<input type="text" name="callDate" id="callDate" value="2019-02-06" class="required dateISO"></div>
|
||||
<div class="w20">
|
||||
<input type="submit" name="spara" id="spara" value=" Spara " class="submit"></div></li></ol></form> <script type='text/javascript'>$('#organisation').tipsy();</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="inline-share-buttons">
|
||||
<p class="small grey quiet">Gilla och dela vår info om 0701807618</p>
|
||||
<g:plusone></g:plusone>
|
||||
<fb:like href="http://vemringde.se/?q=0701807618" send="false" layout="button_count" width="100" show_faces="false" font=""></fb:like>
|
||||
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://vemringde.se/?q=0701807618" data-count="none" data-via="Vemringde" data-related="carlfredrikhero:Carl-Fredrik driver vemringde.se">Tweet</a>
|
||||
<!--<a style="display:none;" class="FlattrButton"
|
||||
href="http://vemringde.se/?q=0701807618"
|
||||
data-flattr-button="compact"
|
||||
title="Har 0701807618 ringt dig? - Vemringde.se">
|
||||
0701807618 är listad på vemringde.se. Vemringde.se listar telefonnummer som ringer oönskade samtal.
|
||||
</a>-->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Owner info -->
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
function trackOutboundLink(link, category, action) {
|
||||
|
||||
try {
|
||||
_gaq.push(['_trackEvent', category , action]);
|
||||
} catch(err){}
|
||||
|
||||
setTimeout(function() {
|
||||
document.location.href = link.href;
|
||||
}, 100);
|
||||
}
|
||||
</script>
|
||||
<h1>Inga samtal från 0701807618, har du provat <a onclick="trackOutboundLink(this, 'Utgående länkar', 'eniro.se'); return false;" href="http://www.eniro.se/query?search_word=0701807618&geo_area=&what=all" class='eniro' rel='nofollow'>Eniro</a>?</h1>
|
||||
|
||||
<h3>Varför?</h3>
|
||||
<p>Det kan finns flera anledningar:</p>
|
||||
<ul>
|
||||
<li>Ägaren är en privatperson, har du provat söka på <strong><a onclick="trackOutboundLink(this, 'Utgående länkar', 'eniro.se'); return false;" href="http://www.eniro.se/query?search_word=0701807618&geo_area=&what=all" class='eniro' rel='nofollow'>Eniro</a></strong>?</li>
|
||||
<li>Ägaren av numret använder inte telemarketing i sin verksamhet</li>
|
||||
<li>Ingen har rapporterat in det
|
||||
, om du anser att det behöver göras;<br />
|
||||
<strong>bli den första</strong>, fyll i formuläret under rubriken "<em>Har 0701807618 ringt dig?</em>"</li>
|
||||
</ul>
|
||||
|
||||
<h3>Du kan också gå till:</h3>
|
||||
<ul>
|
||||
<li><a href='/'>Startsidan</a></li>
|
||||
<li><a href='/blogg'>Bloggen</a></li>
|
||||
<li><a href='/blogg/fragor-och-svar'>Frågor och Svar</a></li>
|
||||
</ul>
|
||||
|
||||
<ol id='comments'></ol>
|
||||
|
||||
<div class="mob-googlead-numberpage-comment">
|
||||
<!--<script data-adfscript="adx.adform.net/adx/?mid=632503"></script>-->
|
||||
<div class="ad below_comments_numberpage">
|
||||
<!-- Vemringde.se ad Mobile below comments on number page #88c448947059e2af5e8424c6716bedc9 -->
|
||||
<!-- Vemringde.se_Mobile3_320x320/300x250
|
||||
(320x320, 320x250, 320x300) -->
|
||||
<script src='https://lwadm.com/lw/pbjs?pid=7158118b-6090-4592-bc9f-02a981915ece'
|
||||
onload='lwhb.load(this)'
|
||||
async='true'
|
||||
data-tid='vemringde_mobile3'
|
||||
data-cnt='true'
|
||||
data-pbid='7158118b-6090-4592-bc9f-02a981915ece'
|
||||
>
|
||||
</script>
|
||||
<!-- end ad code -->
|
||||
</div> </div>
|
||||
|
||||
<div class="ad bottom_panorama">
|
||||
<!-- Vemringde.se ad Desktop Bottom Panorama #a8a79efadab2edc39253c0a408432021 -->
|
||||
<script src="https://lwadm.com/lw/pbjs?pid=7158118B-6090-4592-BC9F-02A981915ECE"
|
||||
onload="lwhb.load(this)"
|
||||
async="true"
|
||||
data-tid="Vemringde.se_BotPano_980x240/120_prebid"
|
||||
data-pbid="7158118B-6090-4592-BC9F-02A981915ECE">
|
||||
</script>
|
||||
<!-- end ad code -->
|
||||
</div> </div>
|
||||
</div>
|
||||
|
||||
<div id='primary' class='module-area'>
|
||||
<div class='module'>
|
||||
<h4>Vem ringde</h4>
|
||||
<ul class='list'>
|
||||
<li class="em">Riktnummer <strong>070</strong> = <em>Mobiltelefoner</em></li> <li>Fyll i vem som ringde till vänster, och spara!</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id='secondary' class='module-area'>
|
||||
<div class='module'>
|
||||
<h4>Dela med dig av Vemringde.se</h4>
|
||||
<fb:like-box href="http://www.facebook.com/vemringde" width="300" show_faces="false" border_color="#fff" stream="false" header="false"></fb:like-box>
|
||||
<p style="padding-left:8px;"><a href="http://twitter.com/Vemringde" class="twitter-follow-button">Follow @Vemringde</a></p>
|
||||
</div>
|
||||
<div class='module'>
|
||||
<h4>Annons</h4>
|
||||
<div class="ad right_col_number">
|
||||
<!-- Vemringde.se ad Desktop Right Column Number (Sidebar 1-2) #f1c82d223eb99ca1f30cbe85fdb1cc16 -->
|
||||
<script src="https://lwadm.com/lw/pbjs?pid=7158118B-6090-4592-BC9F-02A981915ECE"
|
||||
onload="lwhb.load(this)"
|
||||
async="true"
|
||||
data-tid="Vemringde.se_Sidebar1_300x250/250x360_prebid"
|
||||
data-pbid="7158118B-6090-4592-BC9F-02A981915ECE">
|
||||
</script>
|
||||
|
||||
<script src="https://lwadm.com/lw/pbjs?pid=7158118B-6090-4592-BC9F-02A981915ECE"
|
||||
onload="lwhb.load(this)"
|
||||
async="true"
|
||||
data-tid="Vemringde.se_Sidebar2_300x250/250x360_prebid"
|
||||
data-pbid="7158118B-6090-4592-BC9F-02A981915ECE">
|
||||
</script>
|
||||
<!-- end ad code -->
|
||||
</div> </div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('.comment').find('.comment-rating a').attr('clickattr',0);
|
||||
|
||||
$('.comment').find('.comment-rating a') .click(function() {
|
||||
|
||||
/*if($(this).hasClass('positive') || $(this).hasClass('negative'))
|
||||
{
|
||||
var aa = $(this).attr('clickattr');
|
||||
if(aa == 1) {
|
||||
$(this).attr('clickattr',0);
|
||||
} else {
|
||||
$(this).attr('clickattr',1);
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
var posClickAttr = $(this).parent('.comment-rating').find('.positive').attr('clickattr');
|
||||
|
||||
var negClickAttr = $(this).parent('.comment-rating').find('.negative').attr('clickattr');
|
||||
|
||||
if(posClickAttr == 1 || negClickAttr == 1) {
|
||||
$('.tipsy-west').css('display','none');
|
||||
}
|
||||
$(this).attr('clickattr',1);
|
||||
|
||||
});
|
||||
});
|
||||
</script> </div>
|
||||
<div id='footer'>
|
||||
<hr />
|
||||
<p class='col w50 small grey'>
|
||||
<span style="color: #000; font-family: Verdana;font-weight: bold;">POWERED BY</span> <a href="https://www.citycloud.se" target="_blank" title="Cloud Computing"><img src="http://s.vemringde.se//images/citycloud.png" /></a>
|
||||
</p>
|
||||
<p class='col w50 right small grey'><span class="w50 right grey">Hitta unik information om oregistrerade nummer eller telefonförsäljare.</span></p>
|
||||
</div>
|
||||
<div id='topbar'>
|
||||
<div id='topbar-ribbon'>
|
||||
<div id="access" role="navigation">
|
||||
<div class='inside'>
|
||||
<div class="nav">
|
||||
<div class="nav-toggle"><span></span><span></span><span></span></div>
|
||||
<div class="menu-header">
|
||||
<ul id="topmenu">
|
||||
<li><a href='/blogg'>Blogg & mer information</a></li>
|
||||
<li><a href='/blogg/i-din-telefon'>I din telefon</a></li>
|
||||
<li><a href='/blogg/samarbeten'>Samarbetspartners</a></li>
|
||||
<li class='loginbox'><a href='#' onclick='javascript:document.getElementById("loginbox").style.display = "block";'>Logga in</a>
|
||||
<div id='loginbox' class=''>
|
||||
<div id='locallogin'>
|
||||
<h6>Logga in</h6>
|
||||
<form enctype="application/x-www-form-urlencoded" accept-charset="utf-8" method="post" action="/user/login/"><ol class="swb_form">
|
||||
<li><label for="email" class="required">E-mail</label>
|
||||
|
||||
<input type="text" name="email" id="email" value=""></li>
|
||||
<li><label for="password" class="required">Lösenord</label>
|
||||
|
||||
<input type="password" name="password" id="password" value=""></li>
|
||||
<li>
|
||||
<input type="submit" name="submit" id="submit" value=" Logga in "></li></ol></form> <p style='clear:both'><a href='/user/lostpassword'>Glömt lösenord?</a><br />
|
||||
<a href='/user/register'>Bli medlem</a></p>
|
||||
</div>
|
||||
<div id='foreignlogin'>
|
||||
<h6>Eller använd</h6>
|
||||
<p><a href='/facebook'><img src='http://developers.facebook.com/images/devsite/login-button.png' width='154' height='22' /></a><br />
|
||||
<a href='/twitter'><img src='http://a0.twimg.com/images/dev/buttons/sign-in-with-twitter-d.png' width='151' height='24' /></a></p>
|
||||
<p>Använd ditt Facebook- eller Twitterkonto. Det är det ännu enklare, du behöver inget nytt lösenord, din bild och email-adress syns aldrig för andra användare.</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- Facebook API -->
|
||||
<div id="fb-root"></div>
|
||||
<script>
|
||||
window.fbAsyncInit = function() {
|
||||
FB.init({appId: '155699657257', status: true, cookie: true,
|
||||
xfbml: true});
|
||||
};
|
||||
(function() {
|
||||
var e = document.createElement('script'); e.async = true;
|
||||
e.src = document.location.protocol +
|
||||
'//connect.facebook.net/sv_SE/all.js'
|
||||
document.getElementById('fb-root').appendChild(e);
|
||||
}());
|
||||
</script>
|
||||
|
||||
<!-- Google Tracking -->
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-5081449-1']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
</script>
|
||||
<script>
|
||||
jQuery(document).ready(function() {
|
||||
jQuery(".nav-toggle").click(function() {
|
||||
jQuery(this).toggleClass("is-active");
|
||||
jQuery(".menu-header").toggleClass("is-visible");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
5
src/lib.rs
Normal file
5
src/lib.rs
Normal file
@@ -0,0 +1,5 @@
|
||||
mod context;
|
||||
mod probe;
|
||||
|
||||
pub use crate::context::Context;
|
||||
pub use crate::probe::*;
|
||||
32
src/main.rs
32
src/main.rs
@@ -2,12 +2,7 @@ use std::process::Command;
|
||||
|
||||
use fern::colors::{Color, ColoredLevelConfig};
|
||||
use structopt::StructOpt;
|
||||
|
||||
mod context;
|
||||
mod probe;
|
||||
|
||||
use crate::context::Context;
|
||||
use crate::probe::*;
|
||||
use whoareyou::*;
|
||||
|
||||
#[derive(Debug, StructOpt)]
|
||||
#[structopt(name = "whoareyou", about = "Search for swedish phone numbers.")]
|
||||
@@ -57,7 +52,7 @@ fn main() {
|
||||
|
||||
config.apply().expect("failed to init fern");
|
||||
|
||||
let mut probes: Vec<Box<Probe>> = vec![
|
||||
let mut probes: Vec<Box<dyn Probe>> = vec![
|
||||
Box::new(Eniro),
|
||||
Box::new(Hitta),
|
||||
Box::new(KonsumentInfo),
|
||||
@@ -77,9 +72,28 @@ fn main() {
|
||||
} else {
|
||||
let mut ctx = Context::new();
|
||||
|
||||
let mut first = true;
|
||||
|
||||
for probe in &mut probes {
|
||||
if let Ok(entry) = probe.search(&mut ctx, &opt.number) {
|
||||
print!("{}", entry);
|
||||
let data = if let Some(cache) = ctx.cache_get(probe.provider(), &opt.number) {
|
||||
String::from_utf8(cache.data).unwrap()
|
||||
} else if let Ok(data) = probe.fetch(&opt.number) {
|
||||
ctx.cache_set(probe.provider(), &opt.number, data.as_bytes())
|
||||
.expect("wut?! why not?!");
|
||||
|
||||
data
|
||||
} else {
|
||||
continue;
|
||||
};
|
||||
|
||||
if let Ok(entry) = probe.parse(&data) {
|
||||
if first {
|
||||
print!("{}\n{}", probe.provider(), entry);
|
||||
|
||||
first = false;
|
||||
} else {
|
||||
print!("\n{}\n{}", probe.provider(), entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,6 @@ mod konsument_info;
|
||||
mod telefonforsaljare;
|
||||
mod vem_ringde;
|
||||
|
||||
use crate::context::Context;
|
||||
|
||||
pub use self::eniro::Eniro;
|
||||
pub use self::hitta::Hitta;
|
||||
pub use self::konsument_info::KonsumentInfo;
|
||||
@@ -79,6 +77,9 @@ impl fmt::Display for Comment {
|
||||
}
|
||||
|
||||
pub trait Probe {
|
||||
fn provider(&self) -> &'static str;
|
||||
fn uri(&self, _: &str) -> String;
|
||||
fn search(&mut self, _: &mut Context, _: &str) -> Result<Entry, ()>;
|
||||
|
||||
fn fetch(&self, _: &str) -> Result<String, ()>;
|
||||
fn parse(&self, _: &str) -> Result<Entry, ()>;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::context::Context;
|
||||
use crate::probe::{Entry, Probe};
|
||||
|
||||
fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
@@ -44,23 +43,23 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
pub struct Eniro;
|
||||
|
||||
impl Probe for Eniro {
|
||||
fn provider(&self) -> &'static str {
|
||||
"eniro.se"
|
||||
}
|
||||
|
||||
fn uri(&self, number: &str) -> String {
|
||||
format!("https://gulasidorna.eniro.se/hitta:{}", number)
|
||||
}
|
||||
|
||||
fn search(&mut self, ctx: &mut Context, number: &str) -> Result<Entry, ()> {
|
||||
let body = if let Some(cache) = ctx.cache_get("eniro", &number) {
|
||||
String::from_utf8(cache.data).unwrap()
|
||||
} else {
|
||||
let body = reqwest::get(&self.uri(number)).unwrap().text().unwrap();
|
||||
fn fetch(&self, number: &str) -> Result<String, ()> {
|
||||
reqwest::get(&self.uri(number))
|
||||
.map_err(|_| ())?
|
||||
.text()
|
||||
.map_err(|_| ())
|
||||
}
|
||||
|
||||
ctx.cache_set("eniro", &number, body.as_bytes())
|
||||
.expect("wut?! why not?!");
|
||||
|
||||
body
|
||||
};
|
||||
|
||||
from_html(&body)
|
||||
fn parse(&self, data: &str) -> Result<Entry, ()> {
|
||||
from_html(&data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,4 +145,15 @@ mod tests {
|
||||
- 303 denna vecka och 304 totalt.
|
||||
comments: []"###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0701807618() {
|
||||
let document = include_str!("../../fixtures/eniro/0701807618.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history:
|
||||
- 0 denna vecka och 1 totalt.
|
||||
comments: []"###);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ use log::debug;
|
||||
use regex::Regex;
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::context::Context;
|
||||
use crate::probe::{self, Entry, Probe};
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
@@ -97,23 +96,23 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
pub struct Hitta;
|
||||
|
||||
impl Probe for Hitta {
|
||||
fn provider(&self) -> &'static str {
|
||||
"hitta.se"
|
||||
}
|
||||
|
||||
fn uri(&self, number: &str) -> String {
|
||||
format!("https://www.hitta.se/vem-ringde/{}", number)
|
||||
}
|
||||
|
||||
fn search(&mut self, ctx: &mut Context, number: &str) -> Result<Entry, ()> {
|
||||
let body = if let Some(cache) = ctx.cache_get("hitta", &number) {
|
||||
String::from_utf8(cache.data).unwrap()
|
||||
} else {
|
||||
let body = reqwest::get(&self.uri(number)).unwrap().text().unwrap();
|
||||
fn fetch(&self, number: &str) -> Result<String, ()> {
|
||||
reqwest::get(&self.uri(number))
|
||||
.map_err(|_| ())?
|
||||
.text()
|
||||
.map_err(|_| ())
|
||||
}
|
||||
|
||||
ctx.cache_set("hitta", &number, body.as_bytes())
|
||||
.expect("wut?! why not?!");
|
||||
|
||||
body
|
||||
};
|
||||
|
||||
from_html(&body)
|
||||
fn parse(&self, data: &str) -> Result<Entry, ()> {
|
||||
from_html(&data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,4 +281,11 @@ mod tests {
|
||||
history: []
|
||||
comments: []"###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0701807618() {
|
||||
let document = include_str!("../../fixtures/hitta/0701807618.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::context::Context;
|
||||
use crate::probe::{Entry, Probe};
|
||||
|
||||
fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
@@ -33,23 +32,23 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
pub struct KonsumentInfo;
|
||||
|
||||
impl Probe for KonsumentInfo {
|
||||
fn provider(&self) -> &'static str {
|
||||
"konsumentinfo.se"
|
||||
}
|
||||
|
||||
fn uri(&self, number: &str) -> String {
|
||||
format!("http://konsumentinfo.se/telefonnummer/sverige/{}", number)
|
||||
}
|
||||
|
||||
fn search(&mut self, ctx: &mut Context, number: &str) -> Result<Entry, ()> {
|
||||
let body = if let Some(cache) = ctx.cache_get("konsument_info", &number) {
|
||||
String::from_utf8(cache.data).unwrap()
|
||||
} else {
|
||||
let body = reqwest::get(&self.uri(number)).unwrap().text().unwrap();
|
||||
fn fetch(&self, number: &str) -> Result<String, ()> {
|
||||
reqwest::get(&self.uri(number))
|
||||
.map_err(|_| ())?
|
||||
.text()
|
||||
.map_err(|_| ())
|
||||
}
|
||||
|
||||
ctx.cache_set("konsument_info", &number, body.as_bytes())
|
||||
.expect("wut?! why not?!");
|
||||
|
||||
body
|
||||
};
|
||||
|
||||
from_html(&body)
|
||||
fn parse(&self, data: &str) -> Result<Entry, ()> {
|
||||
from_html(&data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,4 +110,11 @@ mod tests {
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0701807618() {
|
||||
let document = include_str!("../../fixtures/konsumentinfo/0701807618.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ use chrono::{DateTime, NaiveDateTime, TimeZone, Utc};
|
||||
use chrono_tz::Europe::Stockholm;
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::context::Context;
|
||||
use crate::probe::{Comment, Entry, Probe};
|
||||
|
||||
fn stockholm_to_utc(s: &str, fmt: &str) -> Result<DateTime<Utc>, ()> {
|
||||
@@ -93,23 +92,23 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
pub struct Telefonforsaljare;
|
||||
|
||||
impl Probe for Telefonforsaljare {
|
||||
fn provider(&self) -> &'static str {
|
||||
"telefonforsaljare.nu"
|
||||
}
|
||||
|
||||
fn uri(&self, number: &str) -> String {
|
||||
format!("http://www.telefonforsaljare.nu/telefonnummer/{}/", number)
|
||||
}
|
||||
|
||||
fn search(&mut self, ctx: &mut Context, number: &str) -> Result<Entry, ()> {
|
||||
let body = if let Some(cache) = ctx.cache_get("telefonforsaljare", &number) {
|
||||
String::from_utf8(cache.data).unwrap()
|
||||
} else {
|
||||
let body = reqwest::get(&self.uri(number)).unwrap().text().unwrap();
|
||||
fn fetch(&self, number: &str) -> Result<String, ()> {
|
||||
reqwest::get(&self.uri(number))
|
||||
.map_err(|_| ())?
|
||||
.text()
|
||||
.map_err(|_| ())
|
||||
}
|
||||
|
||||
ctx.cache_set("telefonforsaljare", &number, body.as_bytes())
|
||||
.expect("wut?! why not?!");
|
||||
|
||||
body
|
||||
};
|
||||
|
||||
from_html(&body)
|
||||
fn parse(&self, data: &str) -> Result<Entry, ()> {
|
||||
from_html(&data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,4 +221,15 @@ mod tests {
|
||||
- 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.
|
||||
comments: []"###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0701807618() {
|
||||
let document = include_str!("../../fixtures/telefonforsaljare/0701807618.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history:
|
||||
- De senaste 24 timmarna har 1 personer sökt efter numret 0701807618. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst 2 personer sökt efter numret.
|
||||
comments: []"###);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ use std::str;
|
||||
// use log::debug;
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::context::Context;
|
||||
use crate::probe::{Entry, Probe};
|
||||
|
||||
fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
@@ -36,23 +35,23 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
pub struct VemRingde;
|
||||
|
||||
impl Probe for VemRingde {
|
||||
fn provider(&self) -> &'static str {
|
||||
"vemringde.se"
|
||||
}
|
||||
|
||||
fn uri(&self, number: &str) -> String {
|
||||
format!("http://vemringde.se/?q={}", number)
|
||||
}
|
||||
|
||||
fn search(&mut self, ctx: &mut Context, number: &str) -> Result<Entry, ()> {
|
||||
let body = if let Some(cache) = ctx.cache_get("vem_ringde", &number) {
|
||||
String::from_utf8(cache.data).unwrap()
|
||||
} else {
|
||||
let body = reqwest::get(&self.uri(number)).unwrap().text().unwrap();
|
||||
fn fetch(&self, number: &str) -> Result<String, ()> {
|
||||
reqwest::get(&self.uri(number))
|
||||
.map_err(|_| ())?
|
||||
.text()
|
||||
.map_err(|_| ())
|
||||
}
|
||||
|
||||
ctx.cache_set("vem_ringde", &number, body.as_bytes())
|
||||
.expect("wut?! why not?!");
|
||||
|
||||
body
|
||||
};
|
||||
|
||||
from_html(&body)
|
||||
fn parse(&self, data: &str) -> Result<Entry, ()> {
|
||||
from_html(&data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,4 +131,14 @@ mod tests {
|
||||
history: []
|
||||
comments: []"###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0701807618() {
|
||||
let document = include_str!("../../fixtures/vemringde/0701807618.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history: []
|
||||
comments: []"###);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user