WARNING dieser kleine Trick ist noch kaum getestet!
Vor einiger Zeit befanden es die Löffel von save.tv für angebracht Javascript in den Downloadlinks zu verwenden. Damit fiel Elinks als Downloadclient zunächst mal flach. Da die echte url aber immer noch als Parameter einer Funktion im onclick Attribut stand war es leicht mit einem kleinen Perlscript und wget den Nervkram zu umgehen.
Jetzt haben sie noch ne Kohle nachgelegt. Die URL wird per Ajax request geholt. Glücklicherweise zeigt sich unter Einsatz von Firebug das der Request nur eine Variable benötigt, und die steht in der URL der Downloadseite. (Es gibt noch ein paar Konstanten, und einen Sring aus Zahlen die durch einen Unterstrich getrennt sind, aber die scheint egal zu sein).
Einfach mit wget kommt man nicht an die Daten, die Ajax Seite braucht 'ne Session. Aber Elinks ist smart, es benutzt über alle Instanzen die gleiche Sessions. Ein einfaches "elinks -dump $url" geht allerdings aus irgendwelchen Gründen nicht, da fehlt dann die Session. Anzeigen mit "elinks $url" funktioniert. Nunjawieauchimmer.
Mit Perl::Expect kann man einfach in einem virtuellen Terminal "elinks $url" ausführen, die Ausgabe abfangen und "qn" senden. Insofern kann ich also meine alte Anleitung zum Downloaden per Elinks von save.tv mit neuem Skript wieder einstellen:
Dies
Einstellungen->Optionsmanager; Dokument(e)->URL Delegierung; Hinzufügen "savetv"; savetv->Edit "pathofyourchoice/fuckyousavetv.pl %c"; save
und das
k->Haupttabelle->Die URI des aktuellen...->Hinzufügen "Keyofyourchoice"
Und dann noch dieses Skript:
#!/usr/bin/perl
use Expect;
use strict;
my $lnk=shift() || die "No link!";
$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=1234_1234567890123
&c0-param0=number:$lnk&c0-param1=number:0&c0-param2=boolean:false&xml=true";
$Expect::Log_Stdout = 0;
my $ssh=Expect->spawn("elinks "$flnk"");
$ssh->expect(10, 'EOF');
my $read = $ssh->before();
$ssh->send_slow(0, "qn");
my @read2=split("n",$read);
$read=$read2[1];
$read =~ s/<b>'OK','//gm;
$read =~ s/'<b>//gm;
system "wget -b -o /dev/null --content-disposition '$read' > /dev/null";