2

wordpress ブログにコンテンツを投稿する必要がある Python のスクリプトを開発しようとしています。問題は、画像を投稿のサムネイルとして設定する必要があり、その方法がわかりません。

これは、何か (サムネイルなし) を 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)

Web で検索すると、wordpress にコンテンツを公開するための別のライブラリが見つかり、このサンプル コードを試してみましたが、うまくいきませんでした。

¿サムネイルを受け入れるWordpressとやり取りするための別のPythonのライブラリを知っていますか?

ありがとうございました :)

編集

さて、コードは画像をワードプレスライブラリにアップロードしますが、投稿のサムネイルとして設定していません。

これはコードです:

#!/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)
4

1 に答える 1

2

xmlrpc インターフェイスで wp.* 呼び出しを使用して、メタウェブログよりも多くの機能を実行する WP 固有の機能にアクセスできます。

まず、server.wp.uploadFileまたはserver.wp.getMediaLibraryサムネイルをアップロードするか、既存のサムネイルを見つけてその ID を取得します。次に、この ID をcontent["post_thumbnail"]パラメータで使用してserver.wp.newPost.

WP API には、これらすべてのドキュメントがあります。

于 2012-10-11T15:43:06.607 に答える