【コード公開】Pythonで面倒な見出し設定などを自動化した。

おはようございます、けんぞうです。

Pythonによって、下書きのテキストからWordPressの見出し設定、下書き保存までを自動化しました。

▼この記事の内容
WordPressで見出し設定などを、Pythonでどのように自動化するのかが分かります。

では、さっそく見ていきます。

背景 : 見出し設定クソ面倒

さきに背景から説明しますと、WordPressの見出し設定がかなり面倒なんです。

僕は「SANGO」というテーマを使っているのですが、SANGOでは多種の見出しが用意されています。

しかし、これを選択するだけでは見出しとして検知されないので、

  • SANGOオリジナルの見出しを選択
  • 見出しとして再設定

という2箇所設定が必要で、大変手間だったわけです。

どうやって解決する?

 

上記の面倒くさい問題を、僕がどうやって解決したかを紹介していきます。

カスタム見出しのコードをみる。

 

たとえば、僕がよく使うオレンジ色の見出し2は以下のようなコードになっています。

<h2 class=”hh hh8″>どうやって解決する?</h2>

h2」タグで見出し2として設定し、「class=”hh hh8″」でオレンジ色にするよ〜と宣言している感じです。

下書きに規則をつくる。

 

最近は基本的にスマホで下書きを書いていて、以下の規則に従っています。

  • 「*」は見出し2
  • 「**」は見出し3

 

スマホで書いた文章を、「draft.txt」という名称でPythonと同じ場所に置き、このテキストファイルに処理をかけていきます。

Pythonで文字列置換処理。

イメージ

 

ここでの処理とは、

「*」を発見したら、その後ろの文字列を<h2 class=”hh hh8″></h2>で挟む

みたいな処理です。これを「**」→h3でも同様に行います。

この処理に該当するコードがこちらです。

if line.find('**') >= 0:
    line = line.replace(line,'<h3>' + line.strip('*').strip('\n') + '</h3>\n')
    f.write(line)
elif line.find('*') >=0:
    line = line.replace(line,'<h2 class="hh hh8">' + line.strip('*').strip('\n') + '</h2>\n')
    f.write(line)

置換した文字列を、WordPressで保存。

書き換えてくれたテキストファイルを、コピペでWordPressに持っていくのも面倒なので、自動化しました。

WordPressへログインし、HTMLの方に先ほどのテキストの中身を書き込むという処理までやってくれます。

driver = webdriver.Chrome(executable_path='ChromeDriverのPath')
driver.get("WORDPRESS_URL")

driver.find_element_by_id('user_login').send_keys('USERID')
driver.find_element_by_id('user_pass').send_keys('PASSWORD')
driver.find_element_by_id('wp-submit').click()

current_url = driver.current_url
driver.get(current_url.replace('index.php','post-new.php'))

f2 = open("draft.txt", "r")
lines2 = f2.readlines()

driver.find_element_by_id('content-html').click()
driver.find_element_by_id('content').send_keys(lines2)
driver.find_element_by_name('post_title').send_keys(title)
driver.find_element_by_id('save-post').click()
f2.close()

 

改善したいところ

 

現時点で改善したいところは、

「Googleドキュメントで書いた下書きを、テキストファイルにコピペする」

という手間をなくしたいという感じです。

Gmailでスマホから送信して、コマンドでGmailの読み込みができたらいいんですけど、Google APIとかの理解が浅く未達。

創造的なことに集中しよう。

ブログを書くと一言に言っても、

  • 見出し設定のような地味作業
  • 文章を考えるなどのクリエイティブな作業

と分けられます。

ブログを書く人は、前者を自動化して、後者に集中すべき、という考えでコーディングしました。

コード全文

 

from selenium import webdriver

ld = open('draft.txt')
lines = ld.readlines()
ld.close()

title = ''
f = open('draft.txt',"w")
for line in lines:

if line.find('**') >= 0:
line = line.replace(line,'<h3>' + line.strip('*').strip('\n') + '</h3>\n')
f.write(line)
elif line.find('*') >=0:
line = line.replace(line,'<h2 class="hh hh8">' + line.strip('*').strip('\n') + '</h2>\n')
f.write(line)

elif line.find('#')>=0:
title = line.strip('#')

else:
f.write(line)

f.close()
driver = webdriver.Chrome(executable_path='chromedriverのパス')
driver.get("WordpressログインURL")

driver.find_element_by_id('user_login').send_keys('ID')
driver.find_element_by_id('user_pass').send_keys('パスワード')
driver.find_element_by_id('wp-submit').click()

current_url = driver.current_url
driver.get(current_url.replace('index.php','post-new.php'))

f2 = open("draft.txt", "r")
lines2 = f2.readlines()

driver.find_element_by_id('content-html').click()
driver.find_element_by_id('content').send_keys(lines2)
driver.find_element_by_name('post_title').send_keys(title)
driver.find_element_by_id('save-post').click()
f2.close()

 

たなか
最後まで読んでくれてありがとね、気に入ったらシェアしてね!

コメントを残す

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