xmlrpc posting with Xpostulate
Apr. 6th, 2010 10:46 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Okay...I've started to hack up the xmlrpc functions.
First, I had to replace all "<" and ">" in html tags in a post with"<" and ">",
and then, I have basically just handwritten out a relevant xml file.
Which looks like this:
<?xml version="1.0"?><methodCall><methodName>LJ.XMLRPC.postevent</methodName><params><param><value><struct><member><name>username</name><value><string>tonytraductor</string></value></member><member><name>password</name><value><string>XXXXXXXX</string></value></member><member><name>subject</name><value><string>xmlrpc posting</string></value></member><member><name>lineendings</name><value><string>pc</string><value></member><member><name>year</name><value><int>2010</int></value></member><member><name>mon</name><value><int>04</int></value></member><member><name>day</name><value><int>06</int></value></member><member><name>hour</name><value><int>10</int></value></member><member><name>min</name><value><int>46</int></value></member><member><name>prop_current_location</name><value><string>127.0.0.1</string></value></member><member><name>propr_current_mood</name><value><string>focused</string></value></member><member><name>prop_taglist</name><value><string>xmlrpc, xpostulate, wordpress, livejournal, dreamwidth, insanejournal</string></value></member><member><name>prop_currentmusic</name><value><string>none</string></value></member><member><name>userjournal</name><value><string>which journal?</string></value></member><member><name>event</name><value><string>Okay...I've started to hack up the xmlrpc functions.
First, I had to replace all "<" and ">" in html tags in a post with "<" and ">",
and then, I have basically just handwritten out a relevant xml file.
</string></value></member></struct></value></param></params></methodCall>
What I haven't done is tried to send such a file to a server, yet...
I'm not sure if the posting method has to be different from a flat post, in terms of simply sending this file as the post data...
More work...
But, hey, I'm working on it!
First, I had to replace all "<" and ">" in html tags in a post with"<" and ">",
and then, I have basically just handwritten out a relevant xml file.
Which looks like this:
<?xml version="1.0"?><methodCall><methodName>LJ.XMLRPC.postevent</methodName><params><param><value><struct><member><name>username</name><value><string>tonytraductor</string></value></member><member><name>password</name><value><string>XXXXXXXX</string></value></member><member><name>subject</name><value><string>xmlrpc posting</string></value></member><member><name>lineendings</name><value><string>pc</string><value></member><member><name>year</name><value><int>2010</int></value></member><member><name>mon</name><value><int>04</int></value></member><member><name>day</name><value><int>06</int></value></member><member><name>hour</name><value><int>10</int></value></member><member><name>min</name><value><int>46</int></value></member><member><name>prop_current_location</name><value><string>127.0.0.1</string></value></member><member><name>propr_current_mood</name><value><string>focused</string></value></member><member><name>prop_taglist</name><value><string>xmlrpc, xpostulate, wordpress, livejournal, dreamwidth, insanejournal</string></value></member><member><name>prop_currentmusic</name><value><string>none</string></value></member><member><name>userjournal</name><value><string>which journal?</string></value></member><member><name>event</name><value><string>Okay...I've started to hack up the xmlrpc functions.
First, I had to replace all "<" and ">" in html tags in a post with "<" and ">",
and then, I have basically just handwritten out a relevant xml file.
</string></value></member></struct></value></param></params></methodCall>
What I haven't done is tried to send such a file to a server, yet...
I'm not sure if the posting method has to be different from a flat post, in terms of simply sending this file as the post data...
More work...
But, hey, I'm working on it!
Re: success, at last!
Date: 2010-04-10 02:17 am (UTC)################
# post to livejournal...
proc ljpost {} {
# changing html tags for insertion in xml
set content [.txt.txt get 1.0 end]
set escaped [string map {
"<" "<"
">" ">"
\" "\""
} $content]
.txt.txt delete 1.0 end
.txt.txt insert insert $escaped
# is it redundant that ptext and escaped from the above are the same?
# probably
set ptext [.txt.txt get 1.0 {end -1c}]
global mypost
set mypost "<?xml version=\"1.0\"?>
<methodCall><methodName>LJ.XMLRPC.postevent</methodName>
<params><param>
<value><struct>
<member><name>year</name><value><int>$::year</int></value></member>
<member><name>mon</name><value><int>$::mon</int></value></member>
<member><name>day</name><value><int>$::day</int></value></member>
<member><name>hour</name><value><int>$::hour</int></value></member>
<member><name>min</name><value><int>$::min</int></value></member>
<member><name>usejournal</name><value><string>$::usej</string></value></member>
<member><name>event</name><value><string>$ptext</string></value></member>
<member><name>username</name><value><string>$::ljname</string></value></member>
<member><name>password</name><value><string>$::ljpswd</string></value></member>
<member><name>subject</name><value><string>$::subject</string></value></member>
<member><name>lineendings</name><value><string>unix</string></value></member>
<member><name>security</name><value><string>$::priv</string></value></member>
<member><name>ver</name><value><int>1</int></value></member>
<member><name>props</name>
<value><struct>
<member><name>useragent</name><value><string>Xpostulate</string></value></member>
<member><name>current_location</name><value><string>$::loc</string></value></member>
<member><name>current_mood</name><value><string>$::mood</string></value></member>
<member><name>taglist</name><value><string>$::tags</string></value></member>
<member><name>current_music</name><value><string>$::tunes</string></value></member>
</struct></value></member>
</struct></value>
</param></params>
</methodCall>"
global plength
set plength [string length $mypost]
set dopost [http::geturl http://www.livejournal.com/interface/xmlrpc -query $::mypost -type "text/xml" ]
set ljmta [http::meta $dopost]
set ljstat [http::status $dopost]
set ljresponse [http::data $dopost]
# upvar #0 $dopost state
# puts $state(body)
toplevel .rsp
wm title .rsp "Post Status"
frame .rsp.btns
grid [tk::label .rsp.btns.lbl -text "Frank says: $ljstat\nPost length: $::plength"]
grid [tk::button .rsp.btns.view -text "View Journal" -command {
set ljv "http://$::usej.livejournal.com"
exec $::brow $ljv &
}]\
[tk::button .rsp.btns.ok -text "DONE" -command {destroy .rsp}]
frame .rsp.txt
text .rsp.txt.t -width 80 -height 20
.rsp.txt.t insert end $ljresponse
pack .rsp.btns -in .rsp -side top -fill x
pack .rsp.txt.t -in .rsp.txt -side top -fill x
pack .rsp.txt -in .rsp -side top -fill x
}
It seems to be working on LJ, IJ, and DW.
Iziblog apparently doesn't play with xmlrpc (but flatposting works fine there), and, I don't have a deadjournal to test that.
Now, I just have to look at the difference between lj.xmlrpc and wordpress, and I'll have wordpress posting working!
The google api for blogger can't be too far a stretch, either...