Author: glen
Date: Sat Nov 30 19:21:07 2013
New Revision: 12732

Modified:
   toys/rsget.pl/Video/Kanal2
Log:
kanal2/kanal11: handle static file downloads


Modified: toys/rsget.pl/Video/Kanal2
==============================================================================
--- toys/rsget.pl/Video/Kanal2  (original)
+++ toys/rsget.pl/Video/Kanal2  Sat Nov 30 19:21:07 2013
@@ -8,7 +8,7 @@
 name: Kanal2
 short: V:Kanal2
 web: "http://kanal2.ee/";
-uri: qr{kanal2.ee/vaatasaateid/.+\?videoid=\d+}
+uri: qr{kanal(?:2|11).ee/vaatasaateid/.+\?videoid=\d+}
 # limit slots bacause rtmp support is very bad
 slots: 3
 status: OK 2013-11-30
@@ -16,7 +16,7 @@
 start:
        GET( $-{_uri} );
 
-       ! m{<div class="title"><a href=".+">(.+?)</a></div>};
+       ! m{<title>(.+?) - Vaata saateid - .+</title>} or m{<div 
class="title"><a href=".+">(.+?)</a></div>};
        my $title = $1;
 
        ! m{<div class="time" id="closed_time_block">(.+)</div>};
@@ -29,40 +29,54 @@
 
        $-{file_name} = de_ml("$title - $time");
     $-{file_name} =~ s{/}{_}g;
-       my $api_uri = "http://kanal2.ee/video/playerPlaylistApi?id=$videoId";;
+       my ($domain) = $-{_uri} =~ m{^(https?://[^/]+)};
+       $-{api_uri} = "$domain/video/playerPlaylistApi?id=$videoId";
 
-       GET( $api_uri, keep_referer => 1 );
+       GET($-{api_uri}, keep_referer => 1 );
 
-       # <streamItems host="rtmp://...">
-       #   <streamItem streamName="....mp4:..." bitrate="700" width="640" 
height="360" />
-       #   <streamItem streamName="....mp4:..." bitrate="500" width="480" 
height="270" />
-       # </streamItems >
-       ! m{<streamItems host="([^"]+)">(.+)</streamItems\s*>}ms;
-       my $vod_uri = $1;
-       my $items = $2;
-       my @list;
-       while (my($name, $bitrate, $width, $height) = $items =~ m{<streamItem 
streamName="([^"]+)" bitrate="(\d+)" width="(\d+)" height="(\d+)" />}) {
-               push(@list, [$name, $bitrate, $width, $height]);
-               $items = $';
-       }
+       if (m{<videoUrl><!\[CDATA\[(.+?)\]\]></videoUrl>}) {
+               # <videoUrl><![CDATA[http://....mp4]]></videoUrl>
 
-       ERROR( "no streams found" ) unless @list;
+               $-{file_uri} = $1;
+               my ($ext) = $-{file_uri} =~ /(\.[^.]+)$/;
+               $-{file_name} .= $ext;
+
+               # Don't use INFO(), it resets parsing
+               #INFO(name => $-{file_name});
+
+       } else {
+               # <streamItems host="rtmp://...">
+               #   <streamItem streamName="....mp4:..." bitrate="700" 
width="640" height="360" />
+               #   <streamItem streamName="....mp4:..." bitrate="500" 
width="480" height="270" />
+               # </streamItems >
+               ! m{<streamItems host="([^"]+)">(.+)</streamItems\s*>}ms;
+               my $vod_uri = $1;
+               my $items = $2;
+               my @list;
+               while (my($name, $bitrate, $width, $height) = $items =~ 
m{<streamItem streamName="([^"]+)" bitrate="(\d+)" width="(\d+)" height="(\d+)" 
/>}) {
+                       push(@list, [$name, $bitrate, $width, $height]);
+                       $items = $';
+               }
+
+               ERROR( "no streams found" ) unless @list;
+
+               # find best uri by bitrate
+               my @uri = (undef, 0, 0, 0);
+               foreach my $item (reverse @list) {
+                       next unless $item->[2] > $uri[2];
+                       @uri = @$item;
+               }
+               ERROR( "could not find best uri" ) unless @uri;
 
-       # find best uri by bitrate
-       my @uri = (undef, 0, 0, 0);
-       foreach my $item (reverse @list) {
-               next unless $item->[2] > $uri[2];
-               @uri = @$item;
-       }
-       ERROR( "could not find best uri" ) unless @uri;
+               my ($ext) = $uri[0] =~ /(\.[^:]+):.+?$/;
+               $-{file_name} .= $ext;
 
-       my ($ext) = $uri[0] =~ /(\.[^:]+):.+?$/;
-       $-{file_name} .= $ext;
+               my $url = $vod_uri . ' playpath='. $uri[0];
+               $-{file_uri} = $url;
 
-       INFO(name => $-{file_name}, quality => "$uri[3]x$uri[3]\@$uri[2]");
+               INFO(name => $-{file_name}, quality => 
"$uri[2]x$uri[3]\@$uri[1]");
+       }
 
-       my $url = $vod_uri . ' playpath='. $uri[0];
-       warn "URL[$url]\n";
-       DOWNLOAD($url, fname => $-{file_name});
+       DOWNLOAD($-{file_uri}, fname => $-{file_name});
 
 # vim: filetype=perl:ts=4:sw=4
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to