Turcu Ciprian
Turcu Ciprian

Reputation: 81

How do you IXR_Base64 in python?

What I'm trying to do is upload a picture to wordpress using wp.uploadFile xmlrpc method. To do this, in PHP there is an example here: https://stackoverflow.com/a/8910496/1212382 I'm trying to do the same thing in python but I don't know how. Anyone any ideas?

Upvotes: 1

Views: 385

Answers (1)

Turcu Ciprian
Turcu Ciprian

Reputation: 81

ok, the answer lies in the xmlrpclib class. To send base64 bits to wordpress from python you need to use the xmlrpclib class like so:

base64bits = xmlrpclib.Binary(file_content)

then you just add the base64bits variable to the 'bits' parameter in your wp.uploadFile xmlrpc request.

to be a little more exact, here's the complete code in python of how this should be done:

import xmlrpclib
import urllib2
from datetime import date
import time

def get_url_content(url):
        try:
            content = urllib2.urlopen(url)
            return content.read()
        except:
            print 'error! NOOOOOO!!!'
file_url = 'http://the path to your picture'
extension = file_url.split(".")
leng = extension.__len__()
extension = extension[leng-1]
if (extension=='jpg'):
    xfileType = 'image/jpeg'
elif(extension=='png'):
    xfileType='image/png'
elif(extension=='bmp'):
    xfileType = 'image/bmp'

file = get_url_content(file_url)
file = xmlrpclib.Binary(file)
server = xmlrpclib.Server('http://website.com/xmlrpc.php')
filename = str(date.today())+str(time.strftime('%H:%M:%S'))
mediarray = {'name':filename+'.'+extension, 
             'type':xfileType, 
             'bits':file, 
             'overwrite':'false'}
xarr = ['1', 'USERHERE', 'PASSWORDHERE', mediarray]
result = server.wp.uploadFile(xarr)
print result

Upvotes: 2

Related Questions