$self->debug("Matched id %s from pattern %s", $id, $pattern);
$res = $self->_parse_by_video_info($url, $id);
- if (defined($res) && ref($res)) {
- return $res;
+ if (defined($res)) {
+ if (ref($res)) {
+ return $res;
+ } else {
+ $self->debug("_parse_by_video_info failed with status noretry");
+ return undef;
+ }
} else {
+ $self->debug("_parse_by_video_info failed with status retry");
$res = $self->_parse_by_scrape($url, $id);
}
return $res;
}
+#
+# Try to get video information by using the API call.
+#
+# Returns hashref on success
+# Returns undef on retryable error (try to scrape the website)
+# Returns 0 on non-retryable error
+#
sub _parse_by_video_info {
my $self = shift;
my $url = shift;
# Decode content
$content = $self->decode_querystring($content);
+ $self->debug("Decoded get_video_info: %s", Dumper($content));
+
if ($content->{'status'} ne 'ok') {
$self->debug("Non OK status code found: %s", $content->{'status'});
return undef;
}
+ # Check if this is live content
+ if (exists($content->{ps}) and ($content->{ps} eq 'live')) {
+ $self->error("Video URL seems to point to a live stream, cannot save this");
+ return 0;
+ }
+
if (exists($content->{'fmt_url_map'})) {
# Decode fmt_url_map
$urls = $self->decode_hexurl($content->{'fmt_url_map'});