pax_global_header00006660000000000000000000000064125336474630014527gustar00rootroot0000000000000052 comment=e8e81942394eed7e0f63cf977737054a5a22530a get_iplayer-2.94/000077500000000000000000000000001253364746300137715ustar00rootroot00000000000000get_iplayer-2.94/CHANGELOG-get_iplayer.cgi.txt000066400000000000000000000255321253364746300210730ustar00rootroot00000000000000NOTE: This change log ends at the point get_iplayer was abandoned by its original developer. It is made available solely for historical reference. Subsequent changes are listed in: http:/www.infradead.org/get_iplayer/CHANGELOG-get_iplayer Version 0.70 - 20100226 * Added Back buttons on recordings delete page. * Made delete page less verbose. * Changed 'Record' button and links to perform immediate recording in a new browser tab. * Added 'Queue' button and links to queue programme for PVR recording. Version 0.69 - 20100130 * Added basic edit support for PVR List entries. Version 0.68 - 20100129 * Fixed tab logic based on posted options as well as next page. Version 0.67 - 20100128 * Set the pageno variable to 1 when we do a series/category/channel click otherwise results may be empty. Version 0.66 - 20100128 * Disable update for win32 due to vista/win7 UAC VirtualStore problems. Version 0.65 - 20100125 * Lots of cosmetic and layout changes. Version 0.64 - 20100124 * Fixed problems with html entity encoding with passed search params. * Added Freevo FXD format into metadata formats. * Added PVR Hold off period option. * Currently displayed options tab is no longer saved as default. * Simplified the tab selection code. * Fixed a few CSS errors when hiding the options tabs. Version 0.63 - 20100122 * Added Series, Category and Channel hyperlinks. * Moved column selectors to options panel. * Column selections are now saved with settings. * Added support for future programme schedule searches. * Delete button now removes thumbnail, subs and metadata files. Version 0.62 - 20100121 * Integrated improvements in get_iplayer v2.65 using --skipdeleted option. * Guess URLs of missing thumbnails. Version 0.61 - 20100120 * Added action bar after programme listings for ease of navigation. Version 0.60 - 20100107 * Added Series/Episode Numbers to headings. Version 0.59 - 20091108 * Check for get_iplayer script at start-up. * Added --before option to GUI Version 0.58 - 20091107 * Fixed bug where multiple prog types werer being specified when record was clicked. Version 0.57 - 20091024 * When multi-select Play is used in Search mode, if there is no mode associated with the programme, use the users modes list. * Force livetv mode to not transcode for stream modes. Version 0.56 - 20091023 * Updated default modes lists to allow for new flashaachigh, flashaacstd and flashaaclow modes. Version 0.55 - 20091021 * opml top-level menu mode added for new Squeezecenter plugin. Version 0.54 - 20091002 * Fixed bug where refresh page didn't correctly set the selected prog types when reloading or forced refresh. Version 0.53 - 20090924 * Minor UI tweaks to page titles and fixed a few typos. Version 0.52 - 20090922 * Fixed bug where form.target value was set incorrectly after a pvr run. * Made bitrate, frame rate and video size options apply to all streaming playback methods except file based playlists. * 'Refresh Cache' and 'PVR Run' now open sepearate tabs and auto-run according to interval set in preferences. * Todo: Use of async web requests to refresh caches and run PVR. * Normal use of the Web interface no longer refreshes the cache - this must now be triggered manually or on a PVR Run Version 0.51 - 20090920 * Fixed bug when form values are set and submit() is called and upon 'Back' the field is still set - created a js function to backup and restore form in a global hash. * Made Remote Stream Type into a popup box. * Fixed 'Play' link on recorded files to create a playlist to play the file streamed from the get_iplayer server. * Fixed libfaac bitrate to 160k - the maximum supported. * Fixed bug where apostrophies in prog names or pids caused js errors. Version 0.50 - 20090919 * Fixed squeezebox wav streaming for liveradio which broke in 0.49. * Improved and fixed auto-detection for audio flv streaming. Version 0.49 - 20090918 * Fixed bug where 'Play' links in search mode were not inheriting the modes option. * Added a Remote Stream Type option to allow user to control what media format gets sent to the media player. * If Remote Stream Type is set to 'none' then all transcoding is disabled. * Issue: Play links are causing stream_prog to remux get_iplayer flv output to flv, unavoidable unless we can get the mode in advance of streaming. * Issue: URL based pids like http://news.bbc.co.uk/1/hi/uk/7875336.stm which have different content at different times need to have a unique id added to pid. Version 0.48 - 20090918 * Improved Options tabs navigation. * Simplified a few button labels. * 'Update Software' now updated get_iplayer also. * Todo: Read-only mode - i.e. start-up or ENV option to remove all write or PVR changes * Todo: Add a 'Run' action to each item in the PVR List to allow it to be recorded right away. Version 0.47 - 20090917 * All recorded or localfiles media can now be streamed remotely - access PVR from anywhere. * Re-mux mp4/avi/mov files to flv when direct streaming recordings from the web server, this allows remote streaming into a media player. * Added Reverse Sort preference. * Added stream transcoding audio bitrate, video size and framerate options for 'Remote Play' streaming. * Added new Display/Search/Output/Streaming preferences tabs. Version 0.46 - 20090916 * Rework playlist URLs * Added support for PlayFile action on pids that are files * Moved paging and sortng of search results into get_iplayer for better efficiency * Created functions to build the playlist and stream URLs * Forced ffmpeg to output stereo regardless of mono source - fixes problems with Squeezebox. * Added 'Quick URL' box to allow user to either record play any supported iPlayer or BBC video/audio page. * Known Bug: 'Play' link for Quick URL recordings where the pid is a URL doesn't work * Todo: Add a way of getting opml URLs (footer link?) Version 0.45 - 20090914 * Where the recordings history has relative paths, try to convert to absolute paths so that playlists work * Added 'Create File Playlist' action button to 'Recordings' tab Version 0.44 - 20090913 * Added 'Delete Selected Recordings' button * Hide deleted recordings option * In ACTION=direct mode, use PID=| because there may be >1 mode per pid * Added a preferences page/tab. Version 0.43 - 20090913 * Added thumbnail, metadata and subtitle download support * Recording options now get applied with 'Queue' * 'Recordings' tab now works in non-search pages * Added filename and mode columns for Recordings list Version 0.42 - 20090912 * Support https protocol under apache. Version 0.41 - 20090911 * Added 'Recordings' Tab as a quick way of accessing history, clears a number of search items to make all history show in most recent order. * History setting is no longer saved as a cookie (please remove this cookie if you have it saved) Version 0.40 - 20090911 * 'PVR Run' now opens a new tab. * Added direct streaming/playback of recorded files in the history. Version 0.39 - 20090911 * Fixed Apache CGI support * Changed all stream URLs from http://127.0.0.1/METHOD?options to http://127.0.0.1/iplayer?ACTION=METHOD&options - see README-get_iplayer.cgi.txt * Old stream URLs should still work with embedded web server in addition to new form above. * Made Output directory override option apply to 'Queued for Recording' and 'Queue' Version 0.38 - 20090910 * popup a warning if no programmes are selected for some actions. * Made the info page prettier, made URLs into hyperlinks and display a thumbnail, added Play and Queue buttons * Added ability to search PVR history of recordings. * Added tooltips for all options. * No display of broken thumbnails. Version 0.37 - 20090909 * Fixed empty modes list for create playlist button. * Added flashstd mode to default modes list. Version 0.36 - 20090908 * Added back buttons. * All PVR manipulation pages now re-list the PVR searches after performing the PVR add/queue/del. * Improved signal handling. Version 0.35 - 20090907 * Remove SINCE option from Series link. Version 0.34 - 20090907 * Created win32 specific command forking subroutings cos windows is rubbish with forking in perl. Version 0.33 - 20090905 * Added 'Series' link to each listed programme to allow the creation of a PVR record for that series. Version 0.32 - 20090905 * Improved external command invocation to use IPC::open3 and non-shell where possible * Latest automated installer 2.2 required for non-Unix platforms Version 0.31 - 20090813 * Added tooltip help to buttons Version 0.30 - 20090813 * Modified the items per page list. Now defaults to 10 * Display the Programme Types in a multi-row table for better readability. Version 0.29 - 20090805 * URL encode all user definable fields that are sent to get_iplayer to improve security * Changed versionlist to versions for sort and search fields * Added --listen option for listen address - defaults to 0.0.0.0 * Warn user of insecure remote access capability if 127.0.0.1 is not used for a listen address * Added script update feature * Added Queue option for each programme Version 0.28 - 20090730 * Tweaked Run PVR so that output gets rendered in browser. * Updated mouse pointers over links and buttons. * Added iphone and realaudio to the mode list for 'Play' generated playlists. * New Logo Version 0.27 - 20090729 * Added a new 'P' link to each programme. Clicking on it opens a player to play the contained M3U playlist. Version 0.26 - 20090728 * Added ability to create playlist from selected programmes in GUI Version 0.25 - 20090727 * Added --port, --getiplayer, --debug and --ffmpeg options to replace old cmdline args * get_iplayer is now searched for in cwd and /usr/bin if not specified using --getiplayer * Fixed bug where get_iplayer command was not correctly called for plugin evaluation Version 0.24 - 20090724 * Squeezebox Browseable OPML playlist support * Add a favourite to Squeezebox e.g. http://:1935/opml?PROGTYPES=radio&MODES=flash,iphone&LIST=channel * Or for AAC liveradio: http://:1935/opml?PROGTYPES=liveradio&OUTTYPE=wav * Requires get_iplayer 2.11 or later Version 0.23 - 20090723 * Playlist generation support - point vlc or mplayer at "http://127.0.0.1:1935/playlist?TYPE=" * Playlist URLs can use the SEARCH='' syntax to limit the playlist to names of programmes. * e.g. "http://127.0.0.1:1935/playlist?PROGTYPES=liveradio&SEARCH=' \d '" to limit to liveradio with single digits in names. * Syntax change for streaming proxy support: * e.g. FLAC stream for liveradio: http://localhost:1935/stream?PID=liveradio:bbc_radio_one&MODES=flashaac&OUTTYPE=flac" * ffmpeg needs to be in the system PATH of the shell that invokes it. Version 0.22 - 20090722 * Vastly improved streaming proxy support. * e.g. FLAC stream for liveradio: http://localhost:1935/stream?SEARCH=liveradio:bbc_radio_one&MODES=flashaac&OUTTYPE=flac" * Can now get high quality WAV streams of flashaac radio and liveradio on a Squeezebox. Version 0.21 - 20090719 * Updated PVR Manager script with latest options changes. * PVR Manager now runs better under Win32 - still no streaming. get_iplayer-2.94/CHANGELOG.txt000066400000000000000000002111631253364746300160250ustar00rootroot00000000000000NOTE: This change log ends at the point get_iplayer was abandoned by its original developer. It is made available solely for historical reference. Subsequent changes are listed in: http:/www.infradead.org/get_iplayer/CHANGELOG-get_iplayer Version 2.75 - 20100307 * Fixed bug where symlinks could be created when streaming-only. Version 2.74 - 20100307 * Fixed regression from 2.74 in failing to make dir for non-existant output dir. Version 2.73 - 20100307 * Fix typo in --refreshfuture option. * Only create output and/or subdir when actually required - fixes bug where subdir was created when streaming-only. * Removed incorrect entity decoding of iPlayer RDF. * Remove some deprecated options and tidied help a little. * Removed support for flvstreamer prior to v1.8. Version 2.72 - 20100226 * Skip subtitles download if the file already exists. * Only rename the partial subtitle file after the whole stream is recorded successfully. Version 2.71 - 20100225 * Added modeshort substitution parameter which is the same as mode but without the trailing digit. * Make sure that any fileprefix that specifies mode doesn't use the trailing digit to prevent duplicate recordings in some cases. * Sort by connection priority in mode numbering. * Improve user agent function. Version 2.70 - 20100225 * Added a new XML connection media detection for audio/mp3 for flashaudio mode. Version 2.69 - 20100225 * Added BBC Radio Sussex into local radio lists. * Fixed regression bug where URLs would not get recorded if XML::Simple was available. * Improved error detection for bad rdf URLs. Version 2.68 - 20100222 * Added ability to filter which PVR searches get run by '--pvr []' * Added ability to exclude matching PVR searches by name using --pvr-exclude= * Fixed listing of embedded pids in a brand page that don't have a series. Version 2.67 - 20100219 * Fixed iphone mode since BBC have recently removed the stream data from the public mediaselector XML metadata. * If --pid is used with series or brand pids/urls will now list record all contained episodes. * if --pid-recursive is used with the above it will record all the contained brand/series episodes. * The above feature requires XML::Simple perl module * Search now applies to the concatenated fields as opposed to each field individually, Version 2.66 - 20100123 * Added episodenum and seriesnum to history. * Fixed a bug where if an invalid option was detected, output would revert to STDERR. Version 2.65 - 20100121 * Fixed -V to display version even when --nocopyright or --silent is set. * Added ability to get iPlayer programme metadata and thumbs even if a programme is unavailable. * The use of --metadataonly, --subsonly or --thumbonly options will now prevent a recording when used with --pid. * Overhauled the method of getting metadata, subs and thumbnails for existing programmes in the history. * It will now create metadata files, subs and thumbs matching the prefix of the originally recorded file. * e.g. 'get_iplayer --history --metadataonly --subsonly --metadata=generic --thumbonly ' * Or, 'get_iplayer --history --metadataonly --subsonly --metadata=generic --thumbonly --pid ' * Added --skipdeleted to skip matches if the media file has been deleted when in --history mode. * Metadata/thumbs/subs for previously recorded programmes will now use the historical fileprefix, dir and ext (use with --history). Version 2.64 - 20100119 * Added ability to negate boolean options by prefixing with 'no-' e.g. --no-raw * Fixed buglet where invalid options resulted in an empty option being created. Version 2.63 - 20100118 * Fixed --exclude option so that it now applies to all search fields specified using --fields (or --long). * Bad options in the options files will now no longer result in an error but only a warning. * Added -V to display version and exit. * Tidied up help and usage text. Version 2.62 - 20100117 * Added the --subdir-format option to specify the format to be used for the subdirectory naming (--subdir) using substitution fields e.g. '/' * If there is no series and episode number detected, make the field empty. * Fixed podcast and localfiles plugins to match rest of code clean-up done in 2.61. Version 2.61 - 20100115 * Fixed bug where history was not checked when a BBC /programmes/ URL was used resulting in recording for multiple modes. * More code cleanup, less use of %hashes for readability. * Remove undefined tags in --fileprefix substitutions. * Added fields and which are the same as and but with the Series and Episode numbers stripped out. * Added field to contain s##n## format for Boxee, MythTV and XBMC series and episode number parsing. * e.g. use option --fileprefix=' - ..' * Added fields and which are descriptions limited to 255 and 1024 chars respectively. * Improved metadata tagging of year for mp3 and qt files. Version 2.60 - 20100114 * Fixed PVR mode bug from 2.59 where only the first search worked. * Cleaned up code lots and fixed almost all perl warnings. * Fixed bug in quicktime metadata atom insertion. Version 2.59 - 20100113 * Added --future option to allow searching of future programme schedules / EPG for BBC Radio and TV (if indexed). * Added --refresh-future option to allow indexing of future programme schedules / EPG for BBC Radio and TV when refreshing the caches. * Running the PVR is now much faster due to caching the cache and history files in memory between PVR searches. * Updated list of available radio channels. * Improved display of help where options can be used in more than one context e.g. --long. * Prevent repeated metadata requests when the metadata retrieval fails. * Renamed --ignorechannels to --refresh-exclude. * Added --refresh-include option so that only matching channels are indexed when refreshed. * Fixed --multimode where existing file check was incorrectly failing. Version 2.58 - 20100109 * More programme name and episode parsing improvements. Version 2.57 - 20100108 * In freevo metadata format, do not use full path to media file. * Updated credits for --email options to Network Ned, andy networkned.co.uk, http://networkned.co.uk * Added --limit-matches so that this can be used as a safety-net incase a pvr search inadvertently has too many matches. * Updated help a little. Version 2.56 - 20100107 * Fix flvstreamer/rtmpdump version detection. * Improved episode name extraction from meta-data to include episode number where appropriate. * Added episode and series numbers to caches. * Added freevo as a metadata format. * Added --email options to allow for scheduled html search results to be sent by email (Credit: Stroller). Version 2.55 - 20100102 * Fixed lockfile for --pvrscheduler option. Version 2.54 - 20100102 * Added --pvrscheduler option to run the PVR at regular intervals. * Fixed buglet where stat was called on a non-existent cache file in debug mode. * Improve series/episode number extraction from meta-data. * Added workaround where abs_path does not work in win32. * Bumped copyright years. Version 2.53 - 20091231 * Auto-detect http:// or :http:// URLs in a search term and set it as if it were a --url option. * Revert change from 2.21 and read system-wide options additionally from /etc/get_iplayer/ as /var/lib/get_iplayer/ violates the FHS and Debian policy. * Display warning that /var/lib/get_iplayer/ will be deprecated in future. * Get extended metadata if --fileprefix is used. * Added support for extended / alternate programme versions that have no version name set. * Added support for multiple programme versions with the same name. * Added --show-cache-age option to display age of selected programme caches. * Removed a bunch of deprecated options. * Display only the mode names without the numerical suffix in help messages. * Added --ignorechannels option so that matching channels are not even indexed when refreshed. Version 2.52 - 20091226 * Parse embedded mp3 flashaudio programmes that do not have the encoding attribute set. Version 2.51 - 20091221 * Fix bug where essential stream metadata lookup was skipped if only iphone mode was specified. * URL encode the url passed to a prepend type proxy request. Version 2.50 - 20091220 * Fixed iphone mode after BBC changed things earlier this week. * Improved and fixed mms and rtsp url parsing from asx and ram playlists which now parses new wma radio stream metadata. * Added new pattern to connection metadata parsing for aac audio which fixes world service. * Changed option --itvnothread to --mmsnothread. Version 2.49 - 20091118 * Remove purchaseDate tag from mp4/AtomicParsley/iTunes tagging as this causes problems with iTunes. * Strip out unsubstituted tags in metadata files Version 2.48 - 20091110 * Added episode and season numbers and aired date to metadata files and nfo files. * Added --fatfilename option for those DOS users. Submitted by David Pottage. Version 2.47 - 20091108 * Tweaked tagging some more. Version 2.46 - 20091108 * Fixed using full datespec for year tag in AtomicParsley tagging. * Improved metadata tagging format with AtomicParsley. Version 2.45 - 20091106 * Fix bug with authstring typo in level3/iplayertok CDN rtmp parameters which caused iPlayer HD to often fail. Version 2.44 - 20091102 * windows7 or Vista can set the HOME environment variable so check for USERPROFILE first to determine if this is a win system. * Added --before option to limit search results to programmes added before a specified number of hours. * Fixed bug where --atomicparsley path override was ignored. * Added advisory and genre tags to AtomicParsley tagging. * Use full datespec for year tag in AtomicParsley tagging. * Set AtomicParsley mp4 'stik' tag to 'Film' or 'TV Show' depending on programme category. Version 2.43 - 20091024 * Added support for new flashvhigh, flashhigh, flashstd and flashnormal BBC Live TV modes. * Added --livetvmode option. * Updated iPlayer EMP swf revision. * Fixed bug where --exclude comma separated values were not split into different terms to exclude. * Added AtomicParsley support for tagging mp4 files - submitted by Jimmy Aitken. * Added detection for different audio rtmp AAC stream bitrates. * flashaac is now expanded into flashaachigh, flashaacstd and flashaaclow. Version 2.42 - 20091015 * Fixed bug where external binary options got added to command line multiple times. Version 2.41 - 20091002 * No longer make episode == title if the episode isn't defined as this makes the filename too long. * For user commands, escape characters that have a special meaning in bash double quotes. * Implemented workaround where mplayer cannot understand drive letters preceeding file paths for pcm output. * Check for generated filename paths longer than 255 characters and generate error. Version 2.40 - 20090926 * Fixed bug introduced in 2.32 where using the info option with --get would result in a file extension of EXT. Version 2.39 - 20090924 * Fixed bug where named pipe filename was not quoted in command strings causing problems where the user profile dir contained whitespace. Version 2.38 - 20090922 * Fixed bug where --expiry option was being ignored. * localfiles plugin no longer uses unix find command so will work under win32. Version 2.37 - 20090921 * Fixed name and episode extraction from URL title metadata. * Do thumbnail download before running user commands. Version 2.36 - 20090915 * Fixed bug where options were not bound when refreshing cache for external plugins * Added Programme class method to set per-type expiry. * Added new experimental localfiles mp3 plugin - requires MP3::Info - only in SVN * Added new Streamer::filestreamonly class for localfiles plugin * Added --page, --pagesize, --sort=, --sortreverse to control output of displayed matches * Sort mode disables tree mode * When getting index feeds for a programme type, don't delete the old cache file if it fails. * If name is not defined after getting metadata then set the name to longname - helps with naming of url recordings. * If the pid is a URL then set the metadata web field to this URL. * Removed old itv plugin because it no longer works. * Known bug: localfiles plugin does not work for win32 yet. Version 2.35 - 20090914 * Save absolute paths in history instead of relative ones. Version 2.34 - 20090913 * When loading history, if there is a duplicate pid append the mode and filename fields with the existing record. * Fixed bug where --pvrqueue ignored a default or preset --type value. * Made thumbsize support more intuitive, --thumbsize now affects thumb downloads and metadata files, --thumbsizecache only affects the caches upon refresh. Version 2.33 - 20090911 * Added detection for bbc streaming urls with mediaselector params in them. Version 2.32 - 20090910 * --info now shows fileprefix and filenames, EXT is used if the file extension is not yet known. * Added much more metadata to the history file to allow history search support. * History entries can now be listed and searched by adding --history . * The --info, --thumbonly, --metadataonly and --subsonly options can now be used with --history to get metadata after recording. Version 2.31 - 20090909 * Added --thumbonly option to download the thumbnail without recording the programme * The --thumbonly option implies that the --thumbnail option is set. * Options --subsonly, --thumbonly, --metadataonly and --streaminfo are now done outside of the usual programme recording loop. * Corrected file open bug for subtitles and thumbnails which failed in nowrite mode. * Cleaned up stray newlines in logging. * Fixed versions list population for prog types that have no verpids. Version 2.30 - 20090909 * Fixed bug where iplayer name and episode was parsed incorrectly if there was no ':' in the title. * Added 832x468 thumbnails to the list for --thumbsize. Version 2.29 - 20090908 * Fixed bug: webrequest processing incorrectly used '-' as a delimiter. * Fixed bug: incorrectly interpreted error return codes from open3 external commands. * Send increasingly destructive signals to spawned commands if a SIGTERM/PIPE/INT is received. Version 2.28 - 20090907 * Backed out change to use http://feeds.bbc.co.uk/iplayer/[channel]/list/limit/400 instead of http://feeds.bbc.co.uk/iplayer/[channel]/list as this results in more programmes. * Added in a SIGTERM handler for the external program calls - if get_iplayer gets a SIGTERM then send one to the external program. Version 2.27 - 20090905 * Thumbnail size support. * Use --thumbsize=N to select the size of the thumbnails in the cache (use --info to see available thumbnail sizes). * Use --thumbsizemeta=N to select the size of the thumbnails used in the metadata (use --info to see available thumbnail sizes). * --thumbsize option requires the cacahe to be refreshed to update the default sizes. * Tweaked debug for exit code display in debug mode. * Added --help-basic for simplistic help page. * --debug now switches on --verbose. * Added new --series option which lists only series names with number of episodes and categories. * Remove commas from source category names otherwise the comma spearated list of categories gets confusing. * Improved accuracy of bbc iplayer programme feed name and episode parsing. * Fixed bug where streaming-only mode would fail if the recorded file already existed. Version 2.26 - 20090904 * Dropped support for rtmpdump versions older than v1.5 * Improved flvstreamer, id3v2, vlc, ffmpeg and mplayer invocation to avoid using shell * Fixed bug where unlink was called as a command when purging old recordings * Fixed --wav and --raw modes on non-Unix platforms for realaudio modes Version 2.25 - 20090901 * Popular and Highlights tv and radio programmes are now tagged as categories. * e.g. To list most popular tv programmes use --category=popular * e.g. To list tv highlights use --category=highlights Version 2.24 - 20090901 * Extract even longer description from BBC programmes site metadata for info and metadata files. Version 2.23 - 20090831 * Extract longer description from BBC iPlayer metadata for info and metadata files. * Abort with an error if the download_hostory file is not writable in append mode. Version 2.22 - 20090827 * Fixed small bug where number of matches was not displayed in non-pvr mode. * Added "Audio Described" category search to tv mode. * Changed method of merging the list of programme versions for tv/radio modes. * Made "Misc" options visible in advanced/long help mode. Version 2.21 - 20090826 * Added --packagemanager=disable option for externally managed get_iplayer pkgs. * Changed /etc/get_iplayer/options to /var/lib/get_iplayer/options as a default system-wide options file for *nix to comply with Linux FHS. * Give a warning if options exist in /etc/get_iplayer/options Version 2.20 - 20090825 * Added --metadataonly option to retrieve programme metadata without streaming or recording the programme. * Thumbnails can also be retrieved alone by using --thumbnail option with --metadataonly. * Added/improved --metadata=xbmc_movie format. Version 2.19 - 20090824 * If --multimode is used record all modes in one invocation of get_iplayer. Version 2.18 - 20090822 * If --multimode is used, --hide has no effect. Without this PVR mode will fail to work with multimode Version 2.17 - 20090822 * If an unknown new CDN connection is found for an iPlayer programme, do not add it to the mode list * Added --multimode option to allow the recording of multiple modes of the same programme * WARNING: --multimode will record *all* specified/default modes for each programme * If multimode option is used, put the mode name in the default filename prefix Version 2.16 - 20090815 * Added new flashstd iPlayer TV mode (480kbps H.264 640x360) * Changed default tv modes to: iphone,flashhigh,flashstd,flashnormal * Tweaked PVR text output * Fixed thumbnails and web urls for liveradio and livetv Version 2.15 - 20090804 * Remove nocopyright option from pvr save options * Move --itvnothread option to main script as it is not actually used in itv plugin and causes problems for installer. Version 2.14 - 20090801 * Run command even after streaming to stdout. * Allow --hash option to affect flvstreamer command if it supports this feature. * Made flvstreamer exit code handling better when streaming Version 2.13 - 20090729 * With rtmp recordings, retry when any non-zero exitcode is returned from flvstreamer. Version 2.12 - 20090726 * --force now overrides --hide. This allows force to have the desired effect in pvr mode. Version 2.11 - 20090724 * --list now takes account of search parameters when counting and creating unique list Version 2.10 - 20090719 * Updated PVR Manager script with latest options changes. * PVR Manager now runs better under Win32. * Renamed --rtmpstop & --rtmpstart to --stop & --start. * The --stop and --start can now be used with both realaudio and rtmp streams. * Improved partial proxy support. * Skip mediaselector stream lookup if only iphone mode is specified. Version 2.09 - 20090712 * Ensure rtmpdump option is still recognised after warning. Version 2.08 - 20090709 * Fixed bug in options and preset parsing. Version 2.07 - 20090708 * Added new sislive realaudio CDN. * Run the init method before checking download history so that live streams ignore history. * min_download_size is now defined on a per programme type basis. * Added support for flvstreamer stop/start offsets using --rtmpstart and --rtmpstop options. * Use --rtmpstop to limit length of live rtmp recordings which have timestamped streams. * Allow --url to specify BBC iPlayer tv/radio short URLs like 'http://www.bbc.co.uk/i/lbtbg/' * iPlayer urls can optionally have a start offset appended like '?t=16m51s' (must use flvstreamer 1.8c or later). * Fixed download retry loop bug where a different mode for a programme was tried where the next programme should have been tried. * Prevent thumbnail download, id3tagging, command and download history logging if streaming only. * All option names, not just the internal names, are allowed in option and preset files. * Added patch by Steven Luo to make different speakers appear on different lines in subtitles. * mp3/aac mode auto-detect for audio EMP urls. Version 2.06 - 20090706 * Improved and simplified CDN parser for iPlayer mediaselector data * New iPlayer CDN streams will now mostly be automatically found when added by the BBC. * Added checks for invalid and deprecated options in options files and presets. * Recognise iPlayer tv pids starting with p0. * iPhone redirect URL no longer looked up if iphone is not a selected mode. * Added BBC Radio 4 Long-Wave into liveradio channel list. * Added --rtmplivetvopts and --rtmpliveradioopts options. * flvstreamer v1.8b recommended for better reliability. * Reduced flvstreamer timeout to 10 secs because I'm impatient. Version 2.05 - 20090701 * Fallback to allow xml BBC EMP playlist urls to be directly specified for --pid/--url requests. * Allow specification of a BBC Programmes page with an embedded player when using --url. * Allow spaces in path for external binaries. * Bumped player version for iPlayer. * Fixed flashaac1 mode to append authstring in playpath. Version 2.04 - 20090626 * Simplified live BBC streaming support. * Added --type=livetv and --type=liveradio which simplifies searching/streaming/recording live BBC tv and radio channels. * Added --stream option which is an alias of --nowrite and --stdout. * Added --player option which will pipe all output to the specified command for direct streaming. * Added --attempts option to set the number of attempts to make or resume a failed connection. * Example usage: get_iplayer 'BBC Four' --type=livetv --stream --player='mplayer -cache 128 -' * Added --modes option - a general set of default modes for all programme types. * Changed --amode to --radiomode and added --liveradiomode options. * Changed --vmode to --tvmode. * Commandline search arguments now get added to presets and options if specified. * The id3tag tool can be used instead of id3v2 - use the --id3tag option to specify it. * Assume that ITV stream is successful if file is > 10MB even if there is a reported error to stdout. * The Chnagelog since the previous version is displayed after updatng get_iplayer. * rtsp and mms streamers now cope better with nested asx playlists. * Force --raw when --stream is used with radio or live radio to prevent lame or ffmpeg transcoding. * Fixed bug where tee function was not correctly referenced in rtsp streamer. * Fixed flashaac2 mode for mp3 streams. * Don't check download history when live streams are being streamed or recorded. * Fixed lwp timeout invocation bug. * Fixed get method return codes for iphone and mms streamers. * Error if stdout is requred for mms streams. * Check that external programs are also executable in exists_in_path function. * Deprecated --usertmpdumpexit option which is now always assumed to be true. * Caveats: --player and --stdout streaming does not work properly on windows. Version 2.03 - 20090620 * Added in debug level options to control verbose output from flvstreamer Version 2.02 - 20090619 * Added support for BBC world service Live and bulletin AAC streams from the worldservice page * Much more reliable Live streaming with new flvstreamer v1.8 * Fixed bug where raw audio flv files were id3 tagged * Removed incorrect -auth parameter from flvstreamer * Bumped BBC iPlayer swf version Version 2.01 - 20090618 * Fixed bug where cmdline options were being overridden by default options Version 2.00 - 20090617 * Tag substitution now uses version-specific metadata about the recorded programme. * Caveat: if --pid is used to record a programme less metadata will be obtained * Added and tags to allow for these download timestamp tags in filenames etc. * Options presets can be applied so that you can have a saved set of options and invoke them using --preset or -z * User options and Presets can now be edited as follows * Option --prefs-show displays all options in the user options or preset if specified * Options --prefs-add and --prefs-del adds/deletes specified options from the user options file or preset if specified * Option --prefs-clear removes *all* options from the current preset or user options * Option --preset selects predefined sets of options * Option --preset-list lists all saved options presets * Using --save option now reports an error telling user to use --pref options * Option --pvr-single runs a specifically named PVR search * User profile direcotry can now be overridden using --profile-dir Version 1.99 - 20090613 * Fixed Win32 file move and rename bug. * Added --metadata= option which creates a file with programme metadata after download. * --metadata=xbmc creates a .nfo file (not verified in XBMC yet) and --metadata=generic creates an .xml file. * Improved the programme versions searching using version substring matches. * e.g. --versions=def,sign will match and try to record default and signed programmes in that order. * Get full info metadata before any download so that full substitution works for --metadata and --command options * Only get verpid metadata if we dont have it already. * The various search options can now use a comma delimiter as an implied OR. Version 1.98 - 20090611 * Bugfixes to prevent some metadata lookups for BBC EMP and Live iPlayer content * Set flvstreamer timeout down to 20 seconds * Fix id3 tagging where quotes were not properly escaped * Fix radio pid parsing for live URLs Version 1.97 - 20090610 * supports many more BBC web pages with embedded media such as Learning Zone * Updated with new BBC iPlayer swfUrl * Prevent checking for iPhone stream for BBC EMP and Live requests * Improved BBC iPlayer pid parsing * Limit filename to 256 chars max Version 1.96 - 20090610 * Added support for BBC Embedded Media Player Live Channels and Videos * To stream or record embedded BBC video use option --pid tv: * Use of flvstreamer or rtmpdump 1.6 is recommended - older versions are flakey. * Live Radio streams are AAC 128-192kbps * Human readble timeadded output in --info * Cleaned up a few perl warnings Version 1.95 - 20090609 * Added live BBC iPlayer radio and tv support * Live TV Streams are either 512x288 or 640x360 VP6 500-800 kbps * For live TV use options: --pid tv: --vmode flashnormal * For live Radio use options: --pid radio: --vmode flashaac,wma,realaudio * ChannelID can be found in the URL for the channel on the BBC iPlayer web page * Note that not all Radio channels have AAC streams * To stream add: --nowrite --stdout | mplayer -cache 128 - * Live flash streaming requires flvstreamer or rtmpdump v1.5 or newer. * Added validity checking to date and time calculations. Version 1.94 - 20090609 * Fixed $_ bug Version 1.93 - 20090609 * Fixed time function overflow - year must be limited to max 2038 Version 1.92 - 20090608 * Decoded entities for longname attribute for iplayer programmes. * Added Estimates of file sizes for each mode in --info output. * Now read the Version PID rdf metadata to display first and last broadcast times in --info. Version 1.91 - 20090606 * Fixed bug with using webrequest and search options with pvradd Version 1.90 - 20090525 * Fixed bbc tv subtitle ttxt to srt conversion bug Version 1.89 - 20090525 * Fixed bbc tv subtitle ttxt to srt conversion bug Version 1.88 - 20090523 * Fixed stdout streaming support when using flvstreamer tool Version 1.87 - 20090522 * Added support for flvstreamer tool Version 1.86 - 20090519 * Overhauled the get_iplayer updater * Plugins will now only be updated if they are all writable * Plugins in the system and user plugins dirs will all be updated * Added hidden --packagemanager option to allow packages to disable script based updates * Added --plugins-update option to force get_iplayer to download or update all the latest plugins * plugins update will run if no installed plugins are found Version 1.85 - 20090511 * Moved more web requests to use common request_url_retry method * Added prepend url support for proxy option Version 1.84 - 20090507 * Added STDOUT Streaming support for rtmp streams - only works with both --stdout and --nowrite * Moved itv get_url method to itv plugin * Make updater retry failed web updates Version 1.83 - 20090506 * Drop support for Hulu, Channel4 4oD and Demand Five plugins. * Added new option to allow custom options to be added to rtmpdump invocation for BBC iPlayer --rtmp-tv-opts and --rtmp-radio-opts. * Modified help to reflect recording nature of PVR * Added --listplugins option to list the currently found programme type plug-ins or built-ins. Version 1.82 - 20090505 * Full metadata is now obtained from cache if it exists before every get so that --command works properly with --pid. * Added --rtmpport option to allow users to override the rtmp port - allows use of port 443. Version 1.81 - 20090505 * Force the updater to run if there is no plugins dir detected - required to make old versions obtain the plugins. * Full metadata is now obtained before every get so that --command works properly. * Converted itv type into a plugin. * Moved more global vars into respective methods. * Changed user-agent for updater. * Improved ua string selection. * Updated swf versions for iplayer. * Fixed guidance parsing in itv plugin Version 1.80 - 20090505 * Tweaked updater to fix plugin copy bug Version 1.79 - 20090505 * Tweaked updater Version 1.78 - 20090505 * Tweaked updater * New plugin based distribution. * The --force option can now be used with --update to disable version checking. Version 1.77 - 20090504 to make get_iplayer appear to be more like a conventional web browser to the server. Version 1.76 - 20090503 * Bugfixed user agent setting and for scraping. Version 1.75 - 20090501 * Fix ch4 scraping Version 1.74 - 20090501 * Fix ch4 scraping Version 1.73 - 20090429 * Switch off cookies when scraping five site otherwise downloads fail. Version 1.72 - 20090429 * Remove LWP debug - oops Version 1.71 - 20090429 * Demand Five - Channel 5 flash content now searchable and downloadable. * Demand Five requires rtmpdump v1.5. * Demand Five type is --type=five. * New Automated Installer released. Version 1.70 - 20090428 * Channel4 4oD Catch-up indexing and search support. * Channel4 type is '--type=ch4'. Version 1.69 - 20090427 * Initial Channel4 4oD Catch-up download support - requires rtmpdump v1.5. * Channel4 support should use options: --pid ch4: --vmode=flashnormal. * Indexing of Channel4 programmes to follow. Version 1.68 - 20090426 * Added --hash option to output basic progress hashes instead of detailed progress. * Fixed bug where pvr name was not sanitized. * Removed colons and parentheses from PVR queue names - breaks some platforms. Version 1.67 - 20090423 * Minor mods to webrequest option parsing. * Removed
tags in description of BBC iPlayer progs. * Validation of prog type before creating an object. Version 1.66 - 20090422 * Programme type detection fixed for --pid downloads which are not in cache. * No more history file read warnings unless in verbose mode. Version 1.65 - 20090420 * Added --nocopyright option to make the startup quieter. * Added --webrequest option to allow options to be specified as a single urlencoded string. * Added automatic manpage generation using --manpage option. * Help sections are now ordered more logically. Version 1.64 - 20090419 * Fixed bug where a succesful download was not exiting the mode loop thus downloading all specified versions. Version 1.63 - 20090419 * Fixed itv default vmode bug Version 1.62 - 20090418 * Added new akamai CDN for BBC iPlayer flashhigh vmode to make it work again. * Only modes that exist for a programme are now attempted to be downloaded. * All selected modes are tried for each prog version bofre falling back to next version. * Programme stream data is now downloaded only once per download attempt. * stream data is now an attribute of the prog object. * In verbose mode unknown streams or CDNs are now reported. * Added flashlow2 vmode for new reported CDN Version 1.61 - 20090416 * Added 1280x720 3200kbps HD download support for BBC iPlayer. Use --vmode=flashhd Version 1.60 - 20090416 * Added --nothreaditv option to force ITV programme parts to download one after another. * --nothreaditv option works around bugs in Windows ActivePerl or Strawberry Perl with Vista. * Fixed bug to decode html entities in ITV programmes name, episode and guidance text. * Removed html entities from radio channel names * Added patch to insert programme type and index number into mythtv xml output Version 1.59 - 20090409 * Modified --pvrlist output to make it easier to parse * Guidance is now correctly detected for BBC iPlayer tv * Fixed a small scoping bug in iPlayer get_links method * Added programme web url to metadata listing for --info Version 1.58 - 20090408 * Added --subsraw to allow saving of the raw subtitles file. * Fixed bug where iphone mode sometimes had no streaming class defined * Detect iphone mode 403 responses Version 1.57 - 20090407 * Fixed bug where a // in a path resulted in a 2 being added to the path when --subdir was used. * Fixed bug when using --command the command string was being over-sanitized. Version 1.56 - 20090405 * Added in wmvdrm vmode and renamed mobile vmode to mobile_wmvdrm. * New ability to download wmv drm streams - cannot decode them though. * Changed name of class Streamer::podcast to Streamer::http. * get_stream_data method now sets streamer class and filename ext. * iPlayer radio and tv classes now share a common download method. * Radio modes are now attempted to be downloaded based on stream metadata rather than blindly trying them. * realaudio mode now creates symlink when beginning to download if required Version 1.55 - 20090404 * If downloaded programmes of over 30 days old still exist the user is prompted to delete them. * This fair-use behaviour can be disabled by using the --nopurge option. * Filenames are now added to download history * VLC now quits correctly after a download for n95_mobile and n95_wifi vmodes Version 1.54 - 20090403 * New Hulu programme feed indexing method * Minor code cleanup Version 1.53 - 20090403 * Fixed small $_ scoping bug Version 1.52 - 20090402 * Rewrote BBC iPlayer stream metadata parser * flashaac, flashhigh and flashvhigh modes are now expanded to try all CDNs modes in turn if one fails * Fixed flashvhigh stream detection - wrongly parsed flashhigh stream as flashhigh * limelight CDN rtmp vmodes now working with rtmpdump v1.4 Version 1.51 - 20090401 * Added support for experimental 1500kbps 832x468 resolution BBC iPlayer streams as flashvhigh vmode Version 1.50 - 20090331 * Now supports rtmpdump-1.4 for Hulu using current --hulu-decrypt-pid method * Removed unusable RTMPE streams from Hulu stream data parsing * Specified --protocol and --port when invoking rtmpdump 1.4 to stop it complaining Version 1.49 - 20090322 * The list of available download vmodes/amodes for a programme are now shown when you use --info * Work around divide-by-zero error in average download speed calculation * --info option now works for all programme types Version 1.48 - 20090321 * Worked around bug where perl move can delete a file if src and dest are the same file in strawberry perl. Version 1.47 - 20090319 * If an rtmpdump download fails try to resume and get new streamdata again so that it isn't stale. * Use a different number of retries for above depending on the mode of download - more for rtmp modes. * Removed patch from 1.44 which was broken. * Changed flashhd to flashvhigh as this isnt really HD quality. Version 1.46 - 20090317 * Improved BBC HD iPlayer 720x404 RTMP support - alpha. * rtmpdump can now download HD streams better if using Level3 CDN. * Added rtmpdump version detection - needed for Level3 HD downloads * Known issue: content is not playable beyond first part. * Changed calling params to Streamer::rtmp::get Version 1.45 - 20090317 * BBC HD iPlayer 720x404 RTMP support - alpha. The BBC haven't actually launched this service yet so it is subject to change. * Added flashhd mode for BBC iPlayer high-definition TV support * Known issue: I suspect that rtmpdump currently has problems downloading the full hd stream without timeouts * Fixed flashhigh parsing due to BBC iPlayer changes Version 1.44 - 20090314 * If rtmp downloads timeout with exitcode 2 then try to resume them automatically up to 6 times to workaround bug/issue where audio downloads hang after approx 40-60MB. * You must still wait a few minutes for the download to timeout but at least it is hands-off. * Based on a batch submitted by Simon Quinn. Version 1.43 - 20090309 * The --hulu-decrypt-pid option now requires both the decrypted pid and the auth string to be returned, separated by a space from the external program. * Changed the smil URL for hulu Version 1.42 - 20090305 * Updated support for BBC Radio AAC/AAC+ audio streams after they changed their content delivery provider * Added the --isodate option to change the date in the filename to ISO8601 format: YYYY-MM-DD * Fixed a buglet where the lwp http proxy was being set unnecessarily * Added advanced option --use-rtmpdump-exitcode to use the rtmpdump exit code to decide whether a stream downloaded OK Version 1.41 - 20090226 * Fixed bug in subtitle sanitizing * Added --overwrite option to allow previously downloaded files to be overwritten Version 1.40 - 20090224 * Added --thumb and --thumb-ext options to automatically download thumbnail image and set extension fo the file * Use --thumb --thumb-ext=tbn options to have XBMC pick up thumbnails automatically * Fixed bug: make all valid options usable as pvr options * Added --hulu-decrypt-pid option to specify the exernal program that returns the decrypted hulu pid given the encrypted one as the first argument * Use environment variables GETIPLAYERUSERPREFS and GETIPLAYERSYSPREFS if they are set to override the get_iplayer user and systems prefs directories Version 1.39 - 20090217 * BBC iPlayer get_metadata method now doesnt assume that every prog has an episode name * --info now displays all collected metadata * iphone download now uses 12 digit random number - probably not significant though * Cleaned up XML output for Freevo and MythTV and fixed some matching bugs Version 1.38 - 20090216 * Automatically fetch programme metadata if required - useful with --pid mode * Fix get_hex method call in debug mode * BBC iPlayer get_metadata method now obtains more data Version 1.37 - 20090215 * Code cleanup for metadata extraction * Added --hulu-pages, --hulu-sort, --hulu-types options for controlling the indexing hulu.com * Fixed bug where first line of cache files was assumed to be a cache-order definition * Simplified channel hashes * Added --subtitles-only option to allow only the downloading of subtitles (also sets the --subtitles option) * Worked around a Programme/Streamer class instantiation bug where options instance would not get bound to the class unless there was a single instance Version 1.36 - 20090214 * Added new audio download mode for AAC audio "flashaac" for BBC iPlayer Radio (requires rtmpdump) * id3v2 also tags AAC audio files Version 1.35 - 20090211 * Failure to download subtitles now no longer results in an empty file in hulu * The hulu vmode classification is now based on bitrate ranges Version 1.34 - 20090211 * Fixed small bug in Hulu closed-captions / subtitles SMI format parsing Version 1.33 - 20090208 * Now downloads Hulu closed-captions / subtitles in SMIL format and converts into SubRip / srt format Version 1.32 - 20090207 * Improved Hulu indexing and stream download support * Rewritten Hulu indexing method to use page scraping which is more controlled and sometimes faster * Now using category-based channels from Hulu site and limiting the number of pages per channel (10) to speed up scraping * All Hulu movies now added to index * Fixed subtitles TT to SubRip conversion. The BBC decided to add new html tags which broke it. Version 1.31 - 20090206 * Changes tv vmode flashwii to flashlow for consistency between iPlayer and Hulu * Renamed hulu vmodes flash1/2/3 to flashhigh/flashnormal/flashlow for consistency * Bugfix: parse the H264(flashhigh) hulu stream url which was accidentally skipped * Changed default vmode list for hulu to be flashnormal,flashlow because flashhigh requires encrypted rtmp support * Sort the hulu vmodes based on reported bitrate in the metadata Version 1.30 - 20090206 * Added beta Hulu TV indexing and download support (US only) with the support of rtmpdump * Used the Hulu download method by Andrej Stepanchuk, author of rtmpdump * URLs containing PIDs can be specified with --pid together with a single --type * If a pid and single type are specified, no indexing is performed Version 1.29 - 20090205 * Added --fields option to allow user to customise which programme fields to search using a comma-separated list * if ".get_iplayer/" exists in current working directory, use its options file to override any user/system options * Added --pvrqueue option to allow matching programmes to be added to the pvr download queue on a one-off basis * Fixed bug: Only skip the current programme download, and not exit, if file already exists * Added benign --comment option to allow annotation of pvr searches Version 1.28 - 20090131 * Changed behaviour - all ITV progs now get downloaded under directory specified with --outputitv and not from --outputtv * Made global type hash local * Removed global download_dir hash and put functionality into generate_file_prefix method * Added detection of bad request url for iphone download method * Detect lack of programmes in iplayer playlists and report unavailability * Allow --streminfo in --pid mode Version 1.27 - 20090126 * Fixed bug where the programme type leaked between PVR entries Version 1.26 - 20090126 * Fixed tv vmode parsing bug * Rewrote retry/fallback mode loop code * Added StreamImage thumbnail element to xmlchannels output for mythtv * Fixed Stream element locations in xmlchannels xml output for mythtv Version 1.25 - 20090126 * Fixed bug where >1 search index numbers on the commandline would be ignored if the type was not specified in --type * Made the cache type loading more intelligent - now only loads specified --type caches if absolutely required Version 1.24 - 20090125 * Fixed broken podcast downloading Version 1.23 - 20090123 * Fix bug where symlink in itv mode was not created unless --raw was specified * Fix bug where symlink fields were not substituted for several modes * itv symlink target is now the multi-part dir if there is more than one part * itv prog parts now have zero-padded part number to ensure they are played back in the right order * By default, only simple options are shown under --help. * Added --help-long option to show all options. * Fix bug where subdirs were not created correctly in itv mode using --subdir option Version 1.22 - 20090123 * Fix bug where license/version info was sent to stdout in pvr mode * Added --showoptions option to display all set options and where they were defined Version 1.21 - 20090123 * More OO refactoring * Added GPL text at runtime as per GPLv3 * Added --conditions and --warrany options for GPLv3 Version 1.20 - 20090122 * Changed behaviour, --pid= now limits download attempts to specified prog types unless --pid=: form is used * Changed behaviour, a search term can contain a pid but it must be in the form of 'pid:' and the correct prog type must be specified using --type * Major refactoring using OO Perl * Created Programme, Pvr, Streamer & Options classes * Allow Programme/Streamer/Pvr subclasses to add thier own options (and usage text) * Command line options are now dynamically processed * Added --listformat option to allow a user to specify the search output text format (using usual substitution fields) * Added %index_prog hash "index => prog instance" (done away with global "index => pid" hash) * Cache file format is now read from first line of each cache file - this will allow future format changes * Fixed symlinking of downloaded file when resuming iplayer tv/radio * Fixed unescaped data in --xml-channels output. Version 1.19 - 20090112 Fixed dumb bug where RTMP video was being wrongly demuxed audio-only Version 1.18 - 20090111 * Now use mplayer to demux the flv stream into mp3, ffmpeg can only seem to retranscode the flv to mp3 with obvious loss in quality. * Some output message tweaks * Simplified search result display creation * Fixed the episode subdir creation when ITV episodes have more than 1 part * Failed ITV prog parts are retried up to 3 times (mplayer is returning zero even when failed). Use backticks and get the error messages which come out of mplayer * In ITV mode, if any prpg parts are less than a minimum size then retry the download. * Added programme web page link to cache to enhance --html output and fix it for ITV and podcasts * Improved readability of html output Version 1.17 - 20090109 * Scrape and index ITV player 'TV Classics' programmes (in addition to ITV Catch-Up progs) * Added 'guidance' info to caches Version 1.16 - 20090109 * Restructured code to make various download methods more consistent * Moved all media stream url resolution into get_media_stream_data() * Fixed ITV PVR downloading * Improved the text of lots of messages * Try to guess if ffmpeg has successfully transcoded an flv file by looking at the resulting file size * Added the "--exclude " option so that you can exclude programme names from your search * The --amode and --vmode options can now specify a comma separated list of audio or video download methods to try in order * Unified the http user-agent setup * Added download rate reporting in itv mode * Record audio/video download mode in download history * Workaround rtmpdump non-zero exit code even when it appears to succeed Version 1.15 - 20090107 * Fixed undefined hash ref in get_media_stream_data that was causing some downloads to fail Version 1.14 - 20090106 * Handle thread waiting more gracefully in parallel download mode * Display download byte counters for each ITV download thread * Display download rate/time summary for each ITV download thread Version 1.13 - 20090106 * Added ITVplayer Catch-up Indexing and Searching support (use --type=itv) * Fixed bug in --list option - programme names were being incorrectly parsed Version 1.12 - 20090106 * Added alpha support for ITV Catch-up downloads (--pid itv:) * Added parallel download support for all parts of ITV programmes because they stream in realtime. * Fixed field length bug in metadata tagging of mov files. Version 1.11 - 20090104 * Added iPlayer Flash Audio download support via rtmpdump tool / ffmpeg * The --amode (Audio Mode) option can now be set to 'flashaudio' * Reworked get_media_stream_data function to return a hash for more flexible usage * Display --streaminfo data in a much clearer way * --pvrlist now displays entries sorted alphanumerically * Allow --partial-proxy to affect subtitle downloading * Add user meta-data to iPhone/h.264 downloaded video (hopefully helps with iTunes) * In Quicktime files ftyp atom is now the first one which makes it more mp4 compliant * Fixed stdout iphone video mode with resumed downloads (broke in v1.06) * Fixed retry reporting on failed downloads * Known issue: flashaudio downloads appear to fail even though they complete with rtmpdump v1.2 Version 1.10 - 20090103 * In rtmp mode, remove pageUrl detection - not required * Added capability of downloading RTMP Wii Flash video * Deprecated --mp3audio, --realaudio, --rtmp, --n95 options (they still work for now). * New options --amode=[mp3|realaudio] (default: mp3 fallback to realaudio) * New option --vmode=[iphone|rtmp|n95|flashhigh|flashnormal|flashwii] (default: iphone) * If --vmode is set to "rtmp" then try all rtmp modes (flashhigh/flashnormal/flashwii) until one works * Fixed typo bug which prevented lame transcoding realaudio to mp3 Version 1.09 - 20090102 * In rtmp mode, use authstring from streaminfo for calling new version of rtmpdump v1.2 Version 1.08 - 20081231 * In rtmp mode, If High Quality Flash RTMP version is used, use mp4 file extension * In rtmp mode, If High Quality Flash RTMP version is not available then use Normal Quality Flash RTMP version * In rtmp mode, if Normal Quality Flash is used, an avi file is created (ffmpeg cannot yet demux vp6 flv streams into mp4 containers) Version 1.07 - 20081230 * --raw option now also prevents ffmpeg converting flv to mp4 format in rtmp mode * search options now affect the results of --html and --xml output Version 1.06 - 20081228 * Send all text output to stdout unless --stdout or --pvr modes are being used. Version 1.05 - 20081228 * Added resume option to rtmpdump invocaton * Get RTMP application name from BBC media metadata Version 1.04 - 20081225 * Show thumbnail url for --info * Added RTMP Flash High Quality video download additions using rtmpdump from Andrej Stepanchuk (--rtmp) Version 1.03 - 20081221 * Now use the new Coyopa streams for BBC Local Radio. * Added all BBC local radio stations to the radio channel list Version 1.02 - 20081220 * Dont get index info from BBC site if were only specifying a pid to download (using --pid) Version 1.01 - 20081125 * Added proxy workaround for some broken web proxies (--partial-proxy) Version 1.00 - 20081109 * Added --hide option to remove programmes in listings when they have already been downloaded * Force the --hide option on when running PVR Version 0.99 - 20081103 * Added new radio and tv channels: bbc_radio_nan_gaidheal, bbc_radio_cymru, and bbc_alba Version 0.98 - 20081103 * Added tree-view --tree option for listing programmes Version 0.97 - 20081103 * streaminfo sub now uses request_url_retry instead of download_block because this caused problems getting the RTSP urls for some strange BBC reason Version 0.96 - 20081024 * Added streaminfo detection of N95 3G stream (in addition to the N95 wifi stream) * Fixed streaminfo detection which was somewhat broken - now split the media tags before Version 0.95 - 20081020 * Added another use of the --raw option to stop the iPhone video downloads having their moov atoms re-arranged for partial download playback capability Version 0.94 - 20081014 * Changed all references to N96 into N95 * Streaminfo option now displays new Mobile WMV DRM stream data Version 0.93 - 20081013 * Added id3v2 dependancy to deb and rpm * Now run tagging on --pid downloads Version 0.92 - 20081007 * Added writable check for --update option * More checks around update file permissions Version 0.91 - 20081005 * Allow cmdline args to override pvr search options Version 0.90 - 20081004 * Allow user to specify filename prefix format (not pathname or extension) using %prog field names. e.g. --file-prefix='---' * Fixed bug where saved options were ignored Version 0.89 - 20081004 * Fixed bug where /pvr/ dir not get created with --pvr-add Version 0.88 - 20081003 * Fixed update_script function which was downloading the new version twice! (darn, it is half as popular as I thought) * PVR enable/disable search support allows you to disable a search without deleting it. --pvr-enable=, --pvr-disable= * Using the --test option with --pvr no longer uses the lockfile Version 0.87 - 20081002 * using --test with --pvr allows user to see which programmes will match the PVR downloads * implemented locking to prevent >1 --pvr process from running (in ~/.get_iplayer/pvr_lock) * When using --pvr option, a message is sent to STDOUT so that this can be piped to email for new programme downloads, * Ignore the --flush option with --pvr - use the --expiry option instead (i.e. set to just less than the frequency of the pvr schedule) Version 0.86 - 20081001 * Improved --symlink option to allow format subtitution from %prog fields * Symlink option now works for radio and podcasts also Version 0.85 - 20081001 * Fixed --pvr-add so that options derrived from options files are not saved to the PVR search * Options specified on the cmdline with --pvr option will override those options in the pvr searches * All PVR searches will, by default, use the options from the saved options files * Fixed bug where %prog hash was retained between pvr searches making the type option get ignored in some cases Version 0.84 - 20080929 * New PVR functionality allows you to add a search criteria to a PVR search file for scheduled downloads * Added --pvr, --pvradd=, --pvrdel=, --pvrlist options * e.g. Add the following line to your crontab: '0 * * * * /path/to/get_iplayer --pvr 2>>/tmp/get_iplayer.log' Version 0.83 - 20080929 * Remove 16MB block downloads for iphone mp3 radio - does not appear to be unnecessary * Improved and simplified metadata --info collection using new prog feed * Improved channel feed parser for TV so that Sign Zone progs are correctly detected * Added --version-list option so that the preferred version(s) of a programme can be specified e.g. --version-list=signed,default * Added --versions option to narraw search to specific programme versions (e.g. default or signed or any regex) Version 0.82 - 20080929 * Some code simplification * Remove web bug and cookie whitelisting crud * No more web scraping to get the version pids - use the iplayer metadata feed * Use the media stream metadata to determine if PID is for radio or tv * Use the media stream metadata to determine subtitles url * Fixed streaminfo option to also parse world service media stream data * Added WMA audio into media stream data parser Version 0.81 - 20080927 * Added get_iplayer user agent while getting podcasts as per request from James Cridland Version 0.80 - 20080927 * Bugfixed -o option - it was incorrectly assigned to podcasts only Version 0.79 - 20080927 * Use xml podcast feed - simpler to parse and contains a few additional progs Version 0.78 - 20080926 * Cleaned up some more perl warnings after turning on this feature - now disabled * Behave better when a programme is listed but unavailable * Improve reporting of prgramme name when pid is already in download history Version 0.77 - 20080926 * Added non-mandatory idv3 tagging support for MP3 files downloaded by new iPhone method using external id3 tools if available * Added --id3v2 option to specify non-default location of id3v2 binary * Added , and to %prog so that it can be used in --command option * Tidied up definition of cache files * Cache files no longer get deleted upon get_iplayer upgrade Version 0.76 - 20080924 * A few cosmetic tweaks like the 'number of matches' appearing at the end on the programme listing * Set the 'type' option according to the index number specified (i.e. 1xxxx => radio, < 10000 => tv and > 19999 => podcast) * The programme cache is additionally read if an index is specified in its number range Version 0.75 - 20080924 * If an MP3 version of a radio programme is not available the default is to try to use the realaudio stream * --realaudio option prevents the downloading of radio MP3 streams * --mp3audio option ensures that realaudio stream is not used as a fallback for radio * A few cosmetic bug fixes * Check for existence of a PID when an index number is specified * Don't add empty pids to download_history file * Added --force-download option to override download history * Report final average download speed / bitrate / duration after successful downloads (not for rtsp streams) * Remove stdout logs - messes with stdout streaming in too many strange ways * Does not check download history if nowrite & stdout options are specified Version 0.74 - 20080924 * Changed --list-categories and --list-channels to use --list where element name can be any element name in the %prog hash * Bugfix --streaminfo doesn't add to download history * Allow h.264 download subroutines to now also download mp3 audio for iphone radio * Added --realaudio option for radio downloads where mp3 download is not available Version 0.73 - 20080922 * Now remembers which PIDs/programmes have already been downloaded and will prevent downloading them after you delete the programme * The PID download history file is in ~/.get_iplayer/download_history * Added --outputradio --outputtv --outputpodcast to override --output so that different directories can be used for different programme types respectively * Added --list-categories and --list-channels support * Fixed a bug introduced in version 0.72 which --type=all would only result in --type=podcast Version 0.72 - 20080919 * time stamping of cache entries * Added --since option to see what was added since a number of hours ago (using above time stamps) * --flush now refreshes the cache rather than simply deleting it (retains timestamps) Version 0.71 - 20080916 * Workaround BBC World Service using non-standard PID format (not starting with b0) * Workaround BBC World Service HTTP redirects which contain extra whitespace and newlines around RTSP urls which mplayer does not like * Workaround BBC World Service where mediaselector metadata sets XML element kind="" instead of kind="audio" Version 0.70 - 20080916 * Added BBC World Service to iPlayer radio channels list Version 0.69 - 20080915 * Remove empty download file if download fails * Make all program info output go to stdout unless --stdout is specified Version 0.68 - 20080911 * Added quotes to file= arg of mplayer for post-transcode wav option - breaks if there is a space in the path * Added rudimentary support for vlc to download/stream N96 iPlayer streams (lower quality 192kbps streams) using --n96 option * Added --vlc option to specify path to vlc (for N96 streams) Version 0.67 - 20080910 * streaminfo option now gets Nokia N96 rtsp stream URL (not just the URl that points to it) * streaminfo option now makes all other functions quiet and sets --get and --test * Added all audio, subtitles, iphone and wii stream info to streaminfo option * quiet option can now be overridden by verbose or debug options Version 0.66 - 20080909 * Changed --rtmp to --streaminfo * --streaminfo now gets Nokia N96 rtsp stream URL also Version 0.65 - 20080909 * Created ability to have system-wide default configs for options (/etc/get_iplayer/ and '\get_iplayer\' on Win32) * Moved windows system/personal config dirs to \get_iplayer\ and \.get_iplayer\ * System-wide options can be overridden by the personal options and cmdline options Version 0.64 - 20080909 * Tweaked to get home directory (USERPROFILE) in ActivePerl * Renamed --freevo as --symlink (still backwards compatable) * Added ability for ActivePerl/Windows to transcode radio programmes to mp3 after downloading (thanks Simon Dible) Version 0.63 - 20080908 * Added code to resolve rtmp url for future use (--rtmp returns the urls) Version 0.62 - 20080902 * Added ID3 tagging for radio downloads (uses lame) Version 0.61 - 20080901 * Subtitles can now be downloaded if available using --subtitles option and are converted automatically into SubRip (.srt) format * Subtitles can be offset by a number of milliseconds using --suboffset (the H.264 streams seem to start a little earlier than the flash video versions) Version 0.60 - 20080824 * Now can create MythTV streams XML file aswell as Freevo fxd XML (thanks to ear9mrn) * Added --bandwidth option for rtsp streams (thanks to nrq) * Removed world writable perms on cache files * quiet option now works properly with radio downloads Version 0.59 - 20080813 * de-duplication of search/match results Version 0.58 - 20080813 * quote filenames in helper apps to allow whitespace in filenames for mp3 transcoding * provide better debug output for radio downloading * Known issue: mplayer bug means that it cannot accept whitespace in filenames when dumping to wav/pcm files Version 0.57 - 20080805 * Now use an OPML feed from BBC to get a list of all podcast RSS feeds - no more web scraping * Fixed thumbnail parsing for podcasts * Removed obsolete and broken --scrape option * Fixed category parsing for changed iplayer XML feed format * Show Categories in --info display Version 0.56 - 20080804 * Added raw realaudio stream saving support (--raw) which does not require lame (thanks to nrq) * Added new BBC channel 'BBC HD' * Improved efficiency of stco atom searching to make slow machines start streaming faster * Known issue: stdout support for radio wav and raw support can be problematic due to named pipe closing Version 0.55 - 20080718 * Detect and report lack fo realaudio format for radio programmes Version 0.54 - 20080717 * Fix rename radio file bug under Activeperl * Do not catch sigchld, quits prog after first download Version 0.53 - 20080717 * Fix mkfifo quit under Activeperl Version 0.52 - 20080716 * Fix inverted logic bug in --wav option * Fix already exists bug for partially downloaded radio progs * Use dynamic fifo file so simultaneous downloads can occur for radio * Use signal handler to clean up temp named pipe file Version 0.51 - 20080716 * Fallback to wav mod for type=radio if platform doesn't support fifos (e.g. ActivePerl/Windows) * Added --wav option for radio (i.e. don't transcode to mp3) Version 0.50 - 20080714 * Removed available time of tv/radio programmes because it was misleading and wrong, --info option should be used instead * Changed progress calc using file pointer instead of file stat - better for cygwin * Allow option to specify location of mplayer and lame binaries if not in path (--mplayer and --lame) Version 0.49 - 20080713 * Re-corrected bad display of download rate calcs (I had a hangover yesterday) Version 0.48 - 20080713 * changed shell escaping from --command option Version 0.47 - 20080712 * Corrected bad display of download rate and time remaining calcs => now uses less cpu * --command option allows user to run a custom command after every successful download using substitution variables (see README.txt) * Improved --info metadata Version 0.46 - 20080712 * Can now Index and Download BBC podcast mp3/aac streams using --type=podcast * Check external programme dependancies * Use non-shell mknod (POSIX mkfifo) Version 0.45 - 20080710 * Use HTTP pipelined requests for feeds * Added info option (--info/-i) to get full programme metadata on searches below 40 matches Version 0.44 - 20080709 * Add radio one into channels list - sorry! Version 0.43 - 20080709 * Bugfixed stdout support for radio Version 0.42 - 20080709 * Now uses channel specific atom feeds from iplayer site by default - scrape is still optional for TV index * Relocated all cache, cookies, config and namedpipe files into $HOME/.get_iplayer/ * Indexes iplayer Radio programmes * Added --type to limit search to radio, tv or all (tv is default) * Radio RTSP stream now transcoded on the fly to mp3 using named pipes * Added stdout support for radio - still only creates small mp3 file when stdout used?! * TV and Radio now use separate index cache files that are populated independantly * Added retry loop for bad cookie detection - dont just fail * Added --exclude-channel/--exclude-category support * Added channel name to html output * Known issue: BBC has an error in their atom feeds which says that the programme has been available longer than it has. * Known issue: stdout support for radio only creates small mp3 file, lame stalls Version 0.41 - 20080708 * Fixed cookie deletion bug Version 0.40 - 20080707 * Fixed saving of thumbnail url in cache * Added audio pid download/convert support (downloads rtsp and converts to mp3) Version 0.39 - 20080707 * Download File name fixed in scrape mode - episode appeared twice * Image thumbnail url was wrong in scrape mode * html option never looked for a filename Version 0.38 - 20080707 * Updates to allow downloading after the BBC updated their website - kludged for now using scrape method until I can work out the atom feed again * Category/channel searching (and fxd channel menus) and duration listing will be broken until atom feeds get fixed. * Programme version is broken - different URL now used for signed versions etc. Only Original versions are listed for now. * Added --terse listing mode * Don't display version, duration, channel and categories if we use scrape mode Version 0.37 - 20080703 * Made fxd and html output formats optional with ability to specify output filenames * --fxd output now has 3 menu modes channel->progname->episode (--fxd-channels), progname->episode (--fxd-names), alpha->progname-episode (--fxd-alpha) * removed type=video attribute from fxd container tags * Now encode/decode xml entities for output * --stdout option now implies --get Version 0.36 - 20080701 * Now use the --get/-g option to get the selected files, without this we only list matches * Re-use cookie for faster connections (no need to get web bugs every time) * Fixed download rate calc on 32M block downloads * Increased LWP timeouts to 20 seconds * Checks for when we get a duff moov atom length (i.e. an XORed file) then deletes the cookie and quits * Removed XML::Twig parser - use perl regex instead * Now reports how long ago rather than date made available... Version 0.35 - 20080630 * Restructured downloading code * Now handles different versions better (i.e. Original, Signed) - tries to download next avaiable version type if one fails * Freevo FXD now has programmes sorted by channel Version 0.34 - 20080629 * Fixed duplicate listing bug when using --long * Added --quiet option * Added freevo symlink creation option --freevo * FXD file for freevo now uses standard Video plugin with a player wrapper script * Use logger function instead of print Version 0.33 - 20080627 * Now gets programme categories and channel from Atom feed * Only write the fxd and html files when writing cache * Channel and category search (regex) --channel --category * Fixed options saving/reading * Added download progress for Atom feed and movie header Version 0.32 - 20080626 * Now uses Atom feed rather than scraping website for programme info (much more reliable availability info) * Now requires Perl XML::Twig * Reduced cache expiry to 4 hrs (atom feed is now quicker to download and is more up to date) * version pid (pid) is no longer used for reference - only programme pid (urlpid) == $pid * Index now contains duration and start of availability date/time (Atom method only) * Allow fallback to scraping website for programme index * Removed deprecated XOR decoding Version 0.31 - 20080624 * Allow user to save options and specify default options in $HOME/.iplayerrc * Now uses long options also Version 0.30 - 20080622 * Generate FXD file for Freevo iplayer streaming plugin * Now can resume downloads and strema to STDOUT simultaneously (streaming always starts from beginning of programme) * Retry loop for getting index pages incase BBC site breaks like it just did Version 0.29 - 20080619: * Fixed streaming + file download mode * Added random numbers after some requests more like iphone * Added interrim checking of reported mp4 stream availability * Reduced index cacahe default to 12 hours Version 0.28 - 20080619: * Update get_iplayer option (-u) Version 0.27 - 20080619: * New option to allow streaming while downloading AND writing file to disk (allows you to watch while downloading while keeping a copy for later) * Sanity check to ensure we don't stream partially downloaded content Version 0.26 - 20080618: * Fixed partial download resuming * Changed file suffix for partially downloaded files to .partial.mov to ease playback of partially downloaded movies Version 0.25 - 20080618: * Automatically re-arrange the atoms so that file can be streamed and start faster (used method from qt-faststart.c, v0.1 by Mike Melanson, melanson@pcisys.net) * Option -x allows STDOUT streaming during download (see usage) * All messages now go to STDERR Version 0.24 - 20080618: * Now supports downloading of *unencrypted* streams from BBC Iplayer site - no more XOR nonsense * Downloads web bugs to whitelist our cookies on BBC servers * Downloads the file in blocks to avoid XOR Version 0.23 - 20080617: * added binmode for decode sub also for windows to work properly Version 0.22 - 20080616: * Detect null Content-Length header upon download - doesn't replace a partially d/loaded file if there is a failure Version 0.21 - 20080616: * Added binmode for Windows file writing - fixes bug where windows would not decode properly Version 0.20 - 20080615: * Remaining time reported in hrs/mins/secs * Added sort-into-subdirectories option to create subdirectories for programmes Version 0.19 - 20080614: * Fixed PID searching * Now supports restarting downloads of incomplete files * Fixed swap detection bug where moov atom started on even byte offset * Remaining time added * Fixed kbps (not misreported kBps anymore) Version 0.18 - 20080613: * Auto detection of byte-swapping * Auto detection of XOR sequence Version 0.17 - 20080612: * Non-UK error detection * Not available error detection Version 0.16 - 20080612: * Fixed HTML output links * Sanitized data structures * Now parses days/hours left * Fixed XOR % completion calculation * Reads IPLAYER_OUTDIR environment Version 0.15 - 20080611: * Fixed duplicate programme removal * Now supports different programme type downloads (i.e. Original, Signed, etc) * Changes hashes to give more meaningful names * Test option (-t) will now determine the programme type * Increased speed of XOR decoder by reading in 1024 blocks at a time Version 0.14 - 20080611: * Not using curl anymore - seems to fail through some firewalls mysteriously and will not work on Ubuntu * Using LWP for all http requests * Fixed indexing sort bug Version 0.01 - 20080312 * Initial Release get_iplayer-2.94/CONTRIBUTORS000066400000000000000000000006351253364746300156550ustar00rootroot00000000000000Andrew Elwell Andy Bircumshaw Bill Boughton Caius Durling Chris Reed, BBR Crispin Flowerday David Woodhouse HenderHobbit James James Laver James Teh John Henderson Jon Davies Jonathan Harris Jonathan Larmour Jonathan Wiltshire Matthew Boyle Mike Crowe Mike Fleetwood Murray Phil Cole Ralf Baechle Sharon Kimble Shevek Steven Luo Stuart Henderson Vangelis forthnet dinkypumpkin fs ck fsck linuxcentrenet willemw12 get_iplayer-2.94/LICENSE.txt000066400000000000000000001045131253364746300156200ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . get_iplayer-2.94/Makefile000066400000000000000000000024771253364746300154430ustar00rootroot00000000000000dummy: @echo No need to make anything. ifdef VERSION tag: @git update-index --refresh --unmerged @if git diff-index --name-only HEAD | grep ^ ; then \ echo Uncommitted changes in above files; exit 1; fi sed -i.bak -e 's/^\(my $$version = \).*/\1$(VERSION);/' -e 's/^\(my $$version_text\) = .*/\1;/' get_iplayer sed -i.bak -e 's/^\(my $$VERSION = \).*/\1$(VERSION);/' -e 's/^\(my $$VERSION_TEXT\) = .*/\1;/' get_iplayer.cgi rm -f get_iplayer.bak get_iplayer.cgi.bak @./get_iplayer --manpage get_iplayer.1 git diff --exit-code get_iplayer.1 > /dev/null || \ sed -i.bak -e 's/\(\.TH GET_IPLAYER "1" "\)[^"]*"/\1$(shell date +"%B %Y")\"/' get_iplayer get_iplayer.1 sed -i.bak -e 's/\(The latest version is v\)[0-9]\{1,\}\.[0-9]\{1,\}/\1$(VERSION)/' html/get_iplayer.html rm -f get_iplayer.bak get_iplayer.1.bak html/get_iplayer.html.bak @git log --format='%aN' |sort -u > CONTRIBUTORS; git add CONTRIBUTORS @git commit -m "Tag version $(VERSION)" get_iplayer get_iplayer.1 html/get_iplayer.html CONTRIBUTORS get_iplayer.cgi @git tag v$(VERSION) tarball: @git update-index --refresh --unmerged @if git diff-index --name-only v$(VERSION) | grep ^ ; then \ echo Uncommitted changes in above files; exit 1; fi git archive --format=tar --prefix=get_iplayer-$(VERSION)/ v$(VERSION) | gzip -9 > get_iplayer-$(VERSION).tar.gz endif get_iplayer-2.94/README-get_iplayer.cgi.txt000066400000000000000000000172351253364746300205420ustar00rootroot00000000000000get_iplayer Web PVR Manager ----------------------- The world's most insecure web-based PVR manager and streaming proxy for get_iplayer ** WARNING ** Never run this in an untrusted environment or facing the internet Copyright (C) 2009-2010 Phil Lewis This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Author: Phil Lewis Email: iplayer2 (at sign) linuxcentre.net License: GPLv3 (see LICENSE.txt) Features -------- * Search for programmes * List/Add/Remove PVR entries * Acts as a proxy to stream any programme over HTTP * Automatically generates playlists for any programme type * See web site: http://www.infradead.org/get_iplayer/html/get_iplayer.html Run with embedded web server ---------------------------- * By default this will run as the user you start the script with * Start with: ./get_iplayer.cgi -p 1935 [-g /path/to/get_iplayer] [-l 127.0.0.1] [--ffmpeg /path/to/ffmpeg] * On Win32 start with: perl.exe .\get_iplayer.cgi -p 1935 [-g \path\to\get_iplayer] [-l 127.0.0.1] [--ffmpeg \path\to\ffmpeg] * Access using: http://localhost:1935/ Installation as Apache CGI script --------------------------------- * Run the below commands as root * Create dirs in /var/www/get_iplayer/: mkdir -p /var/www/get_iplayer/output /var/www/get_iplayer/.get_iplayer * Allow apache user to write to these dirs: chown apache.apache /var/www/get_iplayer/output /var/www/get_iplayer/.get_iplayer * Copy get_iplayer.cgi and get_iplayer into /var/www/get_iplayer/ cp -p get_iplayer.cgi get_iplayer /var/www/get_iplayer/ * Ensure they are executable: chmod 755 /var/www/get_iplayer/get_iplayer.cgi /var/www/get_iplayer/get_iplayer * Perform one-off plugins setup: /var/www/get_iplayer/get_iplayer --profile-dir /var/www/get_iplayer/.get_iplayer --plugins-update * Ensure you have the following lines in Apache's httpd.conf: ScriptAlias /iplayer "/var/www/get_iplayer/get_iplayer.cgi" SetEnv HOME /var/www/get_iplayer/ * This will run as apache's user/group and save all settings files in /var/www/get_iplayer/.get_iplayer * Ensure that ffmpeg is in the default system PATH that apache exports such as /usr/bin/ * Ensure that rtmpdump (and other binaries) are in the default system PATH that apache exports such as /usr/bin/ or specify their locations in /var/www/get_iplayer/.get_iplayer/options, and specify a default output directory in /var/www/get_iplayer/.get_iplayer/options, e.g.: output /var/www/get_iplayer/output ffmpeg /usr/bin/ffmpeg rtmpdump /path/to/rtmpdump mplayer /path/to/mplayer atomicparsley /path/to/atomicparsley id3v2 /path/to/id3v2 * Make sure that apache user can see and execute the binaries * Access using http:///iplayer * Recordings will be in /var/www/get_iplayer/output/ Usage ------ * Assumes web server is running with script at 'http://localhost/iplayer' * Embedded web server can be accessed (assuming port 1935) as 'http://localhost:1935/' or 'http://localhost:1935/iplayer' * Valid OUTTYPE values are: wav,mp3,rm,flv,mov * You can open most of these URLs as 'vlc ' or 'mplayer -cache= ' * Note: Ensure you open the playlist window in VLC Streaming URLs -------------- * Stream flash AAC liveradio as 320k mp3 stream: mplayer -cache 1024 "http://localhost/iplayer?ACTION=stream&PROGTYPES=liveradio&PID=&BITRATE=320&MODES=flashaac&OUTTYPE=nnn.mp3" * Stream flash livetv as flv stream: mplayer -cache 1024 "http://localhost/iplayer?ACTION=stream&PROGTYPES=livetv&PID=&MODES=flashnormal&OUTTYPE=nnn.flv" * Stream flash AAC liveradio as an uncompressed wav stream: mplayer -cache 1024 "http://localhost/iplayer?ACTION=stream&PROGTYPES=liveradio&PID=&MODES=flashaac&OUTTYPE=nnn.wav" * Stream flash mp3 radio as http mp3 stream: mplayer -cache 1024 "http://localhost/iplayer?ACTION=stream&PROGTYPES=radio&PID=&MODES=flashaudio&OUTTYPE=nnn.mp3" * Stream flash mp3 radio as http flac stream: mplayer -cache 1024 "http://localhost/iplayer?ACTION=stream&PROGTYPES=radio&PID=&MODES=flashaudio&OUTTYPE=nnn.flac" Direct Streaming of Recorded Content ------------------------------------ * Stream Pre-recorded Programme with and http://localhost/?ACTION=direct&PROGTYPES=&PID=&MODES= Playlists of Recorded Content ----------------------------- * Create an M3U playlist with pre-recorded programmes with in the PID (open this in vlc) http://localhost/?ACTION=playlistfiles&SEARCHFIELDS=pid&SEARCH=&PROGTYPES= * Create an M3U playlist with pre-recorded 'tv' programmes with 'news' in the 'name' field (open this in vlc) http://localhost/?ACTION=playlistfiles&SEARCHFIELDS=name&SEARCH=news&PROGTYPES=tv Automatic Playlists ------------------- * All radio programmes - all modes (flashaac,flashaudio,wma): http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=radio * All TV programmes - all modes (flashhigh,flashstd,flashnormal,flashlow): http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=tv * All livetv channels: http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=livetv * All liveradio channels: http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=liveradio More specific examples: * All live radio channels (e.g. flashaac as flv): http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=liveradio&MODES=flashaac&OUTTYPE=flv * All live radio channels (e.g. flashaac as wav): http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=liveradio&MODES=flashaac&OUTTYPE=wav * All radio programmes (e.g. flash): http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=radio&MODES=flash&OUTTYPE=flv * All live radio channels with a single digit in their name http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=liveradio&SEARCH=\d * All TV programmes with the word 'news' in their name: http://127.0.0.1/iplayer?ACTION=playlist&PROGTYPES=tv&SEARCH=news Automatic OPML Playlists (works with Squeezebox) ------------------------------------------------ See: http://wiki.slimdevices.com/index.php/OPMLSupport for details on syntax In Squeezecenter, Add this URL to 'Favourites' and you will be able to navigate the programmes: * BBC iPlayer Listen Again: http:///iplayer?ACTION=opml&PROGTYPES=radio&LIST=channel * BBC iPlayer Live Flash AAC: http:///iplayer?ACTION=opml&PROGTYPES=liveradio&OUTTYPE=wav * BBC iPlayer Live Flash AAC (Numbered Channels only) http:///iplayer?ACTION=opml&PROGTYPES=liveradio&MODES=flash&SEARCH=%20\d&OUTTYPE=wav Set up crontab for PVR to run ---------------------------- * Add a line in /etc/crontab to run the pvr: 0 * * * * apache /usr/bin/get_iplayer --pvr 2>/dev/null Caveats -------- * Sometimes takes a while to load page while refreshing caches * If a boolean param is in the cookies then it overrides the unchecked status on the form regardless * When using the stream, playlist or play links directly, cookies are not sent and the settings are not applied Todo ----- * Manual flush of indices (maybe normally set --expiry to 99999999 and warn that indices are out of date) * in general, take presentation data out of the html and into css, take scripting out of the html and into the js * Add a button to save the playlist in M3U or OPML (playlist of selected progs?) get_iplayer-2.94/README.md000066400000000000000000000102721253364746300152520ustar00rootroot00000000000000## get_iplayer: BBC iPlayer Indexing Tool and PVR ## Features * Downloads MP4 streams from BBC iPlayer site with better quality than Flash player streams * Downloads Flash AAC streams for radio programmes * Allow multiple programmes to be downloaded using a single command * Indexing of all available iPlayer programs * Caching of Index (default 4h) * Regex search on programme name * Regex search on programme description and episode title * PVR capability (may be used from crontab) * Full HTTP Proxy support * Runs on Linux (Debian, Ubuntu, openSUSE and many others), OS X (10.5+) and Windows (XP/Vista/7/8) * Requires perl 5.8.8+ with LWP and XML::Simple modules **NOTE: get_iplayer can only search programmes broadcast within the previous 7 days, even if they are available for 30 days on the iPlayer web site.** See [FAQ #1](https://github.com/get-iplayer/get_iplayer/wiki/faq). ## Documentation ## Support ## Installation (Linux/Unix/OS X) * Download latest release: * After downloading the script make it executable: `chmod 755 ./get_iplayer` The script may optionally be installed to a location in PATH. * You can set the default download directory by putting the following in your shell environment (e.g. ~/.bashrc): `export IPLAYER_OUTDIR="/path/to/my/output/dir"` * The first time you run the script it will create a settings directory (`$HOME/.get_iplayer` [Linux/Unix/OSX] `%USERPROFILE%\.get_iplayer` [Windows]) and download plugins. It will then access the BBC website and create an index of all TV programmes currently on iPlayer. ## Installation (Windows) See documentation for Windows installation information. ## Usage get_iplayer --help get_iplayer --basic-help get_iplayer --long-help ## Examples * List all TV programmes (--type=tv set by default): `get_iplayer` Search output appears in this format: ... 208: Doctor Who: Series 7 Part 2 - 1. The Bells of Saint John, BBC One, Drama,SciFi & Fantasy,TV, default 209: Doctor Who: Series 7 Part 2 - 2. The Rings Of Akhaten, BBC One, Audio Described,Drama,SciFi & Fantasy,TV, default,audiodescribed 210: Doctor Who: Series 7 Part 2 - 3. Cold War, BBC One, Audio Described,Drama,SciFi & Fantasy,TV, default,audiodescribed ... Format = index: name - episode, channel, categories, versions * List all TV programmes with long descriptions: `get_iplayer --long` * List all radio programmes: `get_iplayer --type=radio` * List all TV programmes with "doctor who" in the title/episode: `get_iplayer "doctor who"` * List all TV and radio programmes with "doctor who" in the title/episode: `get_iplayer --type tv,radio "doctor who"` * List all BBC One TV programmes: `get_iplayer --channel= "BBC One"` * List all Radio 4 Extra programmes: `get_iplayer --type=radio --channel "Radio 4 Extra"` * List all Radio 4 programmes: `get_iplayer --type=radio --channel "Radio 4$"` *(The `$` regular expression metacharacter matches "Radio 4" only at the end of the channel name, thus avoiding matches against "Radio 4 Extra")* * Record programme number 208 (index from search results) in SD: `get_iplayer --get 208` * Record programme number 208 in HD (if available), with SD fallback: `get_iplayer --modes=best --get 208` * Record programme number 208 and download subtitles in SubRip (SRT) format: `get_iplayer --get 208 --subtitles` * Record all TV programmes with "doctor who' in the title/episode: `get_iplayer --get "doctor who"` * Record a programme using its iPlayer URL: `get_iplayer http://www.bbc.co.uk/iplayer/episode/b01sc0wf/Doctors_Series_15_Perfect/` * Record a programme using the PID (b01sc0wf) from its iPlayer URL: `get_iplayer --pid=b01sc0wf` * Refresh the cached index of available TV programmes: `get_iplayer --refresh` * Refresh the cached index of available TV and radio programmes: `get_iplayer --type=tv,radio --refresh` Notes: * Sometimes you may not be able to download a listed programme immediately after broadcast (usually available within 24hrs of airing). Some BBC programmes may not be available from iPlayer. get_iplayer-2.94/get_iplayer000077500000000000000000015602261253364746300162370ustar00rootroot00000000000000#!/usr/bin/env perl # # get_iplayer - Lists, Records and Streams BBC iPlayer TV and Radio programmes + other Programmes via 3rd-party plugins # # Copyright (C) 2008-2010 Phil Lewis # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Author: Phil Lewis # Email: iplayer2 (at sign) linuxcentre.net # Web: https://github.com/get-iplayer/get_iplayer/wiki # License: GPLv3 (see LICENSE.txt) # # package main; my $version = 2.94; my $version_text; $version_text = sprintf("v%.2f", $version) unless $version_text; # # Help: # ./get_iplayer --help | --longhelp # # Changelog: # https://github.com/get-iplayer/get_iplayer/commits/master # # Example Usage and Examples: # https://github.com/get-iplayer/get_iplayer/wiki/documentation # # Todo: # * Fix non-uk detection - iphone auth? # * Index/Record live radio streams w/schedule feeds to assist timing # * Remove all rtsp/mplayer/lame/tee dross when realaudio streams become obselete (not quite yet) # ** all global vars into a class??? # ** Cut down 'use' clauses in each class # * stdout streaming with mms # * Add podcast links to web pvr manager # * Add PVR search src to recording history # * Fix unicode / wide chars in rdf # # Known Issues: # * CAVEAT: The filenames and modes in the history are comma-separated if there was a multimode download. For now it just uses the first one. # use Env qw[@PATH]; use Fcntl; use File::Copy; use File::Path; use File::stat; use File::Spec; use Getopt::Long; use HTML::Entities; use HTTP::Cookies; use HTTP::Headers; use IO::Seekable; use IO::Socket; use LWP::ConnCache; use LWP::UserAgent; use POSIX qw(mkfifo); use POSIX qw(:termios_h); use strict; #use warnings; use Time::Local; use Unicode::Normalize; use URI; use open qw(:utf8); use Encode qw(:DEFAULT :fallback_all); use PerlIO::encoding; $PerlIO::encoding::fallback = XMLCREF; use constant FB_EMPTY => sub { '' }; my %SIGORIG; # Save default SIG actions $SIGORIG{$_} = $SIG{$_} for keys %SIG; $|=1; # Save proxy env var my $ENV_HTTP_PROXY = $ENV{HTTP_PROXY} || $ENV{http_proxy}; # Hash of where plugin files were found so that the correct ones can be updated my %plugin_files; # Hash of all prog types => Programme class # Add an entry here if another Programme class is added my %prog_types = ( tv => 'Programme::tv', radio => 'Programme::radio', liveradio => 'Programme::liveradio', livetv => 'Programme::livetv', ); # Programme instance data # $prog{$pid} = Programme->new ( # 'index' => , # 'name' => , # 'episode' => , # 'desc' => , # 'available' => , # 'duration' => # 'versions' => # 'thumbnail' => # 'channel => # 'categories' => # 'type' => # 'timeadded' => # 'version' => # 'filename' => # 'dir' => # 'fileprefix' => # 'ext' => #); # Define general 'option names' => ( ,