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

Reply via email to