More tests, collect more data, and refactor some code.
This commit is contained in:
141
fixtures/eniro/0546780862.html
Normal file
141
fixtures/eniro/0546780862.html
Normal file
File diff suppressed because one or more lines are too long
102
fixtures/hitta/0546780862.html
Normal file
102
fixtures/hitta/0546780862.html
Normal file
File diff suppressed because one or more lines are too long
78
fixtures/konsumentinfo/0546780862.html
Normal file
78
fixtures/konsumentinfo/0546780862.html
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Konsument info</title>
|
||||
<link href="/Content/css?v=iiqI13lBXkUM6VSOmdydyHDH090VHahihzwhXC8q94A1" rel="stylesheet" />
|
||||
<script src="/bundles/modernizr?v=inCVuEFe6J4Q07A0AcRsbJic_UE5MwpRMNGcOtk94TE1"></script>
|
||||
<meta name="robots" content="index,follow" />
|
||||
<meta property="og:url" content="http://konsumentinfo.se/telefonnummer/sverige/0546780862" />
|
||||
<link rel="canonical" href="http://konsumentinfo.se/telefonnummer/sverige/0546780862" />
|
||||
<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 col-lg-12">
|
||||
<h1>Felaktigt nummer angett</h1>
|
||||
<br />
|
||||
Finns inget nummer I vårat system som matchar det som du har angivet.
|
||||
</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/0546780862.html
Normal file
172
fixtures/telefonforsaljare/0546780862.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>0546780862 - Har 054-678 08 62 ringt? | Nummerupplysning</title><meta name="description" content= "Har du fått telefonsamtal från 054-678 08 62? Se vem som äger 0546780862 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="0546780862" />
|
||||
|
||||
<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/0546780862/">054-678 08 62</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 leder till Karlstad och använder operatören Weblink IP Phone 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 0546780862. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst <strong>12 personer</strong> sökt efter numret.</p><p>Sökningar efter 0546780862 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,1,2,2,1,1,1,0,0,0,2,0,0,0,0,0,0,0,0,0,1&chxt=x,y&chxl=0:|24/4|4/5|10/7|14/8|17/8|7/9|16/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|7/2|1:|||2&chs=600x160&chds=0,2&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">054-678 08 62</span> nedan:</p></div>
|
||||
|
||||
<!-- 1 -->
|
||||
<h3 id="rapportera_nummer">Har telefonförsäljare från 0546780862 ringt dig?</h3>
|
||||
|
||||
<div class="well well-small">
|
||||
<form action="?rapportera_0546780862" 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="0546780862" >
|
||||
|
||||
</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 0546780862 kan även skrivas som 054-6780862 eller 0546-780862.<p>Internationell formatering av numret:<br>+46546780862<br>0046546780862<br></p></p>
|
||||
|
||||
<h3>Telefonnummer som liknar 0546780862</h3>
|
||||
<div class="well well-small">
|
||||
<a href="/telefonnummer/0546780852/">0546780852</a> - <a href="/telefonnummer/0546780853/">0546780853</a> - <a href="/telefonnummer/0546780854/">0546780854</a> - <a href="/telefonnummer/0546780855/">0546780855</a> - <a href="/telefonnummer/0546780856/">0546780856</a> - <a href="/telefonnummer/0546780857/">0546780857</a> - <a href="/telefonnummer/0546780858/">0546780858</a> - <a href="/telefonnummer/0546780859/">0546780859</a> - <a href="/telefonnummer/0546780860/">0546780860</a> - <a href="/telefonnummer/0546780861/">0546780861</a> - <a href="/telefonnummer/0546780862/">0546780862</a> - <a href="/telefonnummer/0546780863/">0546780863</a> - <a href="/telefonnummer/0546780864/">0546780864</a> - <a href="/telefonnummer/0546780865/">0546780865</a> - <a href="/telefonnummer/0546780866/">0546780866</a> - <a href="/telefonnummer/0546780867/">0546780867</a> - <a href="/telefonnummer/0546780868/">0546780868</a> - <a href="/telefonnummer/0546780869/">0546780869</a> - <a href="/telefonnummer/0546780870/">0546780870</a> - <a href="/telefonnummer/0546780871/">0546780871</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/0546780862.html
Normal file
370
fixtures/vemringde/0546780862.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 0546780862 ringt dig? | Vem ringde – missat samtal</title> <meta charset="UTF-8">
|
||||
<meta name="google-site-verification" content="9pRxF8v7Of7PgiQ2e5icbJdHsT-PcnwGYBKAkTfosLQ" >
|
||||
<meta name="keywords" content="0546780862,+46546780862,0046546780862,vemringde.se,vem ringde,telefonförsäljare,telemarketing" >
|
||||
<meta name="description" content="Har 0546780862 ringt dig?" >
|
||||
<meta name="robots" content="noindex, follow" > <meta property="og:title" content="Har 0546780862 ringt dig?"/>
|
||||
<meta property="og:type" content="article"/>
|
||||
<meta property="og:url" content="http://vemringde.se/?q=0546780862"/>
|
||||
<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=0546780862" rel="canonical" >
|
||||
<link href="/rss?q=0546780862" rel="alternate" type="application/rss+xml" title="Feed for 0546780862 | Vemringde.se" >
|
||||
<link href="/rss?q=0546780862&type=atom" rel="alternate" type="application/atom+xml" title="Atom feed for 0546780862 | 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='0546780862' 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 0546780862 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="46546780862" 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-07" 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 0546780862</p>
|
||||
<g:plusone></g:plusone>
|
||||
<fb:like href="http://vemringde.se/?q=0546780862" 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=0546780862" 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=0546780862"
|
||||
data-flattr-button="compact"
|
||||
title="Har 0546780862 ringt dig? - Vemringde.se">
|
||||
0546780862 ä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 0546780862, har du provat <a onclick="trackOutboundLink(this, 'Utgående länkar', 'eniro.se'); return false;" href="http://www.eniro.se/query?search_word=0546780862&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=0546780862&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 0546780862 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>054</strong> = <em>Karlstad</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>
|
||||
131
src/entry.rs
Normal file
131
src/entry.rs
Normal file
@@ -0,0 +1,131 @@
|
||||
use std::fmt;
|
||||
|
||||
use chrono::offset::LocalResult;
|
||||
use chrono::{Local, NaiveDate, NaiveDateTime, TimeZone, Utc};
|
||||
|
||||
use serde::{de, Deserialize, Deserializer, Serialize, Serializer};
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize)]
|
||||
pub struct Entry {
|
||||
pub messages: Vec<String>,
|
||||
pub history: Vec<String>,
|
||||
pub comments: Vec<Comment>,
|
||||
}
|
||||
|
||||
impl fmt::Display for Entry {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
if !self.messages.is_empty() {
|
||||
for message in &self.messages {
|
||||
writeln!(f, " {}", message)?;
|
||||
}
|
||||
}
|
||||
|
||||
if !self.history.is_empty() {
|
||||
for history in &self.history {
|
||||
writeln!(f, " {}", history)?;
|
||||
}
|
||||
}
|
||||
|
||||
if !self.comments.is_empty() {
|
||||
for comment in &self.comments {
|
||||
writeln!(f, " * {}", comment)?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize)]
|
||||
pub struct Comment {
|
||||
pub datetime: Date,
|
||||
pub title: Option<String>,
|
||||
pub message: String,
|
||||
}
|
||||
|
||||
impl fmt::Display for Comment {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
if let Some(ref title) = self.title {
|
||||
write!(f, "{}: {} - {}", self.datetime, title, self.message)
|
||||
} else {
|
||||
write!(f, "{}: {}", self.datetime, self.message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Serialize, PartialOrd, Ord)]
|
||||
pub enum Date {
|
||||
DateTime(chrono::DateTime<Utc>),
|
||||
#[serde(serialize_with = "serialize_date")]
|
||||
Date(chrono::Date<Utc>),
|
||||
}
|
||||
|
||||
impl Date {
|
||||
pub fn datetime_from<T>(tz: T, s: &str, fmt: &str) -> Result<Date, ()>
|
||||
where
|
||||
T: TimeZone,
|
||||
{
|
||||
let datetime = NaiveDateTime::parse_from_str(s, fmt).map_err(|_| ())?;
|
||||
let datetime = match tz.from_local_datetime(&datetime) {
|
||||
LocalResult::Single(datetime) => datetime,
|
||||
_ => return Err(()),
|
||||
};
|
||||
|
||||
Ok(Date::DateTime(datetime.with_timezone(&Utc)))
|
||||
}
|
||||
|
||||
pub fn date_from<T>(tz: T, s: &str, fmt: &str) -> Result<Date, ()>
|
||||
where
|
||||
T: TimeZone,
|
||||
{
|
||||
let date = NaiveDate::parse_from_str(s, fmt).map_err(|_| ())?;
|
||||
let date = match tz.from_local_date(&date) {
|
||||
LocalResult::Single(date) => date,
|
||||
_ => return Err(()),
|
||||
};
|
||||
|
||||
Ok(Date::Date(date.with_timezone(&Utc)))
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Date {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match self {
|
||||
Date::DateTime(datetime) => {
|
||||
let datetime = datetime.with_timezone(&Local);
|
||||
|
||||
write!(f, "{}", datetime.format("%Y-%m-%d %H:%M:%S"))
|
||||
}
|
||||
Date::Date(date) => {
|
||||
let date = date.with_timezone(&Local);
|
||||
|
||||
write!(f, "{}", date.format("%Y-%m-%d"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn serialize_date<S>(date: &chrono::Date<Utc>, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
let date = date.with_timezone(&Local);
|
||||
let s = format!("{}", date.format("%Y-%m-%d"));
|
||||
|
||||
Serialize::serialize(&s, serializer)
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn deserialize_date<'de, D>(deserializer: D) -> Result<chrono::Date<Utc>, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let s = String::deserialize(deserializer)?;
|
||||
let date = NaiveDate::parse_from_str(&s, "%Y-%m-%d").map_err(de::Error::custom)?;
|
||||
let date = match Utc.from_local_date(&date) {
|
||||
LocalResult::Single(date) => date,
|
||||
_ => return Err(de::Error::custom("")),
|
||||
};
|
||||
|
||||
Ok(date.with_timezone(&Utc))
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
mod context;
|
||||
pub mod entry;
|
||||
mod probe;
|
||||
|
||||
pub use crate::context::Context;
|
||||
|
||||
66
src/probe.rs
66
src/probe.rs
@@ -1,7 +1,4 @@
|
||||
use std::fmt;
|
||||
|
||||
use chrono::{DateTime, Local, Utc};
|
||||
use serde::Serialize;
|
||||
use crate::entry::Entry;
|
||||
|
||||
mod eniro;
|
||||
mod hitta;
|
||||
@@ -15,67 +12,6 @@ pub use self::konsument_info::KonsumentInfo;
|
||||
pub use self::telefonforsaljare::Telefonforsaljare;
|
||||
pub use self::vem_ringde::VemRingde;
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize)]
|
||||
pub struct Entry {
|
||||
pub messages: Vec<String>,
|
||||
pub history: Vec<String>,
|
||||
pub comments: Vec<Comment>,
|
||||
}
|
||||
|
||||
impl fmt::Display for Entry {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
if !self.messages.is_empty() {
|
||||
for message in &self.messages {
|
||||
writeln!(f, " {}", message)?;
|
||||
}
|
||||
}
|
||||
|
||||
if !self.history.is_empty() {
|
||||
for history in &self.history {
|
||||
writeln!(f, " {}", history)?;
|
||||
}
|
||||
}
|
||||
|
||||
if !self.comments.is_empty() {
|
||||
for comment in &self.comments {
|
||||
writeln!(f, " * {}", comment)?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize)]
|
||||
pub struct Comment {
|
||||
pub datetime: DateTime<Utc>,
|
||||
pub title: Option<String>,
|
||||
pub message: String,
|
||||
}
|
||||
|
||||
impl fmt::Display for Comment {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
let datetime = self.datetime.with_timezone(&Local);
|
||||
|
||||
if let Some(ref title) = self.title {
|
||||
write!(
|
||||
f,
|
||||
"{}: {} - {}",
|
||||
datetime.format("%Y-%m-%d %H:%M:%S"),
|
||||
title,
|
||||
self.message
|
||||
)
|
||||
} else {
|
||||
write!(
|
||||
f,
|
||||
"{}: {}",
|
||||
datetime.format("%Y-%m-%d %H:%M:%S"),
|
||||
self.message
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait Probe {
|
||||
fn provider(&self) -> &'static str;
|
||||
fn uri(&self, _: &str) -> String;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::probe::{Entry, Probe};
|
||||
use crate::entry::Entry;
|
||||
use crate::probe::Probe;
|
||||
|
||||
fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
let html = Html::parse_document(document);
|
||||
@@ -156,4 +157,15 @@ mod tests {
|
||||
- 0 denna vecka och 1 totalt.
|
||||
comments: []"###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0546780862() {
|
||||
let document = include_str!("../../fixtures/eniro/0546780862.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages:
|
||||
- Nya Wermlands-Tidningens AB
|
||||
history: []
|
||||
comments: []"###);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
use chrono::{TimeZone, Utc};
|
||||
use log::debug;
|
||||
use log::{debug, trace};
|
||||
use regex::Regex;
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::probe::{self, Entry, Probe};
|
||||
use crate::entry::{self, Date, Entry};
|
||||
use crate::probe::Probe;
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
@@ -50,12 +51,10 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
|
||||
let json = result.get(1).unwrap().as_str();
|
||||
|
||||
/*
|
||||
println!(
|
||||
"json: {:#?}",
|
||||
trace!(
|
||||
"Hitta: {:#?}",
|
||||
serde_json::from_str::<serde_json::Value>(&json)
|
||||
);
|
||||
*/
|
||||
|
||||
if let Ok(data) = serde_json::from_str::<Data>(&json) {
|
||||
let messages = Vec::new();
|
||||
@@ -66,11 +65,11 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
history.push(phone_data.statistics_text);
|
||||
|
||||
for comment in phone_data.comments {
|
||||
comments.push(probe::Comment {
|
||||
datetime: Utc.timestamp(
|
||||
comments.push(entry::Comment {
|
||||
datetime: Date::DateTime(Utc.timestamp(
|
||||
(comment.timestamp / 1000) as i64,
|
||||
(comment.timestamp % 1000) as u32,
|
||||
),
|
||||
)),
|
||||
title: None,
|
||||
message: comment.comment,
|
||||
});
|
||||
@@ -131,91 +130,120 @@ mod tests {
|
||||
history:
|
||||
- 42 andra har rapporterat detta nummer
|
||||
comments:
|
||||
- datetime: "2019-01-17T17:29:22Z"
|
||||
- datetime:
|
||||
DateTime: "2019-01-17T17:29:22Z"
|
||||
title: ~
|
||||
message: Varmsälj från Folksam
|
||||
- datetime: "2018-12-14T13:45:28Z"
|
||||
- datetime:
|
||||
DateTime: "2018-12-14T13:45:28Z"
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime: "2018-11-28T07:30:18Z"
|
||||
- datetime:
|
||||
DateTime: "2018-11-28T07:30:18Z"
|
||||
title: ~
|
||||
message: Höglandschskt
|
||||
- datetime: "2018-11-20T19:18:09Z"
|
||||
- datetime:
|
||||
DateTime: "2018-11-20T19:18:09Z"
|
||||
title: ~
|
||||
message: "Försäljare "
|
||||
- datetime: "2018-11-19T17:38:34Z"
|
||||
- datetime:
|
||||
DateTime: "2018-11-19T17:38:34Z"
|
||||
title: ~
|
||||
message: mögg från Folksam
|
||||
- datetime: "2018-11-12T16:00:41Z"
|
||||
- datetime:
|
||||
DateTime: "2018-11-12T16:00:41Z"
|
||||
title: ~
|
||||
message: Folksam försäkringsförsäljare
|
||||
- datetime: "2018-10-25T10:28:36Z"
|
||||
- datetime:
|
||||
DateTime: "2018-10-25T10:28:36Z"
|
||||
title: ~
|
||||
message: folksam
|
||||
- datetime: "2018-10-10T07:30:40Z"
|
||||
- datetime:
|
||||
DateTime: "2018-10-10T07:30:40Z"
|
||||
title: ~
|
||||
message: Telefonförsäljare
|
||||
- datetime: "2018-10-04T10:04:55Z"
|
||||
- datetime:
|
||||
DateTime: "2018-10-04T10:04:55Z"
|
||||
title: ~
|
||||
message: Folksam säljare
|
||||
- datetime: "2018-10-03T13:55:19Z"
|
||||
- datetime:
|
||||
DateTime: "2018-10-03T13:55:19Z"
|
||||
title: ~
|
||||
message: Sa inget.
|
||||
- datetime: "2018-08-24T16:56:46Z"
|
||||
- datetime:
|
||||
DateTime: "2018-08-24T16:56:46Z"
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime: "2018-08-24T09:42:43Z"
|
||||
- datetime:
|
||||
DateTime: "2018-08-24T09:42:43Z"
|
||||
title: ~
|
||||
message: Achmati azmut från folksam
|
||||
- datetime: "2018-08-21T18:29:29Z"
|
||||
- datetime:
|
||||
DateTime: "2018-08-21T18:29:29Z"
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime: "2018-08-16T18:56:56Z"
|
||||
- datetime:
|
||||
DateTime: "2018-08-16T18:56:56Z"
|
||||
title: ~
|
||||
message: Säljare från Folksam.
|
||||
- datetime: "2018-08-16T14:48:59Z"
|
||||
- datetime:
|
||||
DateTime: "2018-08-16T14:48:59Z"
|
||||
title: ~
|
||||
message: "Folksam "
|
||||
- datetime: "2018-08-09T16:30:28Z"
|
||||
- datetime:
|
||||
DateTime: "2018-08-09T16:30:28Z"
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime: "2018-08-02T16:29:32Z"
|
||||
- datetime:
|
||||
DateTime: "2018-08-02T16:29:32Z"
|
||||
title: ~
|
||||
message: "Folksam "
|
||||
- datetime: "2018-08-02T15:33:38Z"
|
||||
- datetime:
|
||||
DateTime: "2018-08-02T15:33:38Z"
|
||||
title: ~
|
||||
message: "Folksam "
|
||||
- datetime: "2018-07-25T08:28:27Z"
|
||||
- datetime:
|
||||
DateTime: "2018-07-25T08:28:27Z"
|
||||
title: ~
|
||||
message: Säljare Folksam
|
||||
- datetime: "2018-07-17T21:20:51Z"
|
||||
- datetime:
|
||||
DateTime: "2018-07-17T21:20:51Z"
|
||||
title: ~
|
||||
message: "Inga Hansson "
|
||||
- datetime: "2018-07-16T18:11:46Z"
|
||||
- datetime:
|
||||
DateTime: "2018-07-16T18:11:46Z"
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime: "2018-07-06T15:45:46Z"
|
||||
- datetime:
|
||||
DateTime: "2018-07-06T15:45:46Z"
|
||||
title: ~
|
||||
message: "Folksam "
|
||||
- datetime: "2018-07-05T17:24:07Z"
|
||||
- datetime:
|
||||
DateTime: "2018-07-05T17:24:07Z"
|
||||
title: ~
|
||||
message: folksam
|
||||
- datetime: "2018-07-05T11:15:02Z"
|
||||
- datetime:
|
||||
DateTime: "2018-07-05T11:15:02Z"
|
||||
title: ~
|
||||
message: Vesran
|
||||
- datetime: "2018-07-04T13:30:49Z"
|
||||
- datetime:
|
||||
DateTime: "2018-07-04T13:30:49Z"
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime: "2018-06-29T10:52:51Z"
|
||||
- datetime:
|
||||
DateTime: "2018-06-29T10:52:51Z"
|
||||
title: ~
|
||||
message: folksam
|
||||
- datetime: "2018-06-28T13:33:01Z"
|
||||
- datetime:
|
||||
DateTime: "2018-06-28T13:33:01Z"
|
||||
title: ~
|
||||
message: Säljare folksam
|
||||
- datetime: "2018-06-28T07:42:42Z"
|
||||
- datetime:
|
||||
DateTime: "2018-06-28T07:42:42Z"
|
||||
title: ~
|
||||
message: Folksam försäkringar
|
||||
- datetime: "2018-06-26T12:59:33Z"
|
||||
- datetime:
|
||||
DateTime: "2018-06-26T12:59:33Z"
|
||||
title: ~
|
||||
message: Säljare Folksam"###);
|
||||
}
|
||||
@@ -288,4 +316,11 @@ mod tests {
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0546780862() {
|
||||
let document = include_str!("../../fixtures/hitta/0546780862.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,4 +117,11 @@ mod tests {
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0546780862() {
|
||||
let document = include_str!("../../fixtures/konsumentinfo/0546780862.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,8 @@
|
||||
use chrono::offset::LocalResult;
|
||||
use chrono::{DateTime, NaiveDateTime, TimeZone, Utc};
|
||||
use chrono_tz::Europe::Stockholm;
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::probe::{Comment, Entry, Probe};
|
||||
|
||||
fn stockholm_to_utc(s: &str, fmt: &str) -> Result<DateTime<Utc>, ()> {
|
||||
let datetime = NaiveDateTime::parse_from_str(s, fmt).map_err(|_| ())?;
|
||||
let datetime = match Stockholm.from_local_datetime(&datetime) {
|
||||
LocalResult::Single(datetime) => datetime,
|
||||
_ => return Err(()),
|
||||
};
|
||||
|
||||
Ok(datetime.with_timezone(&Utc))
|
||||
}
|
||||
use crate::entry::{Comment, Date, Entry};
|
||||
use crate::probe::Probe;
|
||||
|
||||
fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
let html = Html::parse_document(document);
|
||||
@@ -76,7 +65,8 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
let message = htmlescape::decode_html(&message).unwrap();
|
||||
|
||||
comments.push(Comment {
|
||||
datetime: stockholm_to_utc(&datetime, "%Y-%m-%d %H:%M:%S").unwrap(),
|
||||
datetime: Date::datetime_from(Stockholm, &datetime, "%Y-%m-%d %H:%M:%S")
|
||||
.expect("failed to parse datetime"),
|
||||
title: if title.is_empty() { None } else { Some(title) },
|
||||
message,
|
||||
});
|
||||
@@ -128,22 +118,28 @@ mod tests {
|
||||
history:
|
||||
- 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.
|
||||
comments:
|
||||
- datetime: "2018-05-09T12:31:39Z"
|
||||
- datetime:
|
||||
DateTime: "2018-05-09T12:31:39Z"
|
||||
title: Folksam
|
||||
message: Svara inte på okända nummer. Blockerat!
|
||||
- datetime: "2017-12-05T16:33:10Z"
|
||||
- datetime:
|
||||
DateTime: "2017-12-05T16:33:10Z"
|
||||
title: Folksam
|
||||
message: Svarade aldrig men när jag ringde upp var det Folksam
|
||||
- datetime: "2017-11-28T10:30:10Z"
|
||||
- datetime:
|
||||
DateTime: "2017-11-28T10:30:10Z"
|
||||
title: ~
|
||||
message: Ringde och la på
|
||||
- datetime: "2017-11-20T14:53:16Z"
|
||||
- datetime:
|
||||
DateTime: "2017-11-20T14:53:16Z"
|
||||
title: Folksam
|
||||
message: färsäljare
|
||||
- datetime: "2017-11-16T12:38:07Z"
|
||||
- datetime:
|
||||
DateTime: "2017-11-16T12:38:07Z"
|
||||
title: Folksam
|
||||
message: "missat samtal, ringde tillbaka och automatsvar sa att det var folksam som sökt mig för att presentera ett erbjudande."
|
||||
- datetime: "2017-10-25T05:59:26Z"
|
||||
- datetime:
|
||||
DateTime: "2017-10-25T05:59:26Z"
|
||||
title: Folksam
|
||||
message: Försäljare"###);
|
||||
}
|
||||
@@ -169,7 +165,8 @@ mod tests {
|
||||
history:
|
||||
- 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.
|
||||
comments:
|
||||
- datetime: "2019-01-18T13:30:55Z"
|
||||
- datetime:
|
||||
DateTime: "2019-01-18T13:30:55Z"
|
||||
title: Alnö Design & Produktion AB
|
||||
message: "Renhållning, service, kemprodukter""###);
|
||||
}
|
||||
@@ -184,7 +181,8 @@ mod tests {
|
||||
history:
|
||||
- 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.
|
||||
comments:
|
||||
- datetime: "2018-10-31T17:48:27Z"
|
||||
- datetime:
|
||||
DateTime: "2018-10-31T17:48:27Z"
|
||||
title: Tele2
|
||||
message: Bättre priser som inte finns online"###);
|
||||
}
|
||||
@@ -232,4 +230,15 @@ mod tests {
|
||||
- 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: []"###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0546780862() {
|
||||
let document = include_str!("../../fixtures/telefonforsaljare/0546780862.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history:
|
||||
- De senaste 24 timmarna har 1 personer sökt efter numret 0546780862. Det kan tyda på att numret används av telefonförsäljare. Totalt har minst 12 personer sökt efter numret.
|
||||
comments: []"###);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
use std::str;
|
||||
|
||||
// use log::debug;
|
||||
use chrono_tz::Europe::Stockholm;
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::probe::{Entry, Probe};
|
||||
use crate::entry::{Comment, Date, Entry};
|
||||
use crate::probe::Probe;
|
||||
|
||||
fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
let html = Html::parse_document(document);
|
||||
|
||||
let mut messages = Vec::new();
|
||||
let history = Vec::new();
|
||||
let comments = Vec::new();
|
||||
let mut comments = Vec::new();
|
||||
|
||||
let selector = Selector::parse("#toporganisations li").unwrap();
|
||||
|
||||
@@ -25,11 +26,47 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
messages.push(message);
|
||||
}
|
||||
|
||||
let selector = Selector::parse("#calls ol li").expect("failed to build selector");
|
||||
|
||||
for element in html.select(&selector) {
|
||||
let selector = Selector::parse("div:nth-child(4)").expect("failed to build selector");
|
||||
|
||||
let date = element
|
||||
.select(&selector)
|
||||
.next()
|
||||
.expect("failed to find datetime")
|
||||
.inner_html();
|
||||
|
||||
let selector = Selector::parse("div:nth-child(3)").expect("failed to build selector");
|
||||
|
||||
let message = element
|
||||
.select(&selector)
|
||||
.next()
|
||||
.unwrap()
|
||||
.text()
|
||||
.map(str::trim)
|
||||
.filter(|s| !s.is_empty())
|
||||
.collect::<Vec<_>>()
|
||||
.join(" ");
|
||||
|
||||
let message = htmlescape::decode_html(&message).unwrap();
|
||||
|
||||
comments.push(Comment {
|
||||
datetime: Date::date_from(Stockholm, &date, "%Y-%m-%d").expect("failed to parse date"),
|
||||
title: None,
|
||||
message,
|
||||
});
|
||||
}
|
||||
|
||||
if !messages.is_empty() || !comments.is_empty() {
|
||||
Ok(Entry {
|
||||
messages,
|
||||
history,
|
||||
comments,
|
||||
})
|
||||
} else {
|
||||
Err(())
|
||||
}
|
||||
}
|
||||
|
||||
pub struct VemRingde;
|
||||
@@ -69,7 +106,63 @@ mod tests {
|
||||
messages:
|
||||
- Folksam (5 samtal)
|
||||
history: []
|
||||
comments: []"###);
|
||||
comments:
|
||||
- datetime:
|
||||
Date: 2018-11-07
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime:
|
||||
Date: 2018-06-05
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime:
|
||||
Date: 2018-04-18
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime:
|
||||
Date: 2018-03-19
|
||||
title: ~
|
||||
message: okänd
|
||||
- datetime:
|
||||
Date: 2018-03-07
|
||||
title: ~
|
||||
message: okänd
|
||||
- datetime:
|
||||
Date: 2018-02-06
|
||||
title: ~
|
||||
message: Folksam spam
|
||||
- datetime:
|
||||
Date: 2017-12-20
|
||||
title: ~
|
||||
message: svarade ej
|
||||
- datetime:
|
||||
Date: 2017-12-07
|
||||
title: ~
|
||||
message: okänd
|
||||
- datetime:
|
||||
Date: 2017-12-05
|
||||
title: ~
|
||||
message: okänd
|
||||
- datetime:
|
||||
Date: 2017-11-21
|
||||
title: ~
|
||||
message: Försäljare folksam
|
||||
- datetime:
|
||||
Date: 2017-11-14
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime:
|
||||
Date: 2017-11-06
|
||||
title: ~
|
||||
message: Folksam
|
||||
- datetime:
|
||||
Date: 2017-10-24
|
||||
title: ~
|
||||
message: telemarketing
|
||||
- datetime:
|
||||
Date: 2017-10-23
|
||||
title: ~
|
||||
message: okänd"###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -79,66 +172,59 @@ mod tests {
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history: []
|
||||
comments: []"###);
|
||||
comments:
|
||||
- datetime:
|
||||
Date: 2018-11-26
|
||||
title: ~
|
||||
message: callcenter"###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0702269893() {
|
||||
let document = include_str!("../../fixtures/vemringde/0702269893.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history: []
|
||||
comments: []"###);
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0726443387() {
|
||||
let document = include_str!("../../fixtures/vemringde/0726443387.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history: []
|
||||
comments: []"###);
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0751793426() {
|
||||
let document = include_str!("../../fixtures/vemringde/0751793426.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history: []
|
||||
comments: []"###);
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0751793483() {
|
||||
let document = include_str!("../../fixtures/vemringde/0751793483.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history: []
|
||||
comments: []"###);
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0751793499() {
|
||||
let document = include_str!("../../fixtures/vemringde/0751793499.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history: []
|
||||
comments: []"###);
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0701807618() {
|
||||
let document = include_str!("../../fixtures/vemringde/0701807618.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @r###"Ok:
|
||||
messages: []
|
||||
history: []
|
||||
comments: []"###);
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_0546780862() {
|
||||
let document = include_str!("../../fixtures/vemringde/0546780862.html");
|
||||
|
||||
assert_yaml_snapshot_matches!(from_html(&document), @"Err: ~");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user