git://git.camperquake.de
/
videosite.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Youtube: Allow short circuiting _parse_by_scrape if the video is non-saveable anyway
[videosite.git]
/
videosite
/
YouTubeGrabber.pm
diff --git
a/videosite/YouTubeGrabber.pm
b/videosite/YouTubeGrabber.pm
index
28f5007
..
423184c
100644
(file)
--- a/
videosite/YouTubeGrabber.pm
+++ b/
videosite/YouTubeGrabber.pm
@@
-96,15
+96,28
@@
sub _parse {
$self->debug("Matched id %s from pattern %s", $id, $pattern);
$res = $self->_parse_by_video_info($url, $id);
$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 {
} else {
+ $self->debug("_parse_by_video_info failed with status retry");
$res = $self->_parse_by_scrape($url, $id);
}
return $res;
}
$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;
sub _parse_by_video_info {
my $self = shift;
my $url = shift;
@@
-144,11
+157,19
@@
sub _parse_by_video_info {
# Decode content
$content = $self->decode_querystring($content);
# 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;
}
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'});
if (exists($content->{'fmt_url_map'})) {
# Decode fmt_url_map
$urls = $self->decode_hexurl($content->{'fmt_url_map'});