SVN: toys/rsget.pl/Video/Kanal2
glen
glen at pld-linux.org
Sat Nov 30 19:21:07 CET 2013
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
More information about the pld-cvs-commit
mailing list