今回の記事ではブログの記事を自動更新していきたいと思います。
エログなどに限らず動画のまとめサイトや普通の記事のブログでテンプレに値入れるだけのような記事だと
「更新めんどくさいし自動化出来たらなあ」
と思いませんか?
その悩みPython使って解決しましょう。
PythonであればWEBからスクレイピングで情報をとってきて記事を更新!なんてこともできちゃいます!
準備するもの
準備も特に難しいことはないので安心してください。
Python側での設定とWordPress側での設定と分けて簡単に解説していきます。
Python側
Pythonの実行環境
以下の記事を参考にしてください。
環境構築が終わったらコマンドプロンプトを開いて
「pip install python-wordpress-xmlrpc」
と打って「python-wordpress-xmlrpc」をインストールしてください。
Python側の設定は以上です。
WordPress側
WordPress側でプラグインを入れることで可能になる。
以下のXML-RPC Modernizationというプラグインを入れましょう。
これです。ワードプレスで新規プラグインで検索しても出てきます。
wordpress側の設定はこのプラグインを有効にするだけで一応完了です。
iframeを記事に埋め込みたい方へ
動画の埋め込みとかツイートの埋め込みとかには「iframe」というのが使われています。
このiframeを記事に入れたいときに一つ注意が必要です。
HTML内に「Iframe」があっても編集者と管理者以外の記事は更新しても消えるという仕様になっていることです。
詳しくはないですけどiframeがあると何たららしくてセキュリティ上投稿者とかの低い権限の人は記事にできないっぽいです。
iframeを使わなくていい記事の場合は投稿者で問題ないと思います。
自分は、Botと書いた記事を区別したかったので新しくユーザーを作成してそのアカウントで投稿してました!
これで準備完了です。
あとは、コードを自分の情報に書き換えて実行するだけです。
サンプルコード
コードは以下のようになっています。
書き換える部分
- wp_url
「your URL」のところにあなたのサイトのURLをいれましょう。
このサイトだと「https://eroplog.com」になります。 - wp_id
WordPressへのログインID - wp_pass
ログインパスワード - imgPath
アイキャッチにしたい画像のpath - title
記事のタイトル - html
記事のコンテンツのHTML - status
下書きか公開か - category
カテゴリーです。複数設定可 - tag
タグです。複数設定可 - slag
スラッグです。ページのURLですね。
このページだと「wordpress-python-post」になります。
import datetime
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods import media
from wordpress_xmlrpc.methods.posts import NewPost
# 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 = 'カテゴリー1'
category2 = 'カテゴリー2'
# Tag
tag1 = 'タグ1'
tag2 = 'タグ2'
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))
注意事項
サーバーへのアクセスをしすぎると負荷が大きくなってしまうので間隔はなるべくあけましょう
自分は2秒くらいの間隔でやってたらスパム認定されちゃったことがあります。
10秒とか開けたがいいですね
開けれるなら開けたほうが安心かも