Author: glen Date: Sat Nov 30 16:58:16 2013 New Revision: 12731 Added: toys/rsget.pl/Video/Kanal2 Modified: toys/rsget.pl/RSGet/Curl.pm Log: add Video::Kanal2
Modified: toys/rsget.pl/RSGet/Curl.pm ============================================================================== --- toys/rsget.pl/RSGet/Curl.pm (original) +++ toys/rsget.pl/RSGet/Curl.pm Sat Nov 30 16:58:16 2013 @@ -141,6 +141,12 @@ my $get_obj = shift; my %opts = @_; + # XXX hack: handle RTMP parameters with space + # http://sourceforge.net/p/curl/bugs/1278/ + if ($uri =~ m{(?:rtmp|rtmpt?(?:|e|s))://}o) { + $uri =~ s/%20(playpath=)/ $1/g; + } + my $curl = new WWW::Curl::Easy; my $id = 1; Added: toys/rsget.pl/Video/Kanal2 ============================================================================== --- (empty file) +++ toys/rsget.pl/Video/Kanal2 Sat Nov 30 16:58:16 2013 @@ -0,0 +1,68 @@ +# $Id: Delfi 12105 2011-02-03 09:44:17Z glen $ +# Video::Kanal2 - Video getter plugin for rsget.pl +# +# 2013 (c) Elan Ruusamäe <g...@pld-linux.org> +# This program is free software, +# you may distribute it under GPL v2 or newer. + +name: Kanal2 +short: V:Kanal2 +web: "http://kanal2.ee/" +uri: qr{kanal2.ee/vaatasaateid/.+\?videoid=\d+} +# limit slots bacause rtmp support is very bad +slots: 3 +status: OK 2013-11-30 + +start: + GET( $-{_uri} ); + + ! m{<div class="title"><a href=".+">(.+?)</a></div>}; + my $title = $1; + + ! m{<div class="time" id="closed_time_block">(.+)</div>}; + my $time = $1; + # strip <b>..</b> tags + $time =~ s#</?\w+>##g; + + ! m{videoId: '(\d+)'}; + my $videoId = $1; + + $-{file_name} = de_ml("$title - $time"); + $-{file_name} =~ s{/}{_}g; + my $api_uri = "http://kanal2.ee/video/playerPlaylistApi?id=$videoId"; + + 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 = $'; + } + + 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; + + my ($ext) = $uri[0] =~ /(\.[^:]+):.+?$/; + $-{file_name} .= $ext; + + INFO(name => $-{file_name}, quality => "$uri[3]x$uri[3]\@$uri[2]"); + + my $url = $vod_uri . ' playpath='. $uri[0]; + warn "URL[$url]\n"; + DOWNLOAD($url, fname => $-{file_name}); + +# vim: filetype=perl:ts=4:sw=4 _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit