Flash Files downloaden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Flash Files downloaden

Beitrag 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
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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...
(\/) (°,,,°) (\/)
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag 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
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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
(\/) (°,,,°) (\/)
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag 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))
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag 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
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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...
(\/) (°,,,°) (\/)
Fabio
Beiträge: 234
Registriert: 29.08.2004 14:47

Beitrag 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)
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag 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.
Antworten