$WWW::FetchStory::Fetcher::TardisBigBang3::VERSION
=
'0.25'
;
sub
info {
my
$self
=
shift
;
return
$info
;
}
sub
priority {
my
$class
=
shift
;
return
1;
}
sub
allow {
my
$self
=
shift
;
my
$url
=
shift
;
return
(
$url
=~ /www\.tardisbigbang\.com\/Round3/);
}
sub
extract_story {
my
$self
=
shift
;
my
%args
= (
content
=>
''
,
title
=>
''
,
@_
);
my
$content
=
$args
{content};
my
$title
=
$args
{title};
my
$story
=
''
;
if
(
$content
=~ m
{
$story
= $1;
}
elsif
(
$content
=~ m
{
$story
= $1;
}
if
(
$story
)
{
$story
=
$self
->tidy_chars(
$story
);
}
else
{
$story
=
$content
;
}
return
(
$story
,
$title
);
}
sub
parse_toc {
my
$self
=
shift
;
my
%args
= (
url
=>
''
,
content
=>
''
,
@_
);
my
%info
= ();
my
$content
=
$args
{content};
my
@chapters
= ();
$info
{url} =
$args
{url};
my
$sid
=
''
;
if
(
$args
{url} =~ m
{
$sid
= $1;
}
else
{
return
$self
->SUPER::parse_toc(
%args
);
}
$info
{author} =
$self
->parse_author(
%args
);
$info
{title} =
$self
->parse_title(
%args
);
$info
{summary} =
$self
->parse_summary(
%args
);
if
(
$content
=~ m
{
$info
{universe} = $1;
$info
{rating} = $2;
$info
{summary2} = $3;
$info
{size} = $4;
$info
{size} =~ s/,//g;
$info
{size} .=
'w'
;
$info
{universe} =~ s/New Who/Doctor Who/;
}
else
{
$info
{universe} =
'Doctor Who'
;
}
$info
{chapters} =
$self
->parse_chapter_urls(
%args
,
sid
=>
$sid
);
return
%info
;
}
sub
parse_chapter_urls {
my
$self
=
shift
;
my
%args
= (
url
=>
''
,
content
=>
''
,
@_
);
my
$content
=
$args
{content};
my
$sid
=
$args
{sid};
my
@chapters
= ();
if
(
defined
$args
{urls})
{
@chapters
= @{
$args
{urls}};
}
if
(
@chapters
== 1)
{
if
(
$content
=~ m
{
my
$fmt
=
$args
{url};
$fmt
=~ s/part=\d+/part=\
%d
/;
while
(
$content
=~ m
{
my
$ch_num
= $1;
my
$ch_url
=
sprintf
(
$fmt
,
$ch_num
);
warn
"chapter=$ch_url\n"
if
(
$self
->{verbose} > 1);
push
@chapters
,
$ch_url
;
}
}
}
return
\
@chapters
;
}
sub
parse_author {
my
$self
=
shift
;
my
%args
= (
url
=>
''
,
content
=>
''
,
@_
);
my
$content
=
$args
{content};
my
$author
=
''
;
if
(
$content
=~ m
{
$author
= $1;
}
else
{
$author
=
$self
->SUPER::parse_author(
%args
);
}
return
$author
;
}
sub
parse_summary {
my
$self
=
shift
;
my
%args
= (
url
=>
''
,
content
=>
''
,
@_
);
my
$content
=
$args
{content};
my
$summary
=
''
;
if
(
$content
=~ m
{
$summary
= $1;
}
else
{
$summary
=
$self
->SUPER::parse_summary(
%args
);
}
return
$summary
;
}
1;