Как я могу добавить миниатюру к сообщению 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 имеет документы для всего этого.