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
libvideosite: introduce sevice command and move cache command under it
[videosite.git]
/
videosite
/
YouTubeGrabber.pm
diff --git
a/videosite/YouTubeGrabber.pm
b/videosite/YouTubeGrabber.pm
index
59d748b
..
423184c
100644
(file)
--- a/
videosite/YouTubeGrabber.pm
+++ b/
videosite/YouTubeGrabber.pm
@@
-76,6
+76,7
@@
sub new {
PASSWORD => ['', 'Password to use for YouTube login'],
HTTPS => [1, 'Whether to use HTTPS (if available) to connect to YouTube']
},
PASSWORD => ['', 'Password to use for YouTube login'],
HTTPS => [1, 'Whether to use HTTPS (if available) to connect to YouTube']
},
+ @_,
);
return bless($self, $class);
);
return bless($self, $class);
@@
-95,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;
@@
-143,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'});