Seite 1 von 2

Flash Files downloaden

Verfasst: 01.01.2009 15:05
von DrNo
Es gibt ja viele kostenlose Flashgames (z.B. auf y8.com), wo man kostenlos spielen, aber nicht direkt downloaden kann. Wenn man jedoch in den Quellcode spickt sieht man irgend wo den Befehl RunFlash(...) mit dem direkten Link zu der Flash Datei (.swf), so dass man sie runterladen kann. Gibt es irgendeine möglichkeit den Link aus der Seite auszulesen?
Also z.B. wie die ganzen Youtube downloader oder so dass man eben den Link einfügt. Ich mein man könnte ja auch ne Datenbank machen aber das wär etwas umständlich.

Weis da einer wie ich sowas mach?

DrNo

Verfasst: 01.01.2009 17:22
von KeyKon
Lad einfach den Quellcode und öffne ihn mit ReadFile() und dann suchst du halt nach dem entsprechenden Wort RunFlash und schon hast du den Link zum download...

Verfasst: 04.01.2009 22:26
von DrNo
Sorry war weg, aber danke für die Antwort.
Wie öffne ich denk Quellcode und suche die Zeile RunFlash also dass ab (" gelesen wird wo der link anfängt?

DrNo

Verfasst: 04.01.2009 22:52
von KeyKon

Code: Alles auswählen

ReadFile(0,"C:\file.html") ;File öffnen
While Eof(0) = 0 ;Zeile für Zeile durchgehen
  string.s = ReadString(0) ;Zeile lesen
  flashPos = FindString(string,"RunFlash(",0) ;Suchen
  If flashPos ;Wurde der Befehl in dieser Zeile gefunden?
    flashPos+10 ;RunFlash(" ist genau 10 Zeichen lang deshalb müssen wir das noch addieren
    flashLen = FindString(string,Chr(34),flashPos)-flashPos ;Jetzt suchen wir wann die " wieder zu gemacht werden
    Debug Mid(string,flashPos,flashLen) ;Ausgeben...
  EndIf
Wend
Hier ein einfacher Code

Verfasst: 05.01.2009 12:25
von D@nte
Und für die on-the-fly variante ohne download der html site nimmste GetGadgetItemText(#Gadget, #PB_Web_HtmlCode)

Wobei das ganze natürlich nur dann funktionieren wird wenn das flashgame mittels RunFlash direkt aufgerufen wird und nicht erst wie bei fast allen free flash games (u.a. auch bei y8.com) über nen eingebundenes JS-file geladen wird (bei y8.com z.B. per show_flash(#file, height, width))

Verfasst: 05.01.2009 21:55
von DrNo
Wow danke Leute ich hätte nicht gedacht dass das so einfach zu machen ist, ich hab mir hier schnell was zum testen zusammengeschrieben, bevor ichs in ein festes Programm verbaue:

Code: Alles auswählen

URL$ = InputRequester("Link des Flashspiels...", "Bitte geben sie den Link zu dem Flashspiel ein:", "")
InitNetwork()
If ReceiveHTTPFile(URL$, "C:\temp.html")
  Else
   MessageRequester("Fehler", "Es ist ein Fehler aufgetreten.")
   End
EndIf
ReadFile(0,"C:\temp.html") 
While Eof(0) = 0 
  string.s = ReadString(0) 
  flashPos = FindString(string,"http://media.y8.com/games/content/",0) 
  If flashPos 
    flashPos+34 
    flashLen = FindString(string,Chr(34),flashPos)-flashPos
    swffile$ = Mid(string,flashPos,flashLen) 
  EndIf 
Wend
save$ = SaveFileRequester("Flash-Spiel speichern in...", swffile$, "Shockwave Flash (*.swf)", 0)
CloseFile(0)
DeleteFile("C:\temp.html")
If ReceiveHTTPFile("http://media.y8.com/games/content/"+swffile$, save$)
   MessageRequester("Info", "Download erfolgreich!")
  Else
   MessageRequester("Fehler", "Es ist ein Fehler aufgetreten.")
EndIf
Mit dem Code kann man alle Games von www.y8.com runterladen, hab bisher noch keine Probleme festgestellt.

Probiert mal die hier, sind echt klasse spiele:

www.y8.com/games/Dad_n_Me
www.y8.com/games/The_Last_Stand_2

Noch eine Frage: Gibt es irgendwie die möglichkeit anzugeben, wie weit er mit dem download ist?

DrNo

Verfasst: 06.01.2009 00:52
von KeyKon
Meines Wissens nur beim "per Hand" downloaden...
Auf PureArea.net is da glaubich ein Bsp...

EDIT: Hier: Code
Is allerdings 4.02 muss also wahrscheinlich ein bisschen umgeformt werden...

Verfasst: 06.01.2009 15:06
von Fabio
Hi, find das ein lustiges ding :)
Meine Kids spielen auch hin und wieder Flashgames.
Allerdings auf 1001spiele.de.

Naja, ich habe es versucht den code zu erweitern, nicht schön, da
PB für mich immer noch ein Buch mit 7 Siegeln ist ;)
aber es erfüllt seinen zweck.

Ich habe den Pfad auf eine Temp ordner C:\temp\ umgeschrieben,
also darauf achten das dort auch der Ordner existiert.

Folgendes, jetzt einfach die Url der "zentrallen" seite eingeben,
dann werden alle games die dort in der Mitte mit den Pics stehen
gedownloadet.

Alledings muss ich sagen das bei enigen es nicht geht, werden 0byte dateien erstellt !??
Na egal, hier der Code:

Code: Alles auswählen




URL$ = InputRequester("Link des Flashspiels...", "Bitte geben sie den Link zu dem Flashspiel ein:", "")
InitNetwork()
If ReceiveHTTPFile(URL$, "C:\temp\temp.html")
  Else
   MessageRequester("Fehler", "Es ist ein Fehler aufgetreten.")
   End
EndIf
ReadFile(0,"C:\temp\temp.html")



 CreateFile(1, "C:\temp\games.txt")         ; wir erstellen eine neue Textdatei...
  



  
    CreateFile(2, "C:\temp\games_url.txt")         ; wir erstellen eine neue Textdatei...
  






While Eof(0) = 0
  string.s = ReadString(0)
  flashPos = FindString(string,"<div class="+Chr(34)+"thumb"+Chr(34)+"><a href="+Chr(34)+"/games/",0)
  
  If flashPos
  WriteStringN(1,string.s)
    flashPos+35
    flashLen = FindString(string,Chr(34),flashPos)-flashPos
    swffile$ = Mid(string,flashPos,flashLen)
    WriteStringN(1,swffile$)
    WriteStringN(2,"http://www.y8.com/games/"+swffile$)
  

  EndIf
Wend
;save$ = SaveFileRequester("Flash-Spiel speichern in...", swffile$, "Shockwave Flash (*.swf)", 0)
CloseFile(0)
CloseFile(1)
CloseFile(2)
DeleteFile("C:\temp\temp.html")
DeleteFile("C:\temp\games.txt")

;-----------------------------------------
ReadFile(1,"C:\temp\games_url.txt")
ReadFile(0,"C:\temp\temp.html")


  While Eof(1) = 0
      URL$ = ReadString(1) 
      If ReceiveHTTPFile(URL$, "C:\temp\temp.html")
          Else
           MessageRequester("Fehler", "Es ist ein Fehler aufgetreten.")
         End
      EndIf
      
ReadFile(0,"C:\temp\temp.html")
While Eof(0) = 0
  string.s = ReadString(0)
  flashPos = FindString(string,"http://media.y8.com/games/content/",0)
  If flashPos
    flashPos+34
    flashLen = FindString(string,Chr(34),flashPos)-flashPos
    swffile$ = Mid(string,flashPos,flashLen)
  EndIf
Wend
save$ = SaveFileRequester("Flash-Spiel speichern in...", swffile$, "Shockwave Flash (*.swf)", 0)
;save$ = "games\"+swffile$

CloseFile(0)

DeleteFile("C:\temp\temp.html")

If ReceiveHTTPFile("http://media.y8.com/games/content/"+swffile$, save$)
   MessageRequester("Info", "Download erfolgreich!")
  Else
   MessageRequester("Fehler", "Es ist ein Fehler aufgetreten.")
EndIf
  Wend
  
  CloseFile(1)

Verfasst: 06.01.2009 15:24
von Kaeru Gaman

Verfasst: 06.01.2009 20:39
von DrNo
lol! :mrgreen:

EDIT: Hääää1?
ich hau die Tastatur kaputt dann gibts bluescreen aber dann hau ich parmal auf den bildschirm und dann is wieder windows da!?

Ich verbau grad meienn code in ein festes programm und bau dann auch noch support für 1001games ein.