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