use
if
DEBUG,
'Smart::Comments'
;
our
$VERSION
=
'1.64_02'
;
sub
methods {
return
(
finanzpartner
=> \
&finanzpartner
);}
sub
labels {
return
(
finanzpartner
=>[
qw/name date price last method/
]); }
sub
finanzpartner
{
my
$quoter
=
shift
;
my
@stocks
=
@_
;
my
$ua
=
$quoter
->user_agent();
my
%info
;
foreach
my
$stock
(
@stocks
) {
eval
{
my
@headers
= (
"authority"
=>
"www.finanzpartner.de"
,
"sec-ch-ua"
=>
'"Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"'
,
"sec-ch-ua-mobile"
=>
"?0"
,
"upgrade-insecure-requests"
=>
"1"
,
"user-agent"
=>
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
,
"accept"
=>
"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
,
"accept-language"
=>
"en-US,en;q=0.9"
,
"sec-ch-ua"
=>
"\"Google Chrome\";v=\"87\", \" Not;A Brand\";v=\"99\", \"Chromium\";v=\"87\""
,
"sec-fetch-dest"
=>
"document"
,
"sec-fetch-mode"
=>
"navigate"
,
"sec-fetch-site"
=>
"none"
,
);
my
$url
=
$FINANZPARTNER_URL
.
$stock
.
'/'
;
my
$reply
=
$ua
->get(
$url
,
@headers
);
my
$processor
= scraper {
process
'span.kurs-m.pull-left'
,
'price[]'
=>
'TEXT'
;
process
'span.kurs.pull-left'
,
'price_alternative[]'
=>
'TEXT'
;
process
'h1 > small'
,
'isin[]'
=>
'TEXT'
;
process
'div.col-md-2'
,
'date[]'
=>
'TEXT'
;
process
'h1 > span'
,
'name[]'
=>
'TEXT'
;
};
my
$data
=
$processor
->scrape(decode_utf8
$reply
->content);
if
(
exists
$data
->{price_alternative}) {
$data
->{price} =
$data
->{price_alternative};
}
die
"Unexpected price format"
unless
exists
$data
->{price} and
$data
->{price}->[0] =~ /^([0-9.]+) ([A-Z]+)$/;
$info
{
$stock
,
"last"
} = $1;
$info
{
$stock
,
"currency"
} = $2;
die
"Unexpected date format"
unless
exists
$data
->{date} and
$data
->{date}->[0] =~ /([0-9]{2}[.][0-9]{2}[.][0-9]{4})$/;
$quoter
->store_date(\
%info
,
$stock
, {
eurodate
=> $1});
$info
{
$stock
,
"method"
} =
"finanzpartner"
;
$info
{
$stock
,
"symbol"
} =
$stock
;
$info
{
$stock
,
"success"
} = 1;
};
if
($@) {
$info
{
$stock
,
"errormsg"
} = $@;
$info
{
$stock
,
"success"
} = 0;
}
}
return
wantarray
?
%info
: \
%info
;
}
1;