About get_iplayer
This tool allows you to search, index and record/stream:
- BBC iPlayer TV - up to 3200 kbps HD 720p H.264 / Quicktime / MP4
- BBC Live TV - 500 kbps H.264 / MP4
- BBC iPlayer Radio - up to 192 kbps MP3 / AAC and Realaudio
- BBC Live Radio - up to 192 kbps MP3 / AAC, WMA and Realaudio
- BBC Podcasts - up to 192 kbps MP3 / AAC
- BBC iPlayer TV subtitles - SubRip / srt
Unlike the web sites above, get_iplayer has PVR-like capabilities (like Sky+ / TiVo / Series-Link); You can save lists of programme searches which are automatically recorded when they become available so that you can watch them when you choose and on devices that cannot run Adobe Flash Player - even if you don’t have adequate broadband speeds or if your broadband streams too slowly at peak hours when you want to watch a programme.
The iPhone H.264 feeds from the BBC are higher quality than in the Flash iPlayer (normal quality). See the beebhack wiki for a comparison. They are intended for the Apple iPhone and are consequently difficult to download for any other OS. The same goes for the iPhone MP3 radio streams. get_iplayer also allows recording of the high-quality (even HD 720p) flash based content using flvstreamer. None of the above content is ‘protected’ by DRM. get_iplayer cannot remove DRM.
Myself and a few others worked out how to work around these problems and now have tools which essentially simulate an iPhone as far as the BBC web servers are concerned.
get_iplayer, does the recording, indexing and searching of the iPlayer TV/Radio programmes and podcasts available. It can even stream the iPlayer TV programmes while recording them to mplayer or xine, etc. It does not circumvent any digital rights management security (see the BBC’s website on how to do that with the Windows-only DRM content they provide). The BBC iPlayer TV only work in the UK.
Uses
The script is primarily intended for use for recording and playing back TV and Radio content on devices that cannot support adobe Flash/Air/Silverlight, systems which run entirely on open-source software (i.e. no Adobe flash/air or Silverlight), recording content for mobile devices that have no access to broadband/wi-fi or running on devices that have such limited memory that running a browser with a flash player or AIR is not possible (or not permitted). For me this would be an Xbox running Xebian Linux with Freevo or XBMC. The Xbox only has 64MB of memory and struggles enormously with Adobe flash (Adobe doesn’t permit you run flash player or AIR on a games console either).
Fair Use
Of course, to respect the content providers’ wishes and fair-use legislation, you should keep the recorded content for no longer than 30 days (in the UK), not attempt to obtain it from outside of the UK and not redistribute it. get_iplayer is not intended for use in making illegal copies of copyrighted content. Please respect the rights of the content owners when recording. get_iplayer will attempt to remove it’s recorded content which is more than 30 days old.
Features
- Recording/Streaming of TV, Radio and Podcasts from BBC sites
- Recording/Streaming of Live BBC iPlayer TV & Radio
- Recording/Streaming of Embedded media in BBC Learning Zone, Archive and News sites
- PVR functionality allows predefined searches to be recorded from a scheduler such as cron or Windows scheduler
- Queuing of programmes for batched recording or for recording off-peak
- Resume recordings of partially recorded content
- Stream iPlayer or podcast content via mplayer or xine while recording it
- Allow multiple programmes to be recorded in one command
- Indexing of all available programmes
- Script update capability
- Advanced Searching on programme name, episode, description, channel or category, etc
- Limit search by programmes made available after a specific number of hours
- Removal of recorded content which is more than 30 days old
- Meta-tagging of recorded iPlayer iPhone/H.264 and mp3 files for importing into iTunes
- Plug-in based architecture to allow new channels and sites to be added by 3rd-parties
Reported to Work on:
It has been tested by users under Linux (Fedora, Centos/RHEL, Ubuntu, Debian, OpenSuSE, OLPC, ArchLinux, Puppy, NSLU2), MacOSX, iPhone and Windows 2000/XP/VIsta/7 (Cygwin, Strawberry Perl)
Using get_iplayer
See the instructions and examples here
Downloading get_iplayer
See here
Installing get_iplayer
See the installation instructions here
Contact
You can send me bug reports in the comments below or email them to me at iplayer2 (at sign) linuxcentre.net
Thanks fir the reply. I kinda like having the description as it helps the old memory a bit. Could this be a feature request for a sanity check on the file name?
Oh well I appreciate the program and the effort you have no complaints from me.
Thanks again
Have you tried lloking at the --metadata option (get_iplayer --long-help). It creates a metadata file with all the prog info in it.
Can you let me know what fields from the get_iplayer --info output should go in what parts of the freevo xml for video and audio?
Does anybody know why The Sky at Night isn’t being picked up? I’ve used “-f” to force a new scan, but nothing matches for “Sky”. I’ve had to resort to grabbing using --pid.
Give it a chance
- only just broadcast < 1hr ago!! Feeds aren’t always published quite as timely as you’d expect.
The video FXD file will look something like
<?xml version="1.0" ?>
<freevo>
<movie title="[longname]">
<video>
<file id="f1">[fileprefix.EXT]</file>
</video>
<info>
<rating></rating>
<userdate>[dldate] [dltime]</userdate>
<plot>[desc]</plot>
<tagline>[episode]</tagline>
<year>[firstbcast]</year>
<genre>[categories]</genre>
<runtime>[duration]</runtime>
<channel>[channel]</channel>
</info>
</movie>
</freevo>
and the radio one (although Im not so sure of this) should be like
<?xml version="1.0" ?>
<freevo>
<audio title="[longname]">
<video>
<file id="f1">[fileprefix.EXT]</file>
</video>
<info>
<rating></rating>
<userdate>[dldate] [dltime]</userdate>
<plot>[desc]</plot>
<tagline>[episode]</tagline>
<year>[firstbcast]</year>
<genre>[categories]</genre>
<runtime>[duration]</runtime>
<channel>[channel]</channel>
</info>
</audio>
</freevo>
The file element should be just the filename with the correct extension.
Thanks for that. I’ve added it to upcoming v2.56
I’ve been recording radio programmes (outside UK) in the AAC format, thinking this would be fine for the ipod. Now I have an “ipod touch” and find these files do not play (they play fine in quicktime). In there a trick to getting them to play?
- I tried renaming the extension to .m4a. No luck.
- I tried wrapping aac to m4a with ffmpeg -i “file.aac” -vn -acodec copy “file.m4a”. No luck.
I’d prefer not to have to convert these files to another format.
see discussion
http://linuxcentre.net/bbc-iplayer-aac-radio-streams-now-available-using-get_iplayer
Hi, I am now using rtmpdump 2.1b with get_iplayer. (I won’t go into why!). Your version checking (flvstreamer/rtmpdump) fails for 2.1b so commented out for now.
Just to let you know.
Thanks for a great tool.
Using to download radio programs in Thailand.
On another topic, how do I use proxy to download TV progs outside uk? My router (in the UK) is connected. If I finf the IP, can I use? If so, can you tell me how please?
Thanks again.
Sorry just realised my version was a few months out of date - upgraded to 2.55 and it works.
Problem is get_iplayer checks for the ‘v’ in version number,but shipped rtmpdump makefile
has DEF=-DRTMPDUMP_VERSION=\”2.1b\”
change to DEF=-DRTMPDUMP_VERSION=\”v2.1b\”
Cures problem…
Still looking for an answer to:-
How do I use proxy to download TV progs outside uk? My router (in the UK) is connected. If I find the IP, can I use? If so, can you tell me how please?
There was an inadvertent change made to the version string in rtmpdump 2.1b - it will revert in the next release by them. I’ll also work around it in next get_iplayer. Use flvstreamer for now as that is actually tested before release with get_iplayer.
Simply having a router in the UK does not allow you to proxy. You’d need to use a SOCKS wrapper or maybe you can get away with a web proxy in some cases - see the documentation on this.
I just started getting this error over the last few days - have the BBC changed something at their end?
get_iplayer --get 508
get_iplayer v2.49, Copyright (C) 2009 Phil Lewis
This program comes with ABSOLUTELY NO WARRANTY; for details use --warranty.
This is free software, and you are welcome to redistribute it under certain
conditions; use --conditions for details.
Matches:
508: The Choir - Boys Don’t Sing: Revisited, Signed, Factual,Guidance,Music,Sign Zone,TV, signed
INFO: 1 Matching Programmes
INFO: Checking existence of signed version
INFO: No specified modes (iphone) available for this programme with version ’signed’ (try modes: )
ERROR: Failed to record ‘The Choir - Boys Don’t Sing: Revisited (b00n45ll)’
Your version is old.
Cheers from me too.
I was getting the same message and had no idea what had changed.
All working again now I’ve updated (get_iplayer -u)
Thanks for the freevo metadata mode.
It’s not quite right. The file name used in the fxd file should be just the basename without the full path.
So instead of [filename] please use
[fileprefix].[ext]
I also noticed that [ext] expands to “EXT” instead of the correct file extension. This is true in --info mode as well as in the xbmc_movie metadata file.
Ah! the EXT issue only seems to to occur when the --info flag is used or --metadataonly --metadata xbmc_movie.
I guess that it’s because there is no real file in this case. Odd though.
The EXT is only there in instances where the actual prog isn’t recorded because the format is only found upon attempted download. So as long as you successfully record it is set correctly.
I’ll fix the path thing in the next release - sorry - my oversight there.
Great - thank you for your efforts. This is a brilliant tool.
I’ve noticed that the iPlayer web interface has episode number info that doesn’t seem to feature in the other metadata sources processed by get_iplayer.
It isn’t always present but two examples are QI and Timmy Time where the episode title is displayed with the episode number before it:
http://www.bbc.co.uk/iplayer/episode/b00k796p/Timmy_Time_Timmy_Afloat/
http://www.bbc.co.uk/iplayer/episode/b00pn43s/QI_Series_7_Genius/
It would be nice to make use of this.
The episode number is also listed on the programme page, along with the total number in the series, which might also be interesting info for “series link” style functionaity e.g. “EPISODE 1 OF 12″ says
http://www.bbc.co.uk/programmes/b00pwn4v
Those episode numbers are already there - I added that yesterday
The “EPISODE 1 OF 12″ bit I’ll look into - I’ll have to find what metadata URL contains this - get_iplayer does not scrape web pages as such…
Hi Matt, this is now fixed in 2.56
Thanks Phil, saw this in the changelog
btw, cumulative changelog after an update is great.
Thanks for your reply
For info, files do download as mp3, at same bitrate/quality, using either ‘iphone’ or ‘flashaudio’. Flashaudio does not seem to contain tag info (does not appear in my tag-edit prog, anyway..), but iphone d-l does. That’s saved me a whole heap of copy-&-pasting!!
Problem solved, thanks again.
They will if you have id3v2 binary installed (don’t think it’s available for windows though).
Hi,
I’ve said it before, but it needs to be said again: this is a fantastic piece of code and I congratulate you on creating it in the first place and, more importantly, keeping it constantly updated. Great job!
I do, however, think I may have found a bug that’s been present since (at least) v2.49…
I’ve just updated to the latest version (v.2.58). I have my system set up to download both the flashhd version (if available) and the flashvhigh version of each programme I specify. The relevant options for this are (from my options file):
multimode 1
versionlist default
tvmode flashhd,flashvhigh
fileprefix - - -
type tv
metadata generic
I’ve just tried downloading “Coming of Age” (pid b00pzdw4). The HD version downloaded OK (including an associated metatdata file):
Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashhd1.mp4
Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashhd1.xml
However, after get_iplayer successfully uses ffmpeg to create the mp4 file from the Flash video file I see this:
INFO: Recorded /Users/mike/Movies/BBC iPlayer/Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashhd1.mp4
INFO: Writing generic metadata to file ‘/Users/mike/Movies/BBC iPlayer/Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashhd1.xml’
INFO: Trying flashhd2 mode to record tv: Coming of Age: Series 2 - 1. Rudies
INFO: Coming of Age: Series 2 - 1. Rudies (b00pzdw4 / flashhd) Already in download history (/Users/mike/.get_iplayer/download_history) - use --force to override
INFO: Trying flashvhigh1 mode to record tv: Coming of Age: Series 2 - 1. Rudies
INFO: File name prefix = Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashvhigh1
WARNING: File /Users/mike/Movies/BBC iPlayer/Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashhd1.mp4 already exists
INFO: skipping this programme
INFO: Trying flashvhigh2 mode to record tv: Coming of Age: Series 2 - 1. Rudies
INFO: File name prefix = Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashvhigh2
WARNING: File /Users/mike/Movies/BBC iPlayer/Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashhd1.mp4 already exists
INFO: skipping this programme
ERROR: Failed to record ‘Coming of Age: Series 2 - 1. Rudies (b00pzdw4)’
Two issues:
1) Why does get_iplayer try to download the flashhd2 version when it successfully downloaded the flashhd1 version? No a major problem, but it appears unnecessary.
2) Despite the fact it shows the correct prefix for the flashvhigh version in the output (”Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashvhigh1″), it complains that the previously downloaded *flashhd1* version already exists (”Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashhd1.mp4″). As a result it skips the flashvhigh version.
I suspect this is due to my use of the fileprefix option to include the in the filename and for some reason this isn’t being updated properly after the first download when the multimode option is used.
I can provide you with more background to this is you wish to email me directly.
Thanks again for the great work.
Mike.
Something (the comment system?) has striped anything enclosed with chevrons from my post.
My fileprefix option should read:
fileprefix [name] - [episode] - [pid] - [mode]
(but with square brackets replaced by chevrons)
The sentence towards the end should read:
I suspect this is due to my use of the fileprefix option to include the [mode] in the filename and for some reason this isn’t being updated properly after the first download when the multimode option is used.
Hi, can you paste the matching lines in the download_history file for ‘Coming of Age: Series 2 - 1. Rudies’ here? Thanks.
There only is one line (as only one version was downloaded):
b00pzdw4|Coming of Age: Series 2|1. Rudies|tv|1263408305|flashhd1|/Users/mike/Movies/BBC iPlayer/Coming of Age: Series 2 - 1. Rudies - b00pzdw4 - flashhd1.mp4|default|1800|Ollie refuses to get a tetanus jab after falling on a nail. DK causes havoc with a ventriloquist’s doll and Chloe demands Matt makes amends for blabbing about their sex life.|BBC Three|Comedy,Sitcoms|http://www.bbc.co.uk/iplayer/images/episode/b00pzdw4_150_84.jpg|adult|http://www.bbc.co.uk/programmes/b00pzdw4.html|
Just run it twice to get the second mode etc. It’s a funny bug that’s been there forever AFAIK
No problem. This is what I’ve been doing anyway.
I’ve got a fix for it in 2.59. I’m holding this version back for a while because it’s had rather a lot of patching applied…
I look forward to seeing the new version!
I see v2.59 is out. Thanks!
Get_iplayer seems to have stopped working on my work machine recently. I’m running it on Cygwin 1.7.1 on XP 32-bit.
The problem seems to be when get_iplayer tries to download with flvstreamer. I’ve tried compiling flvstreamer from source but I get the same problem. It works fine on my home machine (Cygwin 1.7.1 on XP 64-bit), but only if I use flvstreamer 1.9 . I haven’t been following flvstreamer/rtmpdump development, but since v1.9, the cygwin executable size has jumped from 668k to 82k.
What I have done recently is upgrade my Cygwin one or two weeks ago. But I’ve done this on both machines and it still works on my home machine.
The only error messages I get are
WARNING: rtmpdump >= 1.5 or flvstreamer is required - please upgrade
DEBUG: Record using flashvhigh1 mode return code: ‘next’
This problem occurs for all tv programmes on all modes.
Have you tried running the newest installer (released last night) and re-installing flvstreamer (non-cygwin)? The non-cygwin 2.1a version has now resolved previous ‘recv 10060′ errors that drove us to using cygwin. Also, can you open a get_iplater cmd window and type ‘.\flvstreamer.exe -h’ then paste the output, if any here?
Cheers mate,
I’ve never tried using the installer before. It works perferctly now, better than the cygwin version.
Thanks!
Glad to hear it. Strange that the flvstreamer 2.1a wouldn’t build for you - it worked out of the box for me on cygwin WinXP 32bit using ‘make cygwin’
Oh no, I could build flvstreamer 2.1a, it just did not download rtmp streams. Now I realise what I had been building it wrong. I had been using ‘make linux’ for the cygwin builds. Incidentally, ‘make linux’ on cygwin built and ran fine for several releases >=1.6 . I never saw ‘make cygwin’ in the flvstreamer README. I only saw ‘make cygwin’ when I ran ‘make’ on its own.
Cygwin built flvstreamer 2.1a works now for me. However I have noticed that the connection is a tad unstable and needs to retry a lot. But that is probably my ADSL connection.
Just upgraded to v2.59 and now the PVR functionality doesn’t seem to be working - it went through the list of shows I have set and didn’t start downloading any new episodes, even though I know there are some available.
Same here. --pvr-single still seems to work. It appears that the values in the hash structure holding the cache are emptied after the first PVR search is completed, so no subsequent regex matches are made. Still poking around for the cause.
Looks like it was small typo in 2.59. Where global memcache is filled in get_links(), there was missing $ in the hash index
Around lin 1426, this:
$memcache->{$prog_type}->{$pid} = $progref->{pid};
I think should be this:
$memcache->{$prog_type}->{$pid} = $progref->{$pid};
Get v2.60 - thanks
Forget that - there may be more to the problem than I, in my profound Perl ignorance, realised. Looks like 2.59 was pulled, so presumably the proper fix is on the way.
Thanks Dink - sorry - had a busy day. Yes, it was just very bad coding on my part. 2.60 is out now and seems to be much better. Needed quite a lot of work to get it working properly
Yes, it seems to be working fine now, thanks.
And thanks from me as well
I was looking to download the archive episodes of Radio 4’s “In Our Time”. After clicking around a few misleading BBC web pages I stumbled across this iPlayer archive page:
http://www.bbc.co.uk/programmes/b006qykl/episodes/player
By providing the programme id’s from the info links listed on that page get_iplayer does its job in the usual excellent manner.
I’m mostly posting this to help anyone else searching for how to do this. However, it’s left me wondering how much other such BBC iPlayer content is hidden from the standard get_iplayer search, and from the main iPlayer website, since both show only the latest episode.
Comments are now closed. Please use the forums on http://linuxcentre.net/forum/