Http Get

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo, wollte fragen ob man irgendwie informationen von einer webseite bekommen kann?

    Es ist keine api vorhanden, aber vielleicht kann man ja die webseite untersuchen, den string finden und ihm in game maker suchen lassen???
  • Soetwas mache ich immer mit meiner Funktion search:

    GML-Quellcode

    1. ///search(str,strFrom,strTo)
    2. /*
    3. str = In welchem Text gesucht werden soll
    4. strFrom = Von
    5. strTo = Bis
    6. */
    7. argument0 = string(argument0);
    8. argument1 = string(argument1);
    9. argument2 = string(argument2);
    10. var a,b;
    11. a = 1;
    12. while(true){
    13. if(a>string_length(argument0)-string_length(argument1))
    14. return "";
    15. if(string_copy(argument0,a,string_length(argument1))==argument1)
    16. break;
    17. a += 1;
    18. }
    19. a += string_length(argument1);
    20. b = a+1;
    21. while(true){
    22. if(b>string_length(argument0)-string_length(argument2))
    23. return "";
    24. if(string_copy(argument0,b,string_length(argument2))==argument2)
    25. return string_copy(argument0,a,b-a);
    26. b += 1;
    27. }
    Alles anzeigen

    Pack das in einem Skript namens search.
    Damit kannst du sowas machen:

    GML-Quellcode

    1. ​search("Hallo>Welt<Bla",">","<"); //Ausgabe: "Welt"


    Wenn du dann auf die Seite, die du filtern möchtest mit einem Browser aufrufst, kannst du dann den Seitenquellcode anschauen. Hier empfiehlt es sich, wenn du einen Rechtsklick auf das gewünschte Element machst und dann auf die Option, die so ähnlich heißt wie Element Untersuchen. In Chrome öffnet sich rechts ein Fenster, in dem du den Quellcode an der Stelle sehen kannst, wo das Element ist.
    Jetzt kannst du sehen wie die Tags dazu haben. Den String vom Request kannst du im ersten arg tun. Im zweiten dann den tag Start und dann im dritten das Tag Ende. Du musst hier aber aufpassen, Starttag nicht vorher irgendwann kommt, da der sonst vorher genommen würde, sonst musst du schauen, wie du diesen Tag "einzigartig" machst.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ahm, Husi, es gibt eine string_pos Funktion.

    GML-Quellcode

    1. var a, len, tmp;
    2. a = string_pos(argument1, argument0)
    3. len = string_length(a)
    4. if (a and a + len < string_length(argument0))
    5. {
    6. // Um zu vermeiden, dass argument2 vor argument1 kommt
    7. tmp = string_copy(argument0, a + len, string_length(argument0) - len)
    8. // Ich gehe mal davon aus, dass bei einer Länge von 0 ein leerer String zurückgegeben wird
    9. return string_copy(argument0, a + len, string_pos(argument2, tmp))
    10. }
    11. return ""
    Alles anzeigen


    Habs jetzt nicht getestet, könnte also ein (paar) off-by-one Fehler enthalten.
  • @-$Marvin$- Ja so ähnlich hatte ich es eben noch, nur habe ich mir gedacht, ich mache das ganze etwas performanter ;)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ach mist das habe ich übersehen ^^
    Werde ich mich später nochmal dran setzen und das noch performanter machen :D
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Auf einer Website wird im Normalfall eine Information in Form einer .json-Datei gespeichert. Diese kann der Game Maker ohne Probleme bekommen und speichert diese in einer ds_map oder ds_list ab.

    Die Datei muss nicht zwingend eine .json-Endung haben, es reicht auch eine .txt -Datei, welche den gleichen Aufbau hat.
    Z.B:

    Quellcode

    1. {
    2. "text1": "Hallo, ich bin ein Text",
    3. "text2": "Ich bin Text 2",
    4. "array":
    5. [
    6. "ich bin an Stelle 0 des Arrays", "ich bin an Stelle 1 des Arrays"
    7. ]
    8. }


    Damit der GM die Information benutzen kann, muss man das noch decodieren, GM macht das für dich mit einer Funktion.


    Am besten schaust du dir mal dieses Links an, die haben mir auch geholfen:
    YouTube Tutorial
    GM Referenz http_get
    GM Referenz json_decode
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • Husi012 schrieb:

    Soetwas mache ich immer mit meiner Funktion search:

    GML-Quellcode

    1. ///search(str,strFrom,strTo)
    2. /*
    3. str = In welchem Text gesucht werden soll
    4. strFrom = Von
    5. strTo = Bis
    6. */
    7. argument0 = string(argument0);
    8. argument1 = string(argument1);
    9. argument2 = string(argument2);
    10. var a,b;
    11. a = 1;
    12. while(true){
    13. if(a>string_length(argument0)-string_length(argument1))
    14. return "";
    15. if(string_copy(argument0,a,string_length(argument1))==argument1)
    16. break;
    17. a += 1;
    18. }
    19. a += string_length(argument1);
    20. b = a+1;
    21. while(true){
    22. if(b>string_length(argument0)-string_length(argument2))
    23. return "";
    24. if(string_copy(argument0,b,string_length(argument2))==argument2)
    25. return string_copy(argument0,a,b-a);
    26. b += 1;
    27. }
    Alles anzeigen

    Pack das in einem Skript namens search.
    Damit kannst du sowas machen:

    GML-Quellcode

    1. ​search("Hallo>Welt<Bla",">","<"); //Ausgabe: "Welt"


    Wenn du dann auf die Seite, die du filtern möchtest mit einem Browser aufrufst, kannst du dann den Seitenquellcode anschauen. Hier empfiehlt es sich, wenn du einen Rechtsklick auf das gewünschte Element machst und dann auf die Option, die so ähnlich heißt wie Element Untersuchen. In Chrome öffnet sich rechts ein Fenster, in dem du den Quellcode an der Stelle sehen kannst, wo das Element ist.
    Jetzt kannst du sehen wie die Tags dazu haben. Den String vom Request kannst du im ersten arg tun. Im zweiten dann den tag Start und dann im dritten das Tag Ende. Du musst hier aber aufpassen, Starttag nicht vorher irgendwann kommt, da der sonst vorher genommen würde, sonst musst du schauen, wie du diesen Tag "einzigartig" machst.









    Naja aber erstmal muss ich doch die infos haben? erstmal http_get("wieistmeineip.de") zb. und dann ???
  • Bei GM läuft das ganze asynchronous.
    Das bedeutet, dass der Download im Hintergrund läuft.
    http_get gibt eine Id zurück, die du in einer Variable speichern solltest.

    GML-Quellcode

    1. get = http_get("url");

    Jetzt gehst du in das Asynchronous Event Http. Dieses ist wie ein Alarm und wird aufgerufen, wenn Daten gekommen sind. Es kann aber sein, dass noch nicht alles heruntergeladen ist. Wie man das abfragt und die Seite dann zurück bekommt geht wird in der GM Hilfe beschrieben. Davon mal der Code:

    GML-Quellcode

    1. ​if ds_map_find_value(async_load, "id") == get
    2. {
    3. if ds_map_find_value(async_load, "status") == 0
    4. {
    5. r_str = ds_map_find_value(async_load, "result");
    6. }
    7. else
    8. {
    9. r_str = "null";
    10. }
    11. }
    Alles anzeigen

    es wurde die variable r_str erstellt und enthält "null" wenn die Daten noch nicht alle angekommen sind und sonst den Wert der letzendlich im Html Code der Seite den du haben willst.

    Klugscheißen: HyperTextMarkupLanguage (was ist das wohl? :D)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe