筆記:Python 利用 xmlrpc-API 自動發布文章到 WordPress

筆記:Python 利用 xmlrpc-API 自動發布文章到 WordPress

Python 通過 xmlrpc 發布文章到 WordPress 的教程有很多,有詳細也有簡潔。但是,找到的教程或是通過方法博客提供的腳本也沒有解決個人想要的。經過一番谷歌以及摸索折騰,終于搞定了支持定義標簽別名和文章別名的發布腳本,做一個記錄分享。

首先,提供一篇參考教程:Python 使用 xmlrpc 自動發布文章到 WordPress 以及相關的模塊說明:Python-WordPress-xmlrpc 說明文檔

其次,需要安裝相關 Python 模塊
easy_install python-wordpress-xmlrpc 或者 pip install python-wordpress-xmlrpc
然后,定義自己需要的發布文章腳本。

支持自定義欄目字段的發布文章代碼


#coding:utf-8
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc.methods import taxonomies
from wordpress_xmlrpc import WordPressTerm
from wordpress_xmlrpc.compat import xmlrpc_client
from wordpress_xmlrpc.methods import media, posts
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
wp = Client('http://您的域名/xmlrpc.php', '后臺賬號', '后臺密碼')
post = WordPressPost()
post.title = '文章標題'
post.content = '文章內容'
post.post_status = 'publish' #文章狀態,不寫默認是草稿,private表示私密的,draft表示草稿,publish表示發布
post.terms_names = {
'post_tag': ['test', 'firstpost'], #文章所屬標簽,沒有則自動創建
'category': ['Introductions', 'Tests'] #文章所屬分類,沒有則自動創建
}
post.custom_fields = []   #自定義字段列表
post.custom_fields.append({  #添加一個自定義字段
'key': 'price',
'value': 3
})
post.custom_fields.append({ #添加第二個自定義字段
'key': 'ok',
'value': '天涯海角'
})
post.id = wp.call(posts.NewPost(post))

支持特色圖像縮略圖的發布文章代碼


#coding:utf-8
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc.methods import taxonomies
from wordpress_xmlrpc import WordPressTerm
from wordpress_xmlrpc.compat import xmlrpc_client
from wordpress_xmlrpc.methods import media, posts
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
wp = Client('http://您的域名/xmlrpc.php', '后臺賬號', '后臺密碼')
filename = './my.jpg' #上傳的圖片文件路徑
# prepare metadata
data = {
'name': 'picture.jpg',
'type': 'image/jpeg',  # mimetype
}
# read the binary file and let the XMLRPC library encode it into base64
with open(filename, 'rb') as img:
data['bits'] = xmlrpc_client.Binary(img.read())
response = wp.call(media.UploadFile(data))
# response == {
#       'id': 6,
#       'file': 'picture.jpg'
#       'url': 'http://www.example.com/wp-content/uploads/2012/04/16/picture.jpg',
#       'type': 'image/jpeg',
# }
attachment_id = response['id']
post = WordPressPost()
post.title = '文章標題'
post.content = '文章正文'
post.post_status = 'publish'  #文章狀態,不寫默認是草稿,private表示私密的,draft表示草稿,publish表示發布
post.terms_names = {
'post_tag': ['test', 'firstpost'], #文章所屬標簽,沒有則自動創建
'category': ['Introductions', 'Tests'] #文章所屬分類,沒有則自動創建
}
post.thumbnail = attachment_id #縮略圖的id
post.id = wp.call(posts.NewPost(post))

創建新的分類和標簽代碼


#coding:utf-8
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc import WordPressTerm
from wordpress_xmlrpc.methods import taxonomies
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
wp = Client('http://您的域名/xmlrpc.php', '后臺賬號', '后臺密碼')
#新建標簽
tag = WordPressTerm()
tag.taxonomy = 'post_tag'
tag.name = 'My New Tag12'#標簽名稱
tag.slug = 'bieming12'#標簽別名,可以忽略
tag.id = wp.call(taxonomies.NewTerm(tag))#返回的id
#新建分類
cat = WordPressTerm()
cat.taxonomy = 'category'
cat.name = 'cat1'#分類名稱
cat.slug = 'bieming2'#分類別名,可以忽略
cat.id = wp.call(taxonomies.NewTerm(cat))#新建分類返回的id
#新建子分類
parent_cat = client.call(taxonomies.GetTerm('category', 20))#20是父分類的id
child_cat = WordPressTerm()
child_cat.taxonomy = 'category'
child_cat.parent = parent_cat.id
child_cat.name = 'My Child Category'#分類名稱
child_cat.slug = 'beidongdui'#分類別名,可以忽略
child_cat.id = wp.call(taxonomies.NewTerm(child_cat))#新建分類返回的id

支持自定義標簽別名及文章別名代碼


from wordpress_xmlrpc import Client, WordPressPost, WordPressTerm
from wordpress_xmlrpc.methods import taxonomies
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
try:
  wp = Client('http://您的域名/xmlrpc.php', '后臺賬號', '后臺密碼')
  #新建標簽
  tag = WordPressTerm()
  tag.taxonomy = 'post_tag'
  tag.name = 'Python教程'#標簽名稱
  tag.slug = 'python-jiaocheng'#標簽別名,可以忽略
  tag.description = '' #標簽圖像描述,可以忽略
  tag.id = wp.call(taxonomies.NewTerm(tag))#返回的id
  print '標簽添加成功!'
except:
  print '標簽添加失敗!'
  pass
try:
  wp = Client('http://您的域名/xmlrpc.php', '后臺賬號', '后臺密碼')
  post = WordPressPost()
  post.title = 'Python 利用 xmlrpc-API 自動發布文章到 WordPress' #文章標題
  post.content = 'Python 利用 xmlrpc-API 自動發布文章到 WordPress' #文章內容
  post.slug = 'python-xmlrpc-wordpress' #文章別名,固定鏈接形式為文章標題時需要
  post.post_status = 'publish'
  post.terms_names = {
    'post_tag': ['Python教程'], #文章標簽
    'category': ['網絡技術'] #文章分類
  }
  wp.call(NewPost(post))
  print '文章發布成功!'
except:
  print '文章發布失敗!'
  pass

相關推薦

發表評論

微信掃一掃

微信掃一掃

微信掃一掃,分享到朋友圈

筆記:Python 利用 xmlrpc-API 自動發布文章到 WordPress
返回頂部

顯示

忘記密碼?

顯示

顯示

獲取驗證碼

Close
香港开奖直播开奖记录