Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Wetterkarten/Daten mit freebasic holen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 14.05.2011, 09:00    Titel: Wetterkarten/Daten mit freebasic holen Antworten mit Zitat

Hallo, wie kann man eigentlich hier die Bilder und Daten von der Wettervorhersage über freebasic abfragen und darstellen:

http://www.wetter-board.de/index.php?page=Radar

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 14.05.2011, 09:50    Titel: Antworten mit Zitat

Es ist schon möglich. Dafür kannst du TSNE verwenden. Allerdings ist das nicht so einfach da du zusätzlich die Rückgabe der Website parsen musst.

Jetzt kenn ich deinen Wissensstand nicht, allerdings würde ich mich als Anfänger eher zurückhalten, so ein Projekt anzugehen. Lieber schrittweise vorgehen, also erstmal Texte per TSNE herumschicken, dann etwas mit Strings spielen um dann zum Parser überzugehen.

Zum Schluss kann man das dann verbinden, allerdings könnte es dauern bis man als Anfänger so weit ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 14.05.2011, 16:11    Titel: Antworten mit Zitat

Das TSNE läuft schon bei mir.

Kann Texte austauschen (klient/server).

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 16.05.2011, 13:17    Titel: Antworten mit Zitat

Hm..., ich hab hier im Demo-Ordner von Freebasic etwas gefunden.
Damit kann man Text runterladen :
Code:

#include once "win/wininet.bi"

type ftp_ctx
   as HINTERNET hint, hconn
end type

Function ftp_open( byval ctx as ftp_ctx ptr, _
               byval ctrlname as string = "FTP Nameless Control", _
               byval accesstype as integer = INTERNET_OPEN_TYPE_DIRECT, _
               byval proxyname as string = "", _
               byval proxybypass as string = "" _
             ) as integer

   if( ctx->hint <> NULL ) then
      return TRUE
   end if
   
   ctx->hint = InternetOpen( ctrlname, accesstype, proxyname, proxybypass, 0 )
   if( ctx->hint = NULL ) then
      return FALSE
   end if
   
   function = TRUE   
end function

Function ftp_connect( byval ctx as ftp_ctx ptr, _
               ByVal servername as string, _
               ByVal serverport as integer = INTERNET_DEFAULT_FTP_PORT, _
               ByVal username as string = "anonymous", _
               ByVal useremail as string = "anonymous@anonymous", _
               ByVal ispassive as integer = FALSE _
               ) as integer
   

   if( ftp_open( ctx ) = FALSE ) then
      return FALSE
   end if
   
   ctx->hconn = InternetConnect( ctx->hint, _
               servername, serverport, _
               username, useremail, _
               INTERNET_SERVICE_FTP, _
               IIf( ispassive <> FALSE, INTERNET_FLAG_PASSIVE, 0 ), _
               NULL )
   
   if( ctx->hconn = NULL ) then
      InternetCloseHandle( ctx->hint )
      ctx->hint = NULL
      return FALSE
   end if
   
   function = TRUE
end function

Function ftp_close( byval ctx as ftp_ctx ptr ) as integer
             
   if( ctx->hconn <> NULL ) then
      InternetCloseHandle( ctx->hconn )
      ctx->hconn = NULL
   end if
   
   if( ctx->hint <> NULL ) then
      InternetCloseHandle( ctx->hint )
      ctx->hint = NULL
   end if
   
   function = TRUE
end function

function ftp_getfile( byval ctx as ftp_ctx ptr, _
               ByVal remotefile as string, _
               ByVal localfile as string, _
               ByVal mode as integer = FTP_TRANSFER_TYPE_BINARY _
               ) As integer
   
   if( ctx->hconn = NULL ) then
      return FALSE
   end if
   
   function = FtpGetFile( ctx->hconn, remotefile, localfile, FALSE, 0, mode, NULL )
end function

'' main
   dim as ftp_ctx ftp
   
   '' connect
   if( ftp_connect( @ftp, "ftp.gnu.org" ) = FALSE ) then
      print "ERROR: Calling ftp_connect()"
      end 1
   end if
   
   '' read file
   if( ftp_getfile( @ftp, "README", "gnu.org.readme.txt", FTP_TRANSFER_TYPE_ASCII ) = FALSE ) then
      print "ERROR: Calling ftp_getfile()"
      ftp_close( @ftp )
      end 1
   end if   
   
   '' exit
   ftp_close( @ftp )
   end 0


