Wordpress is a web publishing platform, which allows you to add and edit content to your website. This can be done by visiting the administration interface, wp-admin. However, there is also an XML RPC programming interface that allows you to do the same from any programming language that supports this interface.
In this short article I will show how to add new posts to WordPress from Python. There are several libraries available that allow you to view and edit content, but they were all inappropriate for me. I wanted to be able to convert my old website into WordPress posts and have the published date set to the date I originally posted items on my old site. However, every library I tried either didn’t have the possibility to set the published date, or WordPress didn’t understand it.
Here’s the short piece of code that allowed me to add new posts to WordPress, without the use of any 3rd party library:
import datetime, xmlrpclib wp_url = "http://www.example.com/xmlrpc.php" wp_username = "someuser" wp_password = "secret" wp_blogid = "" status_draft = 0 status_published = 1 server = xmlrpclib.ServerProxy(wp_url) title = "Title with spaces" content = "Body with lots of content" date_created = xmlrpclib.DateTime(datetime.datetime.strptime("2009-10-20 21:08", "%Y-%m-%d %H:%M")) categories = ["somecategory"] tags = ["sometag", "othertag"] data = {'title': title, 'description': content, 'dateCreated': date_created, 'categories': categories, 'mt_keywords': tags} post_id = server.metaWeblog.newPost(wp_blogid, wp_username, wp_password, data, status_published)
Is there any python script for posting or receiving comments on a blog?
How to post comments using XML RPC?
I haven’t looked into that. I would imagine it being used as a spam tool, so perhaps it isn’t even possible by default in WordPress.
Thank you for posting this – was having bunches of trouble getting a custom date_created to be accepted
took your code and used it for date_created_gmt and got it working
thank you again
Thanks so much for this! It’s really useful because I’ve been trying to run scripts to schedule posts automatically.
It looks like you can’t create new categories on the fly just by supplying the array with new items. If you want to know what categories are already available for you to use, you can use this code (building off of the other code):
categories = server.metaWeblog.getCategories(wp_blogid, wp_username, wp_password)
for item in categories:
print item[‘description’]
(Remember to indent the print statement.)
Pingback: How can I autopost on the wordpress with python? | Thinking in python
Extremely helpful! Thanks!!!
Pingback: How can I autopost on the wordpress with python? | I love Python | Mostly on Python Programming
Pingback: Publishing to WordPress From Mercurial DVCS with XML-RPC - Mike Levin
Hello thank you for your post…How about updating an existing post?
I need code
Thank you so much for that great article. I were looking for a solution to generate automatic postings on a testing blog. I just tried your solution and it worked!!!!