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
