Audio/video stream recording forums
|
| Attention Visitor: |
You may have to register or log in before you can post:
|
|
|||||||
|
|
|
Thread Tools | Display Modes |
|
#11
|
|||
|
|||
Download from BBC iPlayer - TV Show - Javascript methodHere is a revised script for downloading the Akamai live tv streams from the BBC.
This is a modified version of the batch file script posted above in this thread, modified to take account of recent changes on the BBC website. Copy-and-paste the code into a plain text file called (for example) BBCtv_Live_Akamai.bat Code:
@echo off
:: *** Select Channel *** [ MediaSelector ID ]
SET ID=bbc_one_london
:: SET ID=bbc_two_england
:: SET ID=bbc_three
:: SET ID=bbc_four
:: *** Select Bitrate *** [ MediaSelector Bitrate ]
:: SET bitrate=56
:: SET bitrate=176
:: SET bitrate=396
:: SET bitrate=480
SET bitrate=796
:: SET bitrate=1500
:: *** Select Supplier *** [ MediaSelector Supplier ] !! This script ONLY works for an AKAMAI server !!
SET supplier=akamai
:: *** Media Selector pages ***
:: http://www.bbc.co.uk/mediaselector/4/mtis/stream/bbc_one_london
:: http://www.bbc.co.uk/mediaselector/4/mtis/stream/bbc_two_england
:: http://www.bbc.co.uk/mediaselector/4/mtis/stream/bbc_three
:: http://www.bbc.co.uk/mediaselector/4/mtis/stream/bbc_four
:: *** Port ***
SET port=1935
:: *** RTMPDump v2.4 (RTMPDump v2.1d doesn't work) ***
SET rtmpdump=C:\\Program Files (x86)\\rtmpdump\\rtmpdump.exe
:: *** SWF File ***
SET swf=http://www.bbc.co.uk/emp/releases/iplayer/revisions/617463_618125_4/617463_618125_4_emp.swf
:: *** File Name ***
SET currDate=%date:/=-%
SET currTime=%time::=-%
:: *** Safety Tests ***
IF EXIST "%temp%\*.bat" DEL "%temp%\*.bat"
IF EXIST "%temp%\*.htm" DEL "%temp%\*.htm"
:: *** Create a HTML file : AKAMAI ***
ECHO ^<html^> >> %temp%\temp.htm
ECHO ^<head^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^<title^>Parse BBC iPlayer XML File - Javascript Method^</title^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^<!-- Downloading from a BBC iPlayer page --^> >> %temp%\temp.htm
ECHO ^<!-- This parses the elements in a MediaSelector XML page --^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^<SCRIPT^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Target XML file's URL address [MediaSelector URL] >> %temp%\temp.htm
ECHO var url = "http://www.bbc.co.uk/mediaselector/4/mtis/stream/%ID%"; >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO var xmlDoc; >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO window.open('','_self'); // This prevents the browser window prompting before closing >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO function loadXML() >> %temp%\temp.htm
ECHO { >> %temp%\temp.htm
ECHO xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); >> %temp%\temp.htm
ECHO xmlDoc.async = false; >> %temp%\temp.htm
ECHO xmlDoc.onreadystatechange = readXML; >> %temp%\temp.htm
ECHO xmlDoc.load(url); >> %temp%\temp.htm
ECHO } >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO function readXML() >> %temp%\temp.htm
ECHO { >> %temp%\temp.htm
ECHO if(xmlDoc.readyState == 4) { >> %temp%\temp.htm
ECHO // This function is called on statechange >> %temp%\temp.htm
ECHO // When the state reaches 4 this function reads the xml document >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Create a Text File >> %temp%\temp.htm
ECHO var fso = new ActiveXObject("Scripting.FileSystemObject"); >> %temp%\temp.htm
ECHO var fh = fso.CreateTextFile("C:\\MediaSelector.bat",true); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // LEVEL 1 TAGS [Primary tags] >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Specify the Level 1 tag to loop through >> %temp%\temp.htm
ECHO var a = xmlDoc.getElementsByTagName("media"); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Loop instruction >> %temp%\temp.htm
ECHO for (i=0;i^<a.length;i++) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Specify a target element within the Level 1 tag >> %temp%\temp.htm
ECHO // Specified element must exist in ALL the Level 1 tags >> %temp%\temp.htm
ECHO element1 = a[i].attributes.getNamedItem("kind").nodeValue; // create array [Line 50] >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Conditional Filter >> %temp%\temp.htm
ECHO // Pass only those tags that contain video data >> %temp%\temp.htm
ECHO if ( element1=="video" ) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Test value of chosen element within this IF condition >> %temp%\temp.htm
ECHO // alert( "Video = " + element1 ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
|
|
#12
|
|||
|
|||
Download from BBC iPlayer - TV Show - Javascript method -- Continued/Continued...
Code:
ECHO // Conditional Filter [Bitrate] >> %temp%\temp.htm
ECHO // Pass only the tag that contains the desired bitrate >> %temp%\temp.htm
ECHO element2 = a[i].attributes.getNamedItem("bitrate").nodeValue; // create array >> %temp%\temp.htm
ECHO if ( element2==%bitrate% ) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // NOTE: The element "bitrate" can't be used as the primary filter at line 50, >> %temp%\temp.htm
ECHO // because it's an element that does NOT exist in all primary level tags >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Test value of chosen element within this IF condition >> %temp%\temp.htm
ECHO // alert( "Bitrate = " + element2 ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // LEVEL 2 TAGS [Child tags] >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Loop through each Child tag >> %temp%\temp.htm
ECHO var b = a[i].childNodes; >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Loop instruction >> %temp%\temp.htm
ECHO for (j=0;j^<b.length;j++) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Specify a target element within the Child tag >> %temp%\temp.htm
ECHO // Specified element must exist in ALL the Child tags >> %temp%\temp.htm
ECHO element3 = b[j].attributes.getNamedItem("supplier").nodeValue; // create array >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Conditional Filter [Supplier] >> %temp%\temp.htm
ECHO // Pass only the Child tag that contains the desired supplier >> %temp%\temp.htm
ECHO if ( element3=="%supplier%" ) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Test value of chosen element within this IF condition >> %temp%\temp.htm
ECHO // alert( "Supplier = " + element3 ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Write elements in selected Child tag to file >> %temp%\temp.htm
ECHO fh.WriteLine( '@echo off' ); >> %temp%\temp.htm
ECHO fh.WriteLine( ':: Media tag #' + [i] + ', Child tag #' + [j] ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET rtmpdump=%rtmpdump%' ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET protocol=' + b[j].attributes.getNamedItem("protocol").nodeValue ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET server=' + b[j].attributes.getNamedItem("server").nodeValue ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET application=' + b[j].attributes.getNamedItem("application").nodeValue ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET identifier=' + b[j].attributes.getNamedItem("identifier").nodeValue ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO var str1=b[j].attributes.getNamedItem("authString").nodeValue; >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET authString=' + str1.replace(/^&/g,"^&") ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
:: NOTES: 1. The symbol & must be carat-escaped using REPLACE (character to replace, replacement character).
:: 2. A carat (symbol ^) must preceed & in the first argument; g [global] means replace ALL instances.
:: 3. In second argument no escaping is needed: use of double quotes forces the symbols to be read literally
ECHO fh.WriteLine( ':: *** Command Line : TV : AKAMAI : %bitrate% kbps ***' ); >> %temp%\temp.htm
ECHO fh.WriteLine( '"%%rtmpdump%%" --live --verbose ' + >> %temp%\temp.htm
ECHO '-r "%%protocol%%://%%server%%:%port%/%%application%%?%%authString%%" ' + >> %temp%\temp.htm
ECHO '-a "%%application%%?%%authString%%" -y "%%identifier%%?%%authString%%" ' + >> %temp%\temp.htm
ECHO '-f "WIN 11,1,102,63" -W "%swf%" ' + >> %temp%\temp.htm
ECHO '-o "Live %ID% ['+element2+'kbps] ['+element3+'] %currDate% %currTime%.flv" '); >> %temp%\temp.htm
:: NOTES: 1. The symbol % must be doubled in a Batch file (in contrast to a Command Line).
ECHO. >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO } } // Close Level 2 >> %temp%\temp.htm
ECHO } } } // Close Level 1 >> %temp%\temp.htm
ECHO } >> %temp%\temp.htm
ECHO } >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^</SCRIPT^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^</head^> >> %temp%\temp.htm
ECHO ^<body onload="loadXML();window.close()"^> ^</body^> >> %temp%\temp.htm
ECHO ^</html^> >> %temp%\temp.htm
:: *** Run HTM file in Internet Explorer ***
"C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE" %temp%\temp.htm
:: *** Run MediaSelector.bat ***
CALL "C:\MediaSelector.bat"
pause
|
|
#13
|
|||
|
|||
Download from BBC iPlayer - TV Show - Javascript method -- Limelight StreamThe following code is the contents of a .bat batch file for downloading a BBC tv live stream from a LIMELIGHT server.
Copy-and-paste the code into a file called (for example) BBCtv_Live_Limelight.bat Code:
@echo off
:: *** MediaSelector ID ***
SET ID=bbc_one_london
:: SET ID=bbc_two_england
:: SET ID=bbc_three
:: SET ID=bbc_four
:: *** Stream Bitrate ***
:: SET bitrate=56
:: SET bitrate=176
:: SET bitrate=396
:: SET bitrate=480
SET bitrate=796
:: SET bitrate=1500
:: *** Supplier ***
SET supplier=limelight
:: *** Port ***
SET port=1935
:: *** RTMPDump v2.4 (RTMPDump v2.1d doesn't work) ***
SET rtmpdump=C:\\Program Files (x86)\\rtmpdump\\rtmpdump.exe
:: *** SWF File ***
SET swf=http://www.bbc.co.uk/emp/releases/iplayer/revisions/617463_618125_4/617463_618125_4_emp.swf
:: *** File Name ***
SET currDate=%date:/=-%
SET currTime=%time::=-%
:: *** Safety Tests ***
IF EXIST "%temp%\*.bat" DEL "%temp%\*.bat"
IF EXIST "%temp%\*.htm" DEL "%temp%\*.htm"
:: *** Create a HTML file : LIMELIGHT stream ***
ECHO ^<html^> >> %temp%\temp.htm
ECHO ^<head^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^<title^>Parse BBC iPlayer XML File - Javascript Method^</title^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^<!-- Downloading from a BBC iPlayer page --^> >> %temp%\temp.htm
ECHO ^<!-- This parses the elements in a MediaSelector xml page --^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^<SCRIPT^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Target XML file's URL address [MediaSelector URL] >> %temp%\temp.htm
ECHO var url = "http://www.bbc.co.uk/mediaselector/4/mtis/stream/%ID%"; >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO var xmlDoc; >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO window.open('','_self'); // This prevents the browser window prompting before closing >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO function loadXML() >> %temp%\temp.htm
ECHO { >> %temp%\temp.htm
ECHO xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); >> %temp%\temp.htm
ECHO xmlDoc.async = false; >> %temp%\temp.htm
ECHO xmlDoc.onreadystatechange = readXML; >> %temp%\temp.htm
ECHO xmlDoc.load(url); >> %temp%\temp.htm
ECHO } >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO function readXML() >> %temp%\temp.htm
ECHO { >> %temp%\temp.htm
ECHO if ( xmlDoc.readyState==4 ) { >> %temp%\temp.htm
ECHO // This function is called on statechange >> %temp%\temp.htm
ECHO // When the state reaches 4, this function reads the xml document >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Create a Text File >> %temp%\temp.htm
ECHO var fso = new ActiveXObject("Scripting.FileSystemObject"); >> %temp%\temp.htm
ECHO var fh = fso.CreateTextFile("C:\\MediaSelector.bat",true); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // LEVEL 1 TAGS [Primary tags] >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Specify the Level 1 tag to loop through >> %temp%\temp.htm
ECHO var a = xmlDoc.getElementsByTagName("media"); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Loop instruction >> %temp%\temp.htm
ECHO for (i=0;i^<a.length;i++) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Specify a target element within the Level 1 tag >> %temp%\temp.htm
ECHO // Specified element must exist in ALL the Level 1 tags >> %temp%\temp.htm
ECHO element1 = a[i].attributes.getNamedItem("kind").nodeValue; // create array [Line 50] >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Conditional Filter >> %temp%\temp.htm
ECHO // Pass only those tags that contain video data >> %temp%\temp.htm
ECHO if ( element1=="video" ) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Test value of chosen element >> %temp%\temp.htm
ECHO // alert( "Kind = " + element1 ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Conditional Filter >> %temp%\temp.htm
ECHO // Pass only the tag that contains the desired bitrate >> %temp%\temp.htm
ECHO element2 = a[i].attributes.getNamedItem("bitrate").nodeValue; // create array >> %temp%\temp.htm
ECHO if ( element2==%bitrate% ) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // NOTE: The element "bitrate" can't be used as the primary filter at line 50, >> %temp%\temp.htm
ECHO // because it's an element that does NOT exist in all primary level tags >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Test value of chosen element >> %temp%\temp.htm
ECHO // alert( "Bitrate = " + element2 ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
/Continued below... |
|
#14
|
|||
|
|||
Download from BBC iPlayer - TV Show - Javascript method -- Continued/ Continued...
Code:
ECHO // LEVEL 2 TAGS [Child tags] >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Loop through each Child tag >> %temp%\temp.htm
ECHO var b = a[i].childNodes; >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Loop instruction >> %temp%\temp.htm
ECHO for (j=0;j^<b.length;j++) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Specify a target element within the Child tag >> %temp%\temp.htm
ECHO // Specified element must exist in ALL the Child tags >> %temp%\temp.htm
ECHO element3 = b[j].attributes.getNamedItem("supplier").nodeValue; >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Conditional Filter >> %temp%\temp.htm
ECHO // Pass only the Child tag that contains the desired supplier >> %temp%\temp.htm
ECHO if ( element3=="%supplier%" ) { >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Test value of element >> %temp%\temp.htm
ECHO // alert( "Supplier = " + element3 ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO // Write elements in selected Child tag to file >> %temp%\temp.htm
ECHO fh.WriteLine( '@echo off' ); >> %temp%\temp.htm
ECHO fh.WriteLine( ':: Media tag #' + [i] + ', Child tag #' + [j] ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET rtmpdump=%rtmpdump%' ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET protocol=' + b[j].attributes.getNamedItem("protocol").nodeValue ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET server=' + b[j].attributes.getNamedItem("server").nodeValue ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET application=' + b[j].attributes.getNamedItem("application").nodeValue ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET identifier=' + b[j].attributes.getNamedItem("identifier").nodeValue ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO var str1 = b[j].attributes.getNamedItem("authString").nodeValue; >> %temp%\temp.htm
ECHO fh.WriteLine( 'SET authString=' + str1.replace(/^&/g,"^&") ); >> %temp%\temp.htm
ECHO fh.WriteLine( '' ); >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
:: NOTES: 1. The symbol & must be carat-escaped using REPLACE (character to replace, replacement character).
:: 2. A carat (symbol ^) must preceed & in the first argument; g [global] means replace ALL instances.
:: 3. In second argument no escaping is needed: use of double quotes forces the symbols to be read literally
ECHO fh.WriteLine( ':: *** Command Line : TV : LIMELIGHT : %bitrate% kbps ***' ); >> %temp%\temp.htm
ECHO fh.WriteLine( '"%%rtmpdump%%" --live --protocol "%%protocol%%" --host "%%server%%" ' + >> %temp%\temp.htm
ECHO '--port %port% -a "%%application%%?%%authString%%&%%identifier%%" ' + >> %temp%\temp.htm
ECHO '-y "%%identifier%%" ' + >> %temp%\temp.htm
ECHO '-o "Live %ID% ['+element2+'kbps] ['+element3+'] %currDate% %currTime%.flv" '); >> %temp%\temp.htm
:: NOTES: 1. The symbol % must be doubled in a Batch file (in contrast to a Command Line),
:: to prevent it being expanded immediately as if it was an environment variable.
ECHO. >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO } } // Close Child function >> %temp%\temp.htm
ECHO } } } // Close Primary function >> %temp%\temp.htm
ECHO } >> %temp%\temp.htm
ECHO } >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^</SCRIPT^> >> %temp%\temp.htm
ECHO. >> %temp%\temp.htm
ECHO ^</head^> >> %temp%\temp.htm
ECHO ^<body onload="loadXML();window.close()"^> ^</body^> >> %temp%\temp.htm
ECHO ^</html^> >> %temp%\temp.htm
:: *** Run HTM file in Internet Explorer ***
"C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE" %temp%\temp.htm
:: *** Run MediaSelector.bat ***
CALL "C:\MediaSelector.bat"
|
|
#15
|
|||
|
|||
Re: Download from BBC iPlayer - TV Show - Javascript methodQuote:
github.com/svnpenn/a/blob/ca92/scripts/BBCtv_Live_Limelight.bat github.com/svnpenn/a/blob/ca92/scripts/BBCtv_Live_Akamai.bat Last edited by svnpenn : 12-27-2012 at 12:49 AM. |
|
#16
|
|||
|
|||
Re: RTMPDump v2.1d and BBC iPlayerThank you, but if I had wanted to do that I could have done it myself.
![]() My purpose in posting commented code is to explain - to people who might want to use the code - how it works, so that they can adapt it to other situations. I anticipate that few users, if any, will want to download BBC live streams. Their on-demand streams are much more user-friendly, for example. This code is just an illustration of how easy it can be to use a batch script to interrogate an xml file and build a download link from it. Accordingly, this code is for posting, and explaining; not necessarily for using. |
|
#17
|
|||
|
|||
Re: RTMPDump v2.1d and BBC iPlayerpossible to use such a file on CBS,Hulu...?
|
|
#18
|
|||
|
|||
Re: Download from BBC iPlayer - TV Show - Javascript methodQuote:
I am outside the UK, and I got the iplayer code with a vpn. After the Mediaselector has been established, I just shut down the vpn and found the download still works ! Now I am enjoying a much better download speed, thanks to the code above!! |
|
#19
|
|||
|
|||
Re: RTMPDump v2.1d and BBC iPlayerReally? Does it work from outside UK?
I am trying it from Spain and it doesn't work... I get the Media Selector because I am using tunlr.net trick (without it, it fails at the beginning), but then rtmp:// fails. Here is the log. Any help or comment? Code:
RTMPDump v2.4 (c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL DEBUG: Parsing... DEBUG: Parsed protocol: 0 DEBUG: Parsed host : cp96472.live.edgefcs.net DEBUG: Parsed app : live?auth=daEbBbpbCaQdadpdoaMdndBaGdEa0dva4dW-brhr._-bWG -IoqEInyqFEsHrwK&aifp=v001&slist=bbc1_inlet_480@s24324;bbc1_inlet_800@s24324;bbc 1_inlet_176@s24324;bbc1_inlet_56@s24324;bbc1_inlet_1500@s24324;bbc1_inlet_396@s2 4324 DEBUG: Protocol : RTMP DEBUG: Hostname : cp96472.live.edgefcs.net DEBUG: Port : 1935 DEBUG: Playpath : bbc1_inlet_800@s24324?auth=daEbBbpbCaQdadpdoaMdndBaGdEa0dva4dW -brhr._-bWG-IoqEInyqFEsHrwK&aifp=v001&slist=bbc1_inlet_480@s24324;bbc1_inlet_800 @s24324;bbc1_inlet_176@s24324;bbc1_inlet_56@s24324;bbc1_inlet_1500@s24324;bbc1_i nlet_396@s24324 DEBUG: tcUrl : rtmp://cp96472.live.edgefcs.net:1935/live?auth=daEbBbpbCaQdadp doaMdndBaGdEa0dva4dW-brhr._-bWG-IoqEInyqFEsHrwK&aifp=v001&slist=bbc1_inlet_480@s 24324;bbc1_inlet_800@s24324;bbc1_inlet_176@s24324;bbc1_inlet_56@s24324;bbc1_inle t_1500@s24324;bbc1_inlet_396@s24324 DEBUG: swfUrl : http://www.bbc.co.uk/emp/releases/iplayer/revisions/617463_618 125_4/617463_618125_4_emp.swf DEBUG: app : live?auth=daEbBbpbCaQdadpdoaMdndBaGdEa0dva4dW-brhr._-bWG-IoqEI nyqFEsHrwK&aifp=v001&slist=bbc1_inlet_480@s24324;bbc1_inlet_800@s24324;bbc1_inle t_176@s24324;bbc1_inlet_56@s24324;bbc1_inlet_1500@s24324;bbc1_inlet_396@s24324 DEBUG: flashVer : WIN 11,1,102,63 DEBUG: live : yes DEBUG: timeout : 30 sec DEBUG: SWFSHA256: DEBUG: b6 74 7f 89 f9 ec 6a 60 c1 a4 b5 8b b1 18 b0 fa DEBUG: 65 18 86 24 c2 8a 1a a3 2f 72 0f 0b 80 59 dd 7f DEBUG: SWFSize : 595316 DEBUG: Setting buffer time to: 36000000ms Connecting ... DEBUG: RTMP_Connect1, ... connected, handshaking DEBUG: HandShake: Client type: 03 DEBUG: HandShake: Client digest offset: 53 DEBUG: HandShake: Initial client digest: DEBUG: fc 05 f6 56 84 91 0b 14 1d 8a 1c 21 db a3 1d c1 DEBUG: a5 8d ec a6 9d bb d9 e1 d3 f4 f6 bc ab da 95 f4 DEBUG: HandShake: Type Answer : 03 DEBUG: HandShake: Server Uptime : 407558033 DEBUG: HandShake: FMS Version : 4.5.2.1 DEBUG: HandShake: Calculated digest key from secure key and server digest: DEBUG: 04 96 57 47 80 65 3a e9 02 5f 6e 2e c0 2c 60 b9 DEBUG: 86 58 60 22 9e c0 5d d6 24 54 7b d7 84 62 95 97 DEBUG: HandShake: Client signature calculated: DEBUG: 63 e0 9c cb 05 0b c4 a9 ee 10 e7 a4 32 8f ee 1f DEBUG: bf fe 1e 59 9a ee b2 28 f5 c2 01 cc 38 1b c1 f0 DEBUG: HandShake: Server sent signature: DEBUG: 99 93 7a b9 3d 5a 9b 30 09 d8 fa 77 0b 89 2e 0f DEBUG: 1c 78 c7 97 ce a1 69 ef c8 46 32 32 55 80 d2 8a DEBUG: HandShake: Digest key: DEBUG: 4b e6 40 f4 27 2a 4f 80 d3 b2 e3 aa 48 11 d5 fc DEBUG: 8b ab 81 22 3a b3 41 1c 63 9b d9 35 85 06 7b d0 DEBUG: HandShake: Signature calculated: DEBUG: 99 93 7a b9 3d 5a 9b 30 09 d8 fa 77 0b 89 2e 0f DEBUG: 1c 78 c7 97 ce a1 69 ef c8 46 32 32 55 80 d2 8a DEBUG: HandShake: Genuine Adobe Flash Media Server DEBUG: HandShake: Handshaking finished.... DEBUG: RTMP_Connect1, handshaked DEBUG: Invoking connect INFO: Connected... DEBUG: RTMP_ClientPacket, received: invoke 134 bytes DEBUG: (object begin) DEBUG: Property: NULL DEBUG: (object begin) DEBUG: Property: <Name: level, STRING: error> DEBUG: Property: <Name: code, STRING: NetConnection.Connect.Rejected> DEBUG: Property: <Name: description, STRING: [ AccessManager.Reject ] : Access denied!> DEBUG: (object end) DEBUG: (object end) DEBUG: HandleInvoke, server invoking <_error> ERROR: rtmp server sent error DEBUG: RTMP_ClientPacket, received: invoke 18 bytes DEBUG: (object begin) DEBUG: Property: NULL DEBUG: (object end) DEBUG: HandleInvoke, server invoking <close> ERROR: rtmp server requested close DEBUG: Closing connection. Press any key to continue . . . Chemi. |
|
#20
|
|||
|
|||
RTMPDump v2.1d and BBC iPlayerSorry, I live in England, so I have no means of testing solutions for using this code from outside the UK.
This code should produce the same command line for downloading the target tv show, whether it is run from inside the UK or elsewhere. The problem will be the rtmp connection, not the command line. The BBC tests the connection, to learn whether it is being originated from an ip address in the UK. They reject a connection if it is from an ip address outside the UK. There are various ways for you to overcome this. I can only speak in general terms, because I can't test these solutions. Geo-spoofing is a trick which allows you, situated in a foreign country, to appear to be originating a connection from within the UK. Look up geo-spoofing or ip-spoofing on Google for details. There is a software program called Tor which allows you to connect your computer to a node inside the UK, which acts as a relay, so that your computer appears to be co-located with the node (i.e. if the node is in the UK, then you too appear to be in the UK). https://www.torproject.org/download/download.html.en Also look at http://sourceforge.net/projects/tork...d?source=files Also search 'Anonymous web proxy'. This will lead you to e.g. http://hidemyass.com/ or http://apcyberax.co.uk/iwfchecker/ or http://server14.kproxy.com/ There are in fact many software solutions, but the problem they solve is that your connection request is originating from outside the UK. There is nothing wrong with the command line built by my code - it will work, provided you can mask the fact that you are running it from a computer that is outside the UK. |
|
| Tags: bbc, bbc iplayer, download, downloading, iplayer, record, recording, rtmpdump |
| Thread Tools | |
| Display Modes | |
|
|