[PATCH] updated URL for BBC flash player, added --swfurl

dinkypumpkin dinkypumpkin at gmail.com
Sun Apr 24 20:11:21 EDT 2011

It has been 10 days and requests for the BBC flash player are still
being redirected, so I have committed a patch with the updated URL
into my master branch at github.  I have also added a --swfurl
command-line option to enable overriding the built-in URL if it
changes again.  This only really affects HD TV programme downloads.
Radio and non-HD TV programme downloads continue to work OK even
though an error message is generated by rtmpdump.  Reply to this
thread if any problems.

Updated get_iplayer script here:


Patch follows -

BBC is redirecting requests to the old flash player URL.
However, rtmpdump cannot follow the redirects.  For radio
and non-HD TV programmes, rtmpdump issues a "RTMP_HashSWF"
but continues downloading.  HD TV programme downloads fail
after a short time with a "Client Verification" error.  This
patches updates the flash player URL to the new location (see
Programme::bbciplayer::get_stream_date_cdn).  It also implements
a new --swfurl command-line option to enable overriding the flash
player URL if it should change again (see Streamer::rtmp::get and
see Streamer::rtmp::opt_format).  Also updated man page source.
 get_iplayer   |    4 +++-
 get_iplayer.1 |    3 +++
 2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/get_iplayer b/get_iplayer
index 433267d..108dbaf 100755
--- a/get_iplayer
+++ b/get_iplayer
@@ -5852,7 +5852,7 @@ sub get_stream_data_cdn {
 		# Common attributes
 		# swfurl = Default iPlayer swf version
 		my $conn = {
-			swfurl		=> "http://www.bbc.co.uk/emp/10player.swf?revision=18269_21576",
+			swfurl		=> "http://www.bbc.co.uk/emp/revisions/18269_21576_10player.swf?revision=18269_21576",
 			ext		=> $ext,
 			streamer	=> $streamer,
 			bitrate		=> $mattribs->{bitrate},
@@ -7998,6 +7998,7 @@ sub opt_format {
 		ffmpeg		=> [ 0, "ffmpeg=s", 'External Program', '--ffmpeg <path>', "Location of ffmpeg binary"],
 		rtmpport	=> [ 1, "rtmpport=n", 'Recording', '--rtmpport <port>', "Override the RTMP port (e.g. 443)"],
 		flvstreamer	=> [ 0, "flvstreamer=s", 'External Program', '--flvstreamer <path>', "Location of flvstreamer binary"],
+		swfurl	=> [ 1, "swfurl=s", 'External Program', '--swfurl <url>', "Override built-in URL of BBC flash player"],
@@ -8014,6 +8015,7 @@ sub get {
 	my $tcurl 	= $streamdata{tcurl};
 	my $authstring 	= $streamdata{authstring};
 	my $swfurl 	= $streamdata{swfurl};
+	$swfurl = $opt->{swfurl} if $opt->{swfurl};
 	my $playpath 	= $streamdata{playpath};
 	my $port 	= $streamdata{port} || $opt->{rtmpport} || 1935;
 	my $protocol	= $streamdata{protocol} || 0;
diff --git a/get_iplayer.1 b/get_iplayer.1
index 3917f36..d4bb9b3 100644
--- a/get_iplayer.1
+++ b/get_iplayer.1
@@ -480,6 +480,9 @@ Location of lame binary
 \fB\-\-mplayer <path>
 Location of mplayer binary
+\fB\-\-swfurl <url>
+Override built\-in URL of BBC flash player
 \fB\-\-vlc <path>
 Location of vlc or cvlc binary

More information about the get_iplayer mailing list