Wordpress API

  • Hallo,
    ich wollte euch um hilfe beten, da ich ein totaler Anfänger bin. Ich möchte einfach nur ein programm schreiben mit dem ich aus einem Edit feld und mehreren Inputfeldern ein Beitrag posten kann.

    Nun bitte ich euch um euere hilfe :)

  • Wenn ich mich grade nicht vertue, einfach alles in inputfelder (also mit GUICtrlCreateInput) einfügen, da kannst du ja so viel nehmen wie du möchtest. das dann per GUICtrlRead auslesen und dann in die EditBox eintragen. In meiner Pause kann ich kurz ein Beispiel schreiben, also so gegen neun Uhr. Ansonsten hier mal das was du alle brauchst:

    http://www.autoit.de/dokumentation_aktuell/functions/GUICtrlCreateEdit.htm
    http://www.autoit.de/dokumentation_…CreateInput.htm
    http://www.autoit.de/dokumentation_…GUICtrlRead.htm

    Zitat

    "Some people feel the rain, others just get wet." - Bob Marley

    Einmal editiert, zuletzt von NightmarePhoenix (13. Dezember 2013 um 08:19)

  • Um ehrlich zu sein, ich weiß nichtmal was eine API ist... Hab ja eigentlich sehr wenig mit PC's zu tun gehabt, außer zocken. Erst seit ich mit AutoIt zu tun habe jetzt mehr, aber halt auch noch nicht sooo viel. Aber bei der Fragenstellung wollte ich auch mal wenigsten versuchen zu helfen :D

    Zitat

    "Some people feel the rain, others just get wet." - Bob Marley

  • Ok, danke mit der erklärung :) ich blick da grade noch nicht so durch, werd es mit aber mal anschauen wenn ich wacher bin, dann versteh ich es wahrscheinlich :P

    //Edit: Ok, nochmal durchgelesen, ich denke ich habs jetzt doch verstanden!

    Zitat

    "Some people feel the rain, others just get wet." - Bob Marley

  • Sooo, hab jetzt mal was vorbereitet mit ein paar Beispielen, hoffe es hilft dir :)


    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    $GUI = GUICreate ( "", 500, 500) ; erstellt dein Fenster
    $In1 = GUICtrlCreateInput ("Überschrift", 5, 5, 220, 25) ; erstellt ein Input-Feld
    $In2 = GUICtrlCreateInput ("Text1.", 227.5, 5, 220, 25)
    $In3 = GUICtrlCreateInput ("Blub, hallo, Test, Text2:/\?12345!§$%", 5, 30, 220, 25)
    $In4 = GUICtrlCreateInput ("Ohne Read", 227.5, 30, 220, 25) ; wird später nicht per "GUICtrlRead" übersetzt, um zu zeigen was passiert.
    $Edit = GUICtrlCreateEdit ("Hier kommt der Test hin!", 5, 60, 490, 435, $ES_READONLY) ; erstellt ein Edit-Feld
    $Send = GUICtrlCreateButton ( "Send", 450, 5, 50, 50) ; erstellt einen Knopf
    GUISetState ()

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

    ; Eine While-Schleife die deine GUI abfragt
    While 1
    $msg = GUIGetMsg () ; "liest" was die GUI tut
    Switch $msg ; Empfange $msg:

    Case $Send ; wenn der Knopf ($Send) gedrückt wird, dann
    _Edit () ; wird die Funktion "_Edit ()" aufgerufen

    Case $GUI_EVENT_CLOSE ; wenn du auf schließen klickst
    Exit ; beende das Script

    EndSwitch ; beende die "Switch"-Auswahl
    WEnd ; beende die While-schleife

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

    Func _Edit () ; die Funktion die aufgerufen wurde
    $1 = GUICtrlRead ( $In1 ) ; liest dein Input-Feld (wird benötigt, ansonsten würde nichts sinnvolles rauskommen (siehe $In4))
    $2 = GUICtrlRead ( $In2 )
    $3 = GUICtrlRead ( $In3 )
    GUICtrlDelete ( $Edit ) ; löscht das Editfeld um es
    $Edit = GUICtrlCreateEdit ($1 & @CRLF & $2 & " Hier kann dann auch noch etwas eingefügt werden, das jedes mal gesendet wird! " & $3 & @CRLF & @CRLF & "$In4-Ausgabe: " & $In4, 5, 60, 490, 435, $ES_READONLY); hier wieder zu erstellen, mit neuem Inhalt (aus den Inputfeldern)
    EndFunc ; beendet die Funktion und ruft wieder die While-Schleife auf (einmalige Funktion)

    [/autoit]


    //Edit: hab jetzt noch das #include <EditConstants.au3> und das $ES_READONLY dran gehängt, damit man die EditBox nicht von Hand ändern kann, sondern nur durch den send-Button.

    Zitat

    "Some people feel the rain, others just get wet." - Bob Marley

    Einmal editiert, zuletzt von NightmarePhoenix (13. Dezember 2013 um 09:47)

  • Er möchte keinen Text aus Inputfeldern zusammensetzen und in eine Editbox eintragen, sondern aus einem eigenen Program heraus einen Beitrag in einen Wordpress Blog erstellen.

    Aufgabe 1 wäre demnach - Finde die passende API und dessen Dokumentation. Dafür benötigt man noch keine Programmierkenntnise ... also durchaus auch von einem Anfänger zu lösen.

  • Ich möchte einfach nur ein programm schreiben mit dem ich aus einem Edit feld und mehreren Inputfeldern ein Beitrag posten kann.

    Also so wie ich das verstehe, möchte er den Text schon aus mehreren Inputfeldern zusammenfügen. was er mit dem Editfeld wollte habe ich nicht verstanden und es so aufgefasst das er es da zusammenfügen will um es dann kopieren zu können.

    Zitat

    "Some people feel the rain, others just get wet." - Bob Marley

  • Er möchte [...] aus einem eigenen Program heraus einen Beitrag in einen Wordpress Blog erstellen.

    Aufgabe 1 wäre demnach - Finde die passende API und dessen Dokumentation. Dafür benötigt man noch keine Programmierkenntnise ... also durchaus auch von einem Anfänger zu lösen.

    So hab ich das auch verstanden :)

    Grüße Yaerox

    Grüne Hölle

  • Aber dann wäre mein Programm ja eigentlich garnicht so falsch oder? weil er muss es ja trotzdem irgendwo eintragen :P
    insofern müsste er es jetzt quasi nur noch schaffen einen zweiten Button einzufügen der dann den Inhalt aus der EditBox an den Blog sendet oder? Bzw den einen Button so verändern das es das Direkt macht.

    Zitat

    "Some people feel the rain, others just get wet." - Bob Marley

  • Ein Freund hat mir schon bischen geholfen und nun brauche ich hilfe bei der authenfizierung. ich habe kein plan wie ich das machen soll

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <Array.au3>

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

    Global $oWinHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    Func EasyPost($sAddr, $sPost)
    $oWinHTTP.Open("POST", $sAddr, False)
    $oWinHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 4.0.20506)")
    $oWinHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oWinHTTP.Send($sPost)
    Return $oWinHTTP.ResponseText
    EndFunc ;==>EasyPost

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

    Func EasyGet($sAddr, $sPost)
    $oWinHTTP.Open("GET", $sAddr, False)
    $oWinHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 4.0.20506)")
    $oWinHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oWinHTTP.Send("")
    Return $oWinHTTP.ResponseText
    EndFunc ;==>EasyPost

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

    Func _URLEncode($toEncode, $encodeType = 0)
    Local $strHex = "", $iDec
    Local $aryChar = StringSplit($toEncode, "")
    If $encodeType = 1 Then;;Encode EVERYTHING
    For $i = 1 To $aryChar[0]
    $strHex = $strHex & "%" & Hex(Asc($aryChar[$i]), 2)
    Next
    Return $strHex
    ElseIf $encodeType = 0 Then;;Practical Encoding
    For $i = 1 To $aryChar[0]
    $iDec = Asc($aryChar[$i])
    If $iDec <= 32 Or $iDec = 37 Then
    $strHex = $strHex & "%" & Hex($iDec, 2)
    Else
    $strHex = $strHex & $aryChar[$i]
    EndIf
    Next
    Return $strHex
    ElseIf $encodeType = 2 Then;;RFC 1738 Encoding
    For $i = 1 To $aryChar[0]
    If Not StringInStr("$-_.+!*'(),;/?:@=&abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", $aryChar[$i]) Then
    $strHex = $strHex & "%" & Hex(Asc($aryChar[$i]), 2)
    Else
    $strHex = $strHex & $aryChar[$i]
    EndIf
    Next
    Return $strHex
    EndIf
    EndFunc ;==>_URLEncode

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

    Func _JSON_Decode($sString)
    Local $iIndex, $aVal, $sOldStr = $sString, $b

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

    $sString = StringStripCR(StringStripWS($sString, 7))
    If Not StringRegExp($sString, "(?i)^\{.+}$") Then Return SetError(1, 0, 0)
    Local $aArray[1][2], $iIndex = 0
    $sString = StringMid($sString, 2)

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

    Do
    $b = False

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

    $aVal = StringRegExp($sString, '^"([^"]+)"\s*:\s*(["{[]|[-+]?\d+(?:(?:\.\d+)?[eE][+-]\d+)?|true|false|null)', 2) ; Get value & next token
    If @error Then
    ConsoleWrite("!> StringRegExp Error getting next Value." & @CRLF)
    ConsoleWrite($sString & @CRLF)
    $sString = StringMid($sString, 2) ; maybe it works when the string is trimmed by 1 char from the left ?
    ContinueLoop
    EndIf

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

    $aArray[$iIndex][0] = $aVal[1] ; Key
    $sString = StringMid($sString, StringLen($aVal[0]))

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

    Switch $aVal[2] ; Value Type (Array, Object, String) ?
    Case '"' ; String
    ; Value -> Array subscript. Trim String after that.

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

    $aArray[$iIndex][1] = StringMid($sString, 2, StringInStr($sString, """", 1, 2) - 2)
    $sString = StringMid($sString, StringLen($aArray[$iIndex][1]) + 3)

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

    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

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

    Case '{' ; Object
    ; Recursive function call which will decode the object and return it.
    ; Object -> Array subscript. Trim String after that.

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

    $aArray[$iIndex][1] = _JSON_Decode($sString)
    $sString = StringMid($sString, @extended + 2)
    If StringLeft($sString, 1) = "," Then $sString = StringMid($sString, 2)

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

    $b = True
    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

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

    Case '[' ; Array
    ; Decode Array
    $sString = StringMid($sString, 2)
    Local $aRet[1], $iArIndex = 0 ; create new array which will contain the Json-Array.

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

    Do
    $sString = StringStripWS($sString, 3) ; Trim Leading & trailing spaces
    $aNextArrayVal = StringRegExp($sString, '^\s*(["{[]|\d+(?:(?:\.\d+)?[eE]\+\d+)?|true|false|null)', 2)
    Switch $aNextArrayVal[1]
    Case '"' ; String
    ; Value -> Array subscript. Trim String after that.
    $aRet[$iArIndex] = StringMid($sString, 2, StringInStr($sString, """", 1, 2) - 2)
    $sString = StringMid($sString, StringLen($aRet[$iArIndex]) + 3)

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

    Case "{" ; Object
    ; Recursive function call which will decode the object and return it.
    ; Object -> Array subscript. Trim String after that.
    $aRet[$iArIndex] = _JSON_Decode($sString)
    $sString = StringMid($sString, @extended + 2)

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

    Case "["
    MsgBox(0, "", "Array in Array. WTF is up with this JSON shit?")
    MsgBox(0, "", "This should not happen! Please post this!")
    Exit 0xDEADBEEF

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

    Case Else
    ConsoleWrite("Array Else (maybe buggy?)" & @CRLF)
    $aRet[$iArIndex] = $aNextArrayVal[1]
    EndSwitch

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

    ReDim $aRet[$iArIndex + 2]
    $iArIndex += 1

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

    $sString = StringStripWS($sString, 3) ; Leading & trailing
    If StringLeft($sString, 1) = "]" Then ExitLoop
    $sString = StringMid($sString, 2)
    Until False

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

    $sString = StringMid($sString, 2)
    ReDim $aRet[$iArIndex]
    $aArray[$iIndex][1] = $aRet

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

    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

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

    Case Else ; Number, bool
    ; Value (number (int/flaot), boolean, null) -> Array subscript. Trim String after that.
    $aArray[$iIndex][1] = $aVal[2]
    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1
    $sString = StringMid($sString, StringLen($aArray[$iIndex][1]) + 2)
    EndSwitch

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

    If StringLeft($sString, 1) = "}" Then
    StringMid($sString, 2)
    ExitLoop
    EndIf
    If Not $b Then $sString = StringMid($sString, 2)
    Until False

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

    ReDim $aArray[$iIndex][2]
    Return SetError(0, StringLen($sOldStr) - StringLen($sString), $aArray)
    EndFunc ;==>_JSON_Decode

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

    $apiUrl = "http://***********************/"
    $nonce = EasyPost($apiUrl, "json=core.get_nonce&controller=core&method=get_nonce")
    $nonce1 = StringReplace($nonce, '{"status":"ok","controller":"core","method":"get_nonce","nonce":"', "")
    $nonce2 = StringReplace($nonce1, '"}', "")

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

    $post = EasyPost($apiUrl, "json=posts.create_post&controller=posts&method=create_post&nonce=" & $nonce2 & "&status=publish&title=test123")

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

    ConsoleWrite($post)

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

    Exit

    [/autoit]

    Benutzt wird das Plugin: http://wordpress.org/plugins/json-api/other_notes/