Open GoogleCodeExporter opened 9 years ago
Wenn ich mir den source code des scripts anschaue dann sieht es so aus als ob
keine Unterstützung für Serien da ist (oder genauer, für aufklappbare
Einträge auf der Save.TV Video Archiv Seite).
Alledings ist es bei mir so dass ich derzeit 9 aufklappbare Einträge im Archiv
habe, von denen 3 vom script erkannt werden, offenbar weil deren Kinder aus
irgend einem Grund schon geladen sind und in der Source der Seite schon
vorhanden sind. Das merkt man im Browser daran dass das Aufklappen sofort die
Kinder anzeigt, während für die restlichen 6 Einträge erst kurz der
Lade-Kringel kommt. Das ist auch reproduzierbar: Wenn man "Aktualisieren"
drückt, sind wieder die gleichen 3 bereits geladen und die gleichen 6 werden
beim Aufklappen nachgeladen. Was das Kriterium dafür ist welche vorgeladen
werden konnte ich bisher nicht rausfinden.
Als Resultat bekomme ich derzeit 22 Downloads mit dem Script, von 272 die die
Save.TV Webseite anzeigt.
Wie schon gesagt, ich bin der Ansicht dass das script erweitert werden müsste
um die nicht geladenen Einträge nachzuladen.
Bin allerdings Neuling mit dem script ... von daher wäre ein Kommentar von
proselyt gut.
Gruß, Andi
Original comment by joco...@gmail.com
on 16 Mar 2013 at 2:52
Ich habe mal Versuche gemacht das einzubauen. Das Aufklappen eines Serien-Items
auf der Archivseite mittels Browser folgt einem Link
href="javascript:STV.Archive.toggleSerial(x)". Diese Javascript Funktion
toggelt dann das auf- und zuklappen und stellt beim ersten Aufklappen
zusätzlih sicher dass die Aufnahmen der Serie auf die Seite geladen werden.
Ich habe nun versucht mittels mechanize.Browser.open() dem Link zu folgen und
habe festgestellt dass mechanize offenbar keine Links unterstützt die
Javascript auf diese Weise aufrufen.
Hat jemand Erfahrung mit mechanize und kann hier weiterhelfen ?
Original comment by joco...@gmail.com
on 20 Mar 2013 at 7:02
Nachtrag: mechanize wirft eine exception:
<urlopen error unknown url type: javascript>
wenn man versucht mit:
self.browser.open("javascript:STV.Archive.toggleSerial(1)")
dem Link zu folgen.
In diesem Artikel (allerdings von von 4/2009):
http://stackoverflow.com/questions/802225/how-do-i-use-mechanize-to-process-java
script
gibt es eine Antwort die sagt dass mechanize kein Javascript unterstützt (und
mehrere Antworten die WATIR empfehlen um Webseiten mit Javascript zu
automatisieren, aber das scheint es nur für Ruby zu geben).
Deshalb habe ich noch einen weiteren Versuch gemacht die Serieneinträge zu
laden, indem ich den HTTP POST der vom Javascript ausgeführt wird, direkt
ausführe, leider auch erfolglos (kann aber sein dass ich da was nicht richtig
gemacht habe):
self.browser.open("/STV/M/obj/user/usShowVideoArchiveLoadEntries.cfm?null.GetVideoEntries", data)
wobei data auf einen langen string gesetzt war den ich getraced hatte. Das soll
laut doku einen POST machen mit dem string als payload.
Resultat dieses Versuchs war dass von der Seite weg navigiert wurde was später
zu einem entsprechenden Folgefehler führte; bin mir also nicht sicher ob
wirklich ein POST ausgeführt wurde.
Ich bleibe da noch etwas dran, aber mein Eindruck ist dass mechanize hier
schlichtweg an seine Grenzen kommt und wir was anderes benutzen sollten.
Andi
Original comment by joco...@gmail.com
on 20 Mar 2013 at 7:27
Hallo Andi,
das "Bereitstellen" der Videos durch die save.tv-Seite funktioniert auch schon
immer über einen Javascript-Link. Das Skript imitiert auch nur die Anfrage,
die dann letztlich an den save.tv-Server rausgeht. Das müsste hier auch so
gehen.
Problem ist nur: ich habe inzwischen selber keinen save.tv-Account mehr. Ich
kann mir das ganze aber mal ansehen, wenn Du mir einen Mitschnitt einer Session
schickst.
Das geht am besten mit Google Chrome. Dazu *nach* dem Einloggen (damit Deine
Logindaten geheim bleiben) mit F12 die "Developer Tools" aufklappen. Es
erscheint dann unten ein neues Fenster mit mehreren Karteireitern. Dort
"Network" auswählen und ganz unten den kleinen grauen Kreis anklicken, so dass
er rot wird ("Preserve log upon navigation"). Dann zum Archiv navigieren und
dort eine oder am besten mehrere Serien aufklappen, so dass er die einzelnen
Aufzeichnungen nachlädt und anzeigt. Anschließend das Protokoll, das dabei in
dem Fenster unten mitgeschrieben wird abspeichern. Dazu in das Fenster rechts
klicken und "Save as HAR with content" auswählen. Das erzeugte File am besten
Zippen und mir schicken, dann schaue ich mal, ob ich den Request finde, über
den er die Serieneinträge nachlädt.
Viele Grüße,
Jörn
Original comment by proselyt@googlemail.com
on 20 Mar 2013 at 10:18
Unterstützung für Serien ist in der neuen Version die ich demnächst bereit
stellen werde. Das Script geht jetzt durch alle Serien-Items und lädt die
Aufnahmen darin nach. Es kann auch mit bereits geladenen Aufnahmen in
Serien-Items umgehen (Save.TV lädt kleinere Mengen an Aufnahmen in einer Serie
manchmal automatisch). Gebt mir noch ein paar Tage Zeit zum Testen. Dieser Teil
läuft bereits seit 2 Wochen oder so stabil, was noch etwas Zeit braucht ist
mit den vielen kleinen Fehlevrhalten der derzeitigen Save.TV Seite umzugehen.
Original comment by joco...@gmail.com
on 15 May 2013 at 12:18
Original issue reported on code.google.com by
sth...@gmail.com
on 1 Mar 2013 at 11:33Attachments: