Как я могу добавить миниатюру к сообщению WordPress, используя библиотеку Python xmlrpclib?

Я пытаюсь разработать скрипт Python, который должен публиковать контент в WordPress блоге, проблема в том, что мне нужно установить изображение в качестве эскиза поста, и я понятия не имею, как это сделать.

Это пример кода для публикации чего-либо (без миниатюры) в WP:

import xmlrpclib

user = 'username'
passwd = 'password'
server = xmlrpclib.ServerProxy('http://vizible.wordpress.com/xmlrpc.php')

blog_id = 0
title = 'test title' 
content = 'test content, from python'

blog_content = { 'title' : title, 'description' : content }
categories = [{'categoryId' : 'programming', 'isPrimary' : 1}] 

post_id = int(server.metaWeblog.newPost(blog_id, user, passwd, blog_content,0))
server.mt.setPostCategories(post_id, user, passwd, categories) # not work
server.mt.publishPost(post_id, user, passwd)

Выполняя поиск в Интернете, я нашел другую библиотеку для публикации контента в WordPress и попробовал этот пример кода, но он не работал.

¿Знаете ли вы другую библиотеку Python для взаимодействия с Wordpress, которая принимает эскизы?

Спасибо:)

РЕДАКТИРОВАТЬ:

Хорошо, теперь код загружает изображение в мою библиотеку WordPress, но я не установил, как миниатюру поста.

Это код:

#!/usr/bin/env python

import xmlrpclib
import urllib2 as urllib

user = 'username'
passwd = 'pass'
server = xmlrpclib.ServerProxy('http://miweb.com/xmlrpc.php')
blog_id = 0

fileimg = urllib.urlopen('image_url')
fileimg = xmlrpclib.Binary(fileimg.read())

data = {'name':'mqdefault.jpg', 'type':'image/jpeg', 'bits':fileimg}

upload = server.wp.uploadFile(blog_id, user, passwd, data)

content = {'post_title':'title', 'post_content':'content', 'post_thumbnail':upload['id']}

post_id = server.wp.newPost(blog_id, user, passwd, content)

server.mt.publishPost(post_id, user, passwd)

Проблема в том, что даже когда content ['post_thumbnail'] и upload ['id'] совпадают, когда я публикую его в своем блоге Wordpress, он не показывает никаких миниатюр, но он загружается в галерею.

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: моя тема показала миниатюры в виде мета, поэтому мне пришлось добавить их в пост в качестве метаинформации. Это лучше для меня, потому что мне не нужно размещать миниатюру на моем сервере.

ЗАКЛЮЧИТЕЛЬНЫЙ КОД:

#!/usr/bin/env python

import xmlrpclib

user = 'username'
passwd = 'pass'
server = xmlrpclib.ServerProxy('http://miweb.com/xmlrpc.php')
blog_id = 0

content = {'post_title':'prova1', 'post_content':'prova text', 'post_status':'published', 'custom_fields': [{'value': 'thumbnail url', 'key': 'thumb'}]}

post_id = server.wp.newPost(blog_id, user, passwd, content)

server.mt.publishPost(post_id, user, passwd)

1 ответ

Решение

Вы можете использовать вызовы wp.* В интерфейсе xmlrpc для доступа к конкретным функциям WP, которые выполняют больше функций метавеблога.

Сначала вы позвоните server.wp.uploadFile или же server.wp.getMediaLibrary чтобы загрузить эскиз или найти существующий и получить его идентификатор. Затем используйте этот идентификатор в content["post_thumbnail"] параметр для server.wp.newPost,

WP API имеет документы для всего этого.

Другие вопросы по тегам