Nachdem save.tv etwas geändert hat, hier ein kleines Update:
#!/usr/bin/perl
use Expect;
use strict;
my $lnk=shift() || die "No link!";
my $debug=0;
$lnk =~ s/<b>TelecastID=(<b>)/$1/g;
my $flnk = "http://www.save.tv/STV/M/obj/cRecordOrder/croGetDownloadUrl.cfm?null.GetDownloadUrl&ajax=true&clientAuthenticationKey=&callCount=1&c0-scriptName=null&c0-methodName=GetDownloadUrl&c0-id=4331_1271963921321&c0-param0=number:$lnk&c0-param1=number:0&c0-param2=boolean:false&xml=true";
open (FILE, '>>/tmp/fyst.log');
if($debug) {
print FILE "---- LINK ----n$flnkn";
}
$Expect::Log_Stdout = 0;
my $ssh=new Expect;
$ssh->slave->clone_winsize_from(*STDIN);
$ssh->spawn("elinks "$flnk"");
$ssh->expect(10, 'EOF');
my $read = $ssh->before();
$ssh->send_slow(0, "qn");
if($debug) {
print FILE "---- READ ----n";
print FILE $read;
}
$read =~ s/<b>'OK','//gm;
$read =~ s/'<b>//gm;
if($debug) {
print FILE "n---- TARGET ----n";
print FILE $read;
}
my $cmd="wget -b -o /dev/null --content-disposition '$read' > /dev/null";
print FILE "n---- WGET ----n" if($debug);
print FILE "$cmdn";
system $cmd;
close (FILE);
Damit die URL vollständig ist, muss das Elinks "Fenster" größer sein. Da ich auf die schnelle nicht rausfand wie man die Größe des virtuellen Fensters richtig setzt, erbt es die Größe des aufrufenden Fensters. Dieses sollte als halbwegs groß sein, so ab 40 Zeichen aufwärts denke ich.