aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzakflash <zakflashvideo@gmail.com>2012-10-03 12:24:23 -0700
committerzakflash <zakflashvideo@gmail.com>2012-10-03 12:24:23 -0700
commit2758eecbd2a75a323847cd8d94038cdba00d71da (patch)
treeab33223a9850973b6c82e89c78f779790275960b
parent36228b9f9239fd7e7301e194207844cb9fe623ed (diff)
parent20a4b892eef3df7bc50675fb6af40f3927d41583 (diff)
downloadget-flash-videos-2758eecbd2a75a323847cd8d94038cdba00d71da.tar.gz
Merge pull request #76 from psycotica0/master
YouTube fixes, and other stuff from njtaylor's branch.
-rw-r--r--lib/FlashVideo/Site/Channel5.pm10
-rw-r--r--lib/FlashVideo/Site/Kanal5play.pm2
-rw-r--r--lib/FlashVideo/Site/Presstv.pm50
-rw-r--r--lib/FlashVideo/Site/Svtplay.pm6
-rw-r--r--lib/FlashVideo/Site/Tv3play.pm12
-rw-r--r--lib/FlashVideo/Site/Youtube.pm13
6 files changed, 78 insertions, 15 deletions
diff --git a/lib/FlashVideo/Site/Channel5.pm b/lib/FlashVideo/Site/Channel5.pm
index bed998a..643b3f6 100644
--- a/lib/FlashVideo/Site/Channel5.pm
+++ b/lib/FlashVideo/Site/Channel5.pm
@@ -45,6 +45,12 @@ sub find_video {
}
}
+# from script
+# <script src="http//wwwcdn.channel5.com/javascript/all.js?"
+# playerID is set to 1707001746001 by default or 1707001743001 for firefox
+# 138489951601 for MSIE.
+ $player_id ||= "1707001743001";
+
debug "Extracted playerId: $player_id, sessionId: $metadata->{sessionId} videoplayer: $metadata->{videoplayer} publisherId: $metadata->{publisherId} "
if $player_id or $video_id;
@@ -161,9 +167,9 @@ EOF5
my $episodenumber = $packet->messages->[0]->{value}->{programmedContent}->{videoPlayer}->{mediaDTO}->{customFields}->{episodenumber};
my $show = ($page_url =~ m!/shows/([^/]+)/!i)[0];
my $episode = ($page_url =~ m!/episodes/([^/]+)!i)[0];
- my $filehead = $show . "_Series" . $seasonnumber;
+ my $filehead = sprintf("%s_S%02d", $show, $seasonnumber);
if ( $show ne $episode ) {
- $filehead = $filehead . "_Episode" . $episodenumber . "_" . $episode;
+ $filehead = sprintf("%s_S%02dE%02d_%s", $show, $seasonnumber, $episodenumber, $episode);
}
my $encode_rate = $encode_rates->{$prefs->{quality}};
if (! defined $encode_rate ) {
diff --git a/lib/FlashVideo/Site/Kanal5play.pm b/lib/FlashVideo/Site/Kanal5play.pm
index ce51639..2b37ea8 100644
--- a/lib/FlashVideo/Site/Kanal5play.pm
+++ b/lib/FlashVideo/Site/Kanal5play.pm
@@ -36,7 +36,7 @@ sub find_video {
my ($playpath) = $json->{streams}[0]->{source};
my $i;
- foreach $i (keys $json->{streams}) {
+ foreach $i (keys @{ $json->{streams} }) {
my ($rate) = int($json->{streams}[$i]->{bitrate});
if($bitrates->{$prefs->{quality}} == $rate){
$playpath = $json->{streams}[$i]->{source};
diff --git a/lib/FlashVideo/Site/Presstv.pm b/lib/FlashVideo/Site/Presstv.pm
new file mode 100644
index 0000000..a4aa7db
--- /dev/null
+++ b/lib/FlashVideo/Site/Presstv.pm
@@ -0,0 +1,50 @@
+# Part of get-flash-videos. See get_flash_videos for copyright.
+package FlashVideo::Site::Presstv;
+
+use strict;
+use FlashVideo::Utils;
+use URI;
+
+sub find_video {
+ my ($self, $browser, $embed_url, $prefs) = @_;
+
+ my $page_url = $browser->uri;
+ my $swfVfy = ($browser->content =~ /SWFObject\('(http.[^']+)'/i)[0];
+ my $rtmp = ($browser->content =~ /'streamer',\s*'(rtmp:[^']+)'/i)[0];
+ my $file = ($browser->content =~ /'file',\s*'([^']+)'/i)[0];
+ my $app = ($rtmp =~ m%rtmp://[^/]+/(.*)$%)[0];
+ my $filename = ($file =~ m%/([^/]+)$%)[0];
+ $filename =~ s/:/_/g;
+
+ my @rtmpdump_commands;
+
+ my $args = {
+ app => $app,
+ pageUrl => $page_url,
+ swfVfy => $swfVfy,
+ rtmp => $rtmp,
+ playpath => $file,
+ flv => "$filename.flv",
+ };
+
+ push @rtmpdump_commands, $args;
+
+ if (@rtmpdump_commands > 1) {
+ return \@rtmpdump_commands;
+ }
+ else {
+ return $rtmpdump_commands[-1];
+ }
+}
+
+sub can_handle {
+ my($self, $browser, $url) = @_;
+
+ my $host = URI->new($url)->host;
+ return 1 if $url && $host =~ /^presstv\.(com|ir)$/;
+ return 1 if $url && $host =~ /\.presstv\.(com|ir)$/;
+ debug "Presstv.pm no match found\n";
+ return 0;
+}
+
+1;
diff --git a/lib/FlashVideo/Site/Svtplay.pm b/lib/FlashVideo/Site/Svtplay.pm
index b5c682a..56e3ec1 100644
--- a/lib/FlashVideo/Site/Svtplay.pm
+++ b/lib/FlashVideo/Site/Svtplay.pm
@@ -6,6 +6,7 @@ use warnings;
use FlashVideo::Utils;
use FlashVideo::JSON;
+use HTML::Entities;
sub find_video {
my ($self, $browser, $embed_url, $prefs) = @_;
@@ -14,10 +15,10 @@ sub find_video {
if ($browser->uri->as_string !~ m/video\/([0-9]*)/) {
die "No video id found in url";
}
-
my $video_id = $1;
+ $browser->content =~ m/<title>(.+)<\/title>/;
+ my $name = decode_entities($1);
my $info_url = "http://www.svtplay.se/video/$video_id?output=json";
-
$browser->get($info_url);
if (!$browser->success) {
@@ -25,7 +26,6 @@ sub find_video {
}
my $video_data = from_json($browser->content);
- my $name = $video_data->{context}->{title};
my $bitrate = 0;
my $rtmp_url;
diff --git a/lib/FlashVideo/Site/Tv3play.pm b/lib/FlashVideo/Site/Tv3play.pm
index c11e060..312a9fa 100644
--- a/lib/FlashVideo/Site/Tv3play.pm
+++ b/lib/FlashVideo/Site/Tv3play.pm
@@ -68,13 +68,11 @@ sub find_video_viasat {
};
- return{
- rtmp => $rtmp,
- swfVfy => "http://flvplayer-viastream-viasat-tv.origin.vss.viasat.tv/play/swf/player110420.swf",
- flv => $flv_filename
- };
-
-
+ return {
+ rtmp => $rtmp,
+ swfVfy => "http://flvplayer.viastream.viasat.tv/play/swf/player120328.swf",
+ flv => $flv_filename
+ };
}
1;
diff --git a/lib/FlashVideo/Site/Youtube.pm b/lib/FlashVideo/Site/Youtube.pm
index 70e4994..ce84859 100644
--- a/lib/FlashVideo/Site/Youtube.pm
+++ b/lib/FlashVideo/Site/Youtube.pm
@@ -23,6 +23,12 @@ my @formats = (
sub find_video {
my ($self, $browser, $embed_url, $prefs) = @_;
+ # There are a few different kinds of URLs that end up on the same page
+ # So, let's canonicalize to the "real" one
+ if ($browser->content =~ m!<link *rel=['"]canonical['"] *href=['"]([^'"]*)!) {
+ $embed_url = "http://www.youtube.com$1"
+ }
+
if($embed_url !~ m!youtube\.com/watch!) {
$browser->get($embed_url);
if ($browser->response->header('Location') =~ m!/swf/.*video_id=([^&]+)!
@@ -61,7 +67,7 @@ sub find_video {
my $video_id;
if ($browser->content =~ /(?:var pageVideoId =|(?:CFG_)?VIDEO_ID'?\s*:)\s*'(.+?)'/
- || $browser->content =~ /"video_id": "([^"]+)"/
+ || $browser->content =~ /video_id=([^&]+)/
|| $embed_url =~ /v=([^&]+)/
|| $browser->content =~ /&amp;video_id=([^&]+)&amp;/) {
$video_id = $1;
@@ -178,6 +184,7 @@ sub parse_youtube_url_encoded_fmt_stream_map {
my $format = "";
my $url = "";
+ my $signature = "";
foreach my $pair (split /&/, $params) {
my ($name, $value) = split /=/, $pair;
@@ -185,10 +192,12 @@ sub parse_youtube_url_encoded_fmt_stream_map {
$format = $value;
} elsif ($name eq "url") {
$url = uri_unescape($value);
+ } elsif ($name eq "sig") {
+ $signature = $value;
}
}
- $map->{$format} = $url;
+ $map->{$format} = $url."&signature=".$signature;
}
return $map;