kayduh
kayduh

Reputation: 318

wordpresslib attaching images to posts

looking at the example provided by wordpresslib, its very straight forward on how to upload images to the media library. However, the attachment of images looks like it was never finished. Has anyone successfully attached the images?

#!/usr/bin/env python

"""
    Small example script that publish post with JPEG image
"""

# import library
import wordpresslib

print 'Example of posting.'
print

url = raw_input('Wordpress URL (xmlrpc.php will be added):')
user = raw_input('Username:')
password = raw_input('Password:')

# prepare client object
wp = wordpresslib.WordPressClient(url+"xmlrpc.php", user, password)

# select blog id
wp.selectBlog(0)

# upload image for post
# imageSrc = wp.newMediaObject('python.jpg')

# FIXME if imageSrc:

# create post object
post = wordpresslib.WordPressPost()
post.title = 'Test post'
post.description = '''
Python is the best programming language in the earth !
No image BROKEN FIXME <img src="" />
'''
#post.categories = (wp.getCategoryIdFromName('Python'),)

# Add tags
post.tags = ["python", "snake"]

# do not publish post
idNewPost = wp.newPost(post, False)

print
print 'Posting successfull! (Post has not been published though)'

WordPressPost class:

class WordPressPost:
    """Represents post item
    """ 
    def __init__(self):
        self.id = 0
        self.title = ''
        self.date = None
        self.permaLink = ''
        self.description = ''
        self.textMore = ''
        self.excerpt = ''
        self.link = ''
        self.categories = []
        self.user = ''
        self.allowPings = False
        self.allowComments = False
        self.tags = []
        self.customFields = []

    def addCustomField(self, key, value):
        kv = {'key':key, 'value':value}
        self.customFields.append(kv)

Upvotes: 0

Views: 694

Answers (1)

kayduh
kayduh

Reputation: 318

Wordpress saves images as website.com/wp-content/uploads/YEAR/MONTH/FILENAME

Adding a simple image tag with the above format in to post.description display the image on the post.

where YEAR is the current year with a 4 digit format (ex. 2015)

and MONTH is the current month with a leading zero (ex. 01,02,... 12)

and FILENAME is the file name submitted via imageSrc = wp.newMediaObject('python.jpg')

Example file name: website.com/wp-content/uploads/2015/06/image.jpg

Here is how I posted my image:

import time
import wordpresslib
import Image
from datetime import datetime

time = datetime.now()

h = str(time.strftime('%H'))
m = str(time.strftime('%M'))
s = str(time.strftime('%S'))
mo = str(time.strftime('%m'))
yr = str(time.strftime('%Y'))

url = 'WORDPRESSURL.xmlrpc.php'
wp = wordpresslib.WordPressClient(url,'USERNAME','PASSWORD')
wp.selectBlog(0)
imageSrc = wp.newMediaObject('testimage'+h+m+s'.jpg') #Used this format so that if i post images with the same name its unlikely they will override eachother

img = 'http://WORDPRESSURL/wp-content/uploads/'+yr+'/'+mo+'/testimage'+h+m+s+'.jpg'

post=wordpresslib.WordPressPost()
post.title='title'
post.description='<img src="'+img+'"/>'
idPost=wp.newPost(post,true)

Upvotes: 2

Related Questions