WIKI Seite automatisch befüllen

  • hi zusammen,

    ich würde gerne per auto it eine wiki seite automatisch mit inhalt befüllen. der benötigte inhalt liegt in einer textdatei vor.

    bisher löse ich das ganze so:
    1) auto it liest zeilenweise den inhalt der textdatei in die zwischenablage
    2) firefox mit der wik url wird aufgerufen: http://www.wikiseite.de/beispielseite?action=edit
    2) Editor fenster der wiki seite öffnet sich
    3) per SEND befehl wird der inhalt der zwischenablage eingefügt
    4) MOUSECLICK auf speichern sichert den inhalt

    ich würde das ganze gerne so lösen, das alles schön im hintergrund abläuft und man als nutzer gar nicht "bemerkt" das firefox mit der url geöffnet wird und dann der inhalt eingefügt wird. ist das irgendwie möglich?

    vielen dank für eure hilfe :)

  • Wenn du MozLab installiert hast, dann kannst du mit der FF.au3 Befehle an den FireFox senden - z.B. eine Suche bei einer bekannten Suchmaschine:

    Spoiler anzeigen
    [autoit]

    #region Includes
    #include <FF.au3>
    #endregion Includes
    $sSuche = "SuchText"

    [/autoit] [autoit][/autoit] [autoit]

    $Socket = _FFStart("http://www.google.de/", Default, 2)
    _FFSetValueByName($Socket, "q", $sSuche)
    _FFFormSubmit($Socket,"f","name")

    [/autoit]

    Das gleiche kannst du mit deinem Wiki-Eintrag machen.

    Um einfach herauszufinden wie das Textfeld heißt und um einfaches Script dafür zusammenzuklicken, kannst du den "FF- Page Analyzer" verwenden (siehe meine SIG)

    Grüße
    Stilgar

  • hi.

    danke für das beispiel, ich habe den code dementsprechend angepasst aber leider funktioniert es noch nicht wirklich:

    C
    #region Includes
    #include <FF.au3>
    #endregion Includes
    $sSuche = "Test"
    
    
    $Socket = _FFStart("http://www.wikiseite.de/wiki/seite?action=edit",default,2)
    $tmp = _FFGetValueByName($Socket, "editor-textarea")
    _FFSetValueByName($Socket, "savetext", $sSuche)
    _FFFormSubmit($Socket,"editor","id")

    hier der quelltext der seite, der markierte <textarea> bereich soll befüllt werden:

    [Blockierte Grafik: http://img157.imageshack.us/img157/4844/bildxx7.jpg]

    grüße

  • $tmp = _FFGetValueByName($Socket, "editor-textarea")
    wird wohl nicht gehen da das eine ID ist, also
    $tmp = _FFGetValueByID($Socket, "editor-textarea")

    Der Rest sieht so aus als ob funktionieren müßte.

    Was genau funktioniert nicht und was steht in der Console?
    Wie ist der Rest der Seite? Gibt es Frames?

    Einmal editiert, zuletzt von Stilgar (25. Juni 2008 um 11:22)

  • hallo
    für alle Freunde von IE

    Spoiler anzeigen
    [autoit]

    #include "IE.au3"
    $wikipfad = "http://wikiseite/mediawiki/"
    $benutzername = "bot"
    $passwort = "bot"
    $aufsicht = 1 ;1= an 0= aus

    ;Start
    $IE= _IECreate($aufsicht)
    _IELoadWait($IE)
    _IENavigate($IE,$wikipfad&"index.php?title=Spezial:Userlogout",1)
    _IENavigate($IE,$wikipfad&"index.php?title=Spezial:Userlogin",1)
    $o_form = _IEFormGetObjByName($IE, "userlogin")
    $o_login = _IEFormElementGetObjByName($o_form, "wpName")
    $o_password = _IEFormElementGetObjByName($o_form, "wpPassword")

    _IEFormElementSetValue($o_login, $benutzername)
    _IEFormElementSetValue($o_password, $passwort)
    _IEFormSubmit($o_form)
    _IELoadWait($IE)
    ;

    HIER kommt rein was zu machen ist

    ;Ende
    _IENavigate($IE,$wikipfad&"index.php?title=Spezial:Userlogout",1)
    _IEQuit($IE)

    func _WikiArtikelAusgabe($IE,$artikel)
    ;Auslesen
    _IENavigate($IE,$wikipfad&"index.php?title="&$artikel&"&action=edit",1)
    $o_form = _IEFormGetObjByName($IE, "editform")
    $o_box = _IEFormElementGetObjByName($o_form,"wpTextbox1")
    $artikel_inhalt = _IEFormElementGetValue($o_box)
    return $artikel_inhalt
    EndFunc

    func _WikiArtikelAendern($IE,$artikel,$neuerText)
    ;Bearbeiten und erstellen
    _IENavigate($IE,$wikipfad&"index.php?title="&$artikel&"&action=edit",1)
    $o_form = _IEFormGetObjByName($IE, "editform")
    $o_box = _IEFormElementGetObjByName($o_form,"wpTextbox1")
    $artikel_anders= _IEFormElementSetValue($o_box, $neuerText)
    _IEFormSubmit($o_form)
    _IELoadWait($IE)
    return $artikel_anders
    EndFunc

    [/autoit]
  • muh_kuh:
    Der IE macht es nicht immer einfacher und funktionsfähiger, wie die täglichen Fragen im englischen Forum zeigen - gibt nur zig mal längere Scripte :(

    @palkom:
    Kannst du mal den kompletten Quelltext der Seite posten?
    Hast du schon mal versucht die Elemente über den Index anzusteuern (Page Analyzer "Use Index")
    Welche Meldungen hast du in der Console?
    Was für eine FF-Version? (kann sein, daß ich was übersehen habe, in der V3 wurde die API geändert)

  • hi,

    ich hab den fehler entdeckt. die seite wird nicht gar nicht erst aufgerufen. der socket liefert eine -1 zurück. mit google und anderen seiten funktioniert das auslesen von eigenschafte, nur meine wiki seite wird nicht aufgerufen.

    woran könnte das liegen?

  • sorry ich hab deine frage total überlesen. der seitenaufruf sieht folgendermaßen aus:
    $Socket = _FFStart("http://wiki.beispiel.de/beispiel_wiki/wikiseite?action=edit",default,1)


    jetzt hab ich aber noch ein problem und zwar mit dieser zeile:
    _FFSetValueByName($Socket, $form, $text)

    die $text variable enthält den inhalt der textdatei die ich auslese, der obige aufruf schreibt den inhalt der variablen aber nicht in das formular. ersetze ich die variable funktioniert es einwandfrei und das formular wird befüllt
    _FFSetValueByName($Socket, $form, "dsfsfsfsfdsdfdfdfdf")


  • Danke für die Rückmeldung.
    Der Fehler ist in der URL-Prüfung ist in der neuen Version behoben. Ich hatte den Tiefstrich nicht berücksichtigt :whistling:

    Den Fehler bei _FFSetValueByName kann ich nicht nachvollziehen. Hier funktioniert jede Variante.

    Nur mal zum Test:

    [autoit]


    #include <FF.au3>
    $Socket = _FFStart("http://thorsten-willert.de/html/FF-test.html")
    $test = "text"
    _FFSetValueByName($Socket, "fname", $test)

    [/autoit]

    geht das?

    Was steht denn in der Console deines Editors?

  • die test variable nimmt er an, komischerweise hat es ja gestern noch mit der $text variable funktioniert, weiß gerade auch nicht, woran das liegen könnte.