KOSEN{BLOG}について

PythonでWordPressに記事を投稿してみよう

動画のまとめサイトとか作る際に記事の自体はワンパターンだし自動化したいって思いませんか?

それ、Pythonでできちゃうんですよ。

しかもかなり簡単です。

はじめに

動画のまとめサイトや記事の花形は基本おなじのサイトなど作りたいときに同じような作業を繰り返すのってなかなか面倒ですよね。

なのでPythonに簡単にやってもらいましょ!!

ワードプレス側でプラグインを入れることで可能になります。

では、詳しいやり方を見ていきましょう。

準備

wordpress側

以下のXML-RPC Modernizationというプラグインを入れましょう。

XML-RPC Modernization

wordpress側の設定はこのプラグインを有効にするだけで一応完了です。

ですが、自分はアカウントを分けたかったので新しくユーザーを作りました。

編集者にしている理由は動画まとめサイトの場合IframeをHTMLで使うのですが、これが編集者と管理者以外は更新しても消えるという仕様だったからです。

理由はセキュリティ上みたいです。

iframeを使わなくていい場合は投稿者で問題ないと思います。

Pythonの準備

まず環境構築ですが、以下の記事を参考にしてみてください。

Python環境構築-VScode-win10

環境構築出来たらコマンドプロンプトを開いて

pip install pythonwordpressxmlrpc

と打って「pythonwordpressxmlrpc」をインストールしてください。

これで準備完了です。

あとは、コードを自分ように書き換えて実行するだけです。

サンプルコード

import os
import datetime

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods import media
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo

# your account ID and Password, your URL
wp_url = "your URL/xmlrpc.php"
wp_id = "ID"
wp_pass = "Password"
wp = Client(wp_url, wp_id, wp_pass)

# Picture upload
imgPath = "picture.png"
with open(imgPath, 'rb') as f:
    binary = f.read()
data = {
    "name": imgPath,
    "type": 'image/png',
    "overwrite": True,
    "bits": binary
}
media_id = wp.call(media.UploadFile(data))['id']

# 記事の設定
# Title
title = "タイトル"
# HTML
html = """

<iframe src="https://" width="100%" height="600" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe>

動画が再生されない場合はコチラをクリック↓↓↓

<a href="https://" target="_blank" rel="noreferrer noopener">https://</a>

"""

# publish(公開)かdraft(下書き)
status = "draft"
# Category
category1 = 'あ'
category2 = 'い'
# Tag
tag1 = 'た'
tag2 = 'ぐ'
slug = "slug"
# 投稿の記事設定
post = WordPressPost()
post.title = title
post.content = html
post.post_status = status
post.terms_names = {
    "category": [category1, category2],
    "post_tag": [tag1, tag2],
}
post.slug = slug
# アイキャッチ(先ほどアップロードした画像)
post.thumbnail = media_id
# 投稿の時間
post.date = datetime.datetime.now()

# 投稿
wp.call(NewPost(post))

このようになっています。

特に説明することもないかなと思っています。

wp_url = “your URL/xmlrpc.php”

ここの部分はワードプレスのURL(ドメイン?)/xmlrpc.phpです。

カテゴリーやタグは個数増やしてもできます。
上限は分からないです。

注意
サーバーに負荷をかけないように二秒くらいの間隔はあけて実行してくださいね

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です