Wie muss man das jetzt ändern, das man diese Grafik runterladen kann:
http://www.wetterzentrale.de/pics/Rmgfs064.gif ?

Wer kann mir dabei Helfen?


Danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 16.05.2011, 15:33    Titel: Antworten mit Zitat

also ... eigentlich .. brauchst du nur folgende dinge hierfür:

1. http://www.freebasic-portal.de/projekte/tsne-11.html
hier lädst du die TSNE_V3.bi in den Include ordner

2. http://www.freebasic-portal.de/projekte/tsne-v2-extension-13.html
selbes spiel, jedoch mit TSNEX_V3.bi .. sie ist eine erweiterung zu TSNE

3. http://www.freebasic-portal.de/porticula/test-http-getbas-802.html
ein Beispiel um Datein via HTTP von einem Server zu laden, und in eine Datei zu speicher.

Der Aufruf erfolgt hier entweder via Kommandozeile:
Code:
test_http.exe http://www.wetterzentrale.de/pics/Rmgfs064.gif


oder du integrierst es nach deinen wünschen direkt ins app in die entsprechende Zeile.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 17.05.2011, 10:30    Titel: Antworten mit Zitat

hm..., wenn ich dieses eingebe steigt es aus:
http://www.wetter-board.de/index.php?page=Radar

Dabei ist es eine Seite, wo das Wetterradar aufgerufen werden kann.

Wie muss da die Eingabe für den korrekten Aufruf lauten?

Hier geht es:
http://www.wetter-board.de/

Es wird die:
index.html
ausgegeben.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 17.05.2011, 10:31    Titel: Antworten mit Zitat

Hm..., wenn ich dieses eingebe steigt es aus:
http://www.wetter-board.de/index.php?page=Radar

Dieses geht auch nicht:
http://www.wetter.com/community/wetternetzwerk/station/wettermeldungen/?uid=280

Dabei sind es normale Seiten zum Aufrufen.

Wie muss da die Eingabe für den korrekten Aufruf lauten?

Hier geht es:
http://www.wetter-board.de/

Es wird die:
index.html
ausgegeben.

Dieses ist das Programm:
Code:

'##############################################################################################################
'HTTP_Get TEST-CLIENT für TSNE_V3 und TSNEX_V3
'##############################################################################################################



'##############################################################################################################
#include once "TSNEX_V3.bi"             'Wir binden die TSNE-X Version 3 ein. Sie beinhaltet bereits die TSNE_V3



'##############################################################################################################
'Ein Callback (Das ist Optional), kann den aktuellen fortschritt anzeigen. Dabei wird die Maximalgrösse sowie
'die bereits heruntergeladene Datengrösse angezeigt.
Sub ProgressCallback(V_Max as UInteger, V_Value as UInteger)
locate , 1                              'Wir positionieren unseren Cursor an den Anfang der Zeile
Print Str(V_Max); " / "; Str(V_Value);  'Und schreiben odrt (ohen Zeilenumbruch) die aktuellen Werte hin.
End Sub



'##############################################################################################################
'Die URL Definieren. Sie wird per Commandline übergeben und muss folgendermassen aufgebaut sein:
'http://[<benutzername>[:<Passwort>]@]<Hostname>.<Domain>/[<verzeichniss>]/[<Dateiname>][.<Dateierweiterung>]
'Als beispiel kann man "Http://www.google.de/" oder "Http://www.google.de/index.hml" nutzen
Dim XURL as String = Command()


'Wir declarieren noch (ist optional) eine Variable, welche den HTTP-Statuscode aufnehmen wird.
'Damit können wir überprüfen, ob die abfrage erfolgreich war. Liefert sie einen Wert von 200 zurück, dann
'teilt uns der HTTP-Server dadurch mit, das alles OK war, und er die angeforderten Daten überträgt.
Dim XReturn as UShort


