Fix Vimeo grabber, support SD only video
[videosite.git] / videosite / VimeoGrabber.pm
index 68295ce..9b2b689 100644 (file)
@@ -21,7 +21,7 @@ sub new {
     $self->{'NAME'} = 'vimeo';
     $self->{_SELFTESTURL} = 'http://vimeo.com/35055590';
     $self->{_SELFTESTTITLE} = 'Hello';
-    $self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*vimeo.com/(\d+))'];
+    $self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*vimeo.com/(?:m/)?(\d+))'];
 
     bless($self, $class);
     $self->_prepare_parameters();
@@ -65,7 +65,7 @@ sub _parse {
         if ($e->[0] eq 'script') {
             my $t = $p->get_text();
 
-            if ($t =~ m|clip\d+_\d+ = (.*\});Player|) {
+            if ($t =~ m|clip\d+_\d+ = (.*\});Player|s) {
                 my $jsp = videosite::JSArrayParser->new();
                 my $r;
 
@@ -85,13 +85,16 @@ sub _parse {
                 }
 
                 $metadata->{'TITLE'} = $r->{'config'}->{'video'}->{'title'};
+                $hd = grep { $_ eq 'hd' } @{$r->{'config'}->{'video'}->{'files'}->{'h264'}};
+                $self->debug("HD: %d", $hd);
                 $r = $r->{'config'}->{'request'};
 
-                $metadata->{'DLURL'} = sprintf("http://%s/play_redirect?clip_id=%d&sig=%s&time=%d&quality=hd&codecs=H264,VP8,VP6",
+                $metadata->{'DLURL'} = sprintf("http://%s/play_redirect?clip_id=%d&sig=%s&time=%d&quality=%s&codecs=H264,VP8,VP6",
                         $r->{'player_url'},
                         $metadata->{'ID'},
                         $r->{'signature'},
                         $r->{'timestamp'},
+                        $hd?'hd':'sd',
                         );
             }
         }