'Hier rufen wir die Get Funktion für HTTP auf.
'Dabei übergeben wir der Funktion eine Komplette URL, welche bereits Host / Port / User und Passwort enthält.
'Alternativ können auch alle Angaben direkt der Funktion übergeben werden, falls keine URL verwendet werden soll.
'Zusätzlich KANN (muss NICHT) ein Callback angegeben werden. Dieses Informiert uns über den aktuellen Fortschritt.
'
'Wird kein Zielverzeichniss angegeben, wird die Datei automatisch in das Selbe verzeichniss geschrieben.
'Ist eine Datei mit dem selben Namen schon vorhanden, erfolgt eine Fehlermeldung. Die Datei muss folglich zuvor
'von hand gelöscht werden, damit die Funktion den Download aufnehmen kann.
'Die Datei kann mit "Kill" von hand gelöscht werden.
Dim RV as Integer = TSNEX_HTTP_Get(XURL, , , , , , XReturn, , , , @ProgressCallback)
Print ""                                    'Da wir ein Callback nutzen, das beim Print keine zeilenumbrüche macht, machen wir jetzt einen
If RV <> TSNEX_Const_NoError Then         'Prüfen, ob die Abfrage erfolgreich war. Wenn nicht
    Print TSNEX_GetGURUCode(RV)             'dann geben wir den Fehlercode zurück
    End -1                                  'Und beenden das Programm
End If

Print "HTTP_Status_Code: "; XReturn         'Zu guter letzt noch den HTTP_Status_Code ausgeben.
                                            '200 = Alles OK
                                            '404 = Datei wurde nicht gefunden
                                            '... = Siehe: HTTP://de.WikiPedia.org/wiki/HTTP
                                            '      bzw.   HTTP://de.WikiPedia.org/wiki/HTTP#HTTP-Statuscodes



End 0                                       'Zum schluss das Programm sauber beenden


Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 17.05.2011, 10:45    Titel: Antworten mit Zitat

Lag an nem Fehler in TSNEX_V3.

Die neue version kannst du hier herunterladen: http://www.freebasic-portal.de/porticula/tsnexv3-bi-1260.html


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 17.05.2011, 10:58    Titel: Antworten mit Zitat

Jup, danke.
Jetzt kann ich alles runterladen, auch die Bilder und Gif-Animationen.

Wenn man zb dieses Aufruft, wird eine Gif runtergeladen mit der Wolkenanimation vom neuesten Stand:

http-download.exe http://www.zdf.de/CMO/frontend/subsystem_we/WeShowPicture/0,6008,161,00.gif

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 17.05.2011, 12:25    Titel: Antworten mit Zitat

Jetzt möchte ich ein Verzeichnis auflisten um eine bestimmte Grafik zu laden.

Wie listet man?

Danke.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 17.05.2011, 12:25    Titel: Antworten mit Zitat

was für ein verzeichniss?

lokal?
HTTP?
FTP?


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 17.05.2011, 13:38    Titel: Antworten mit Zitat

So rufe ich ein Bild auf:
http://www.wetterzentrale.de/pics/Rmgfs064.gif

Aber in diesem Ordner befinden sich ca 15 Bilder:
http://www.wetterzentrale.de/pics/

Die möchte ich auflisten.

Danke.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 17.05.2011, 13:43    Titel: Antworten mit Zitat

Das funktioniert nicht, wenn der Server-Betreibe dies nicht zulässt.
Und, das tut er nicht, wie man anhand der meldung "403 Forbidden" beim Aufruf der Webseite "http://www.wetterzentrale.de/pics/" sehen kann.

Dir bleibt also nichts weiter übrig, als entweder den Quellcode zu Parsen, auf denen sich die Adressen der Einzelbilder befinden, oder du gehst eifnach alle bildnummern von 1 bis xx durch udn rufst die adresse auf dem server auf.

letzteres ist übrigens nicht zu empfehlen, da grössere Serverbetreiber regelmässig ihre logs durchforsten, udn dann auf solche aufrufe aufmerksam werden. dann stellen sie ihren code um, und dann musst du doch wieder den Quellcode parsen. Daher kannst du das auch gleich machen. Auserdem köntne es auch sein, das sie dann den code so umbauen, das ein Parsen ungemein schwer wird, was dir die arbeit ernorm erschwert.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 17.05.2011, 13:45    Titel: Antworten mit Zitat

Die HTTP-Anfrage nach einem Directory-Listing läuft über dein Programm im Prinzip genauso wie über den Browser - wenn die Seite ein Listing nicht erlaubt (danach sieht es hier aus), dann gibt sie über HTTP auch kein Listing zurück. Es sei denn, es gibt eine extra Seite, welche die Liste aller Bilder enthält; dann müsstest du diese auslesen.

edit: TPM war ein bisschen schneller als ich. lächeln
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 17.05.2011, 17:01    Titel: Antworten mit Zitat

Jup, danke.

Habe jetzt herausgefunden das die Bilder ein Namenschema haben welches sich nicht ändert.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz