iPython/jupyter notebook で書いた内容をそのままWordPressに投稿する方法

Jupyter Notebook を手っ取り早くWordPressに貼り付ける方法0

iPython / jupyter notebook で書いた内容をそのままWordPressに投稿ができたら便利ですよね。

プログラミング系のブログを書いていると実行できるか確認してWordPressにコピペして、プログラムの部分はタグで囲んできちんとプログラムっぽく表示されるようにして…
と、いろいろ手間が多いですよね。

それだけならまだしも、プログラムをブログに写して、投稿してから動くのかな?と思って動かしたら。「あれ…?動かない…?なんで?」ってなってjupyterに入れて動かして、修正して、ブログに貼り直す。という繰り返し…要領が悪いのもあって実に時間がもったいないと感じていました。

めんどくさいことは抜きにして、書いたプログラムをそのままWordPressに上げられたらどんなに便利だろうか…と思って探したらありました。

jupy2wp というプラグインを使うと jupyter notebook で書いた1つのファイルの全体をそのままWordPressに投稿できます。(正確には下書きをしてくれます。)
プログラムだけではなく、もちろん文章を書いたところも反映されるし、プログラムの実行結果、matlabで作成したグラフも勝手にアップロードしてくれます!
※画像はupload/直下に保存されます。

そんな便利な機能の入れ方をご紹介します。

WordPressに直接プログラムの投稿ができるjupy2wpの設定方法

まずは下記のコードを実行して jupy2wp と nbconvert をインストールします。

pip install git+https://github.com/Pybonacci/jupy2wp.git nbconvert==4.2.0

インストール、設定方法はこれだけです。簡単すぎて拍子抜けしてしまいますよね。

注意)nbconvert は新しいバージョンだとHTML5になった関係でエラーになるようです。かならずバージョン4.2.0をインストールしてください。最新版をインストールすると下記のようなエラーが出ます。

Traceback (most recent call last):
  File "/Users/trmt_8/.pyenv/versions/3.5.0/lib/python3.5/runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "/Users/trmt_8/.pyenv/versions/3.5.0/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/Users/trmt_8/.pyenv/versions/3.5.0/lib/python3.5/site-packages/jupy2wp/jupy2wp.py", line 169, in <module>
    post += nbc.export_html(nb = args.nb, 
AttributeError: module 'nbconvert' has no attribute 'export_html'

jupy2wpを使って投稿する方法

それではWordPressにjupy2wpを使って投稿しましょう。

python -m jupy2wp.jupy2wp --xmlrpc-url サイトURL/xmlrpc.php --user ユーザー名 --password パスワード --nb 'ipynbのパス' --title 'タイトル' --categories カテゴリ1 カテゴリ2 --tags タグ1 タグ2 タグ3 --template basicx

上記の日本語の部分を書き直して、ターミナルに貼り付けて実行するだけです。

投稿に成功すると下記のように表示されます。

It seems all worked fine!! Check your wordpress site admin.

jupy2wp投稿時用パラメータの補足

-サイトURL/xmlrpc.php は https://example.com/xmlrpc.php のように入力してください。ドメイントップのアドレスに’xmlrpc.php’をつけるだけです。WordPressにプラグインを入れたり何かを設定する必要はありません。
-カテゴリは日本語の表示名ではなく、英語の「スラッグ」を入力してください。半角スペースで複数指定できます。
-タグもカテゴリと同じく英語の「スラッグ」を入力してください。半角スペースで複数指定できます。
-template はbasicxとbasicの2つから選べます。basicはJupyterの行番号が表示されます。通常はbasicxを使うことが多いと思います。

その他のパラメータについて詳しく知りたい方はこちらをご参照ください。

jupy2wp – Git

マークダウン記法を使ってjupyterからできること(おまけ)

jupy2wpとは関係ないのですがjupyter notebookに備わっているMarkdownを使ってどんなふうに投稿ができるか練習も兼ねてよく使うものに絞ってご紹介します。

見出し

ブログを書く上で無くてはならない見出しは#を使います。見出しレベルの数だけ#を増やします。

#見出し1
#\#見出し2
#\#\#見出し3

強調

人によっては使わないかも?太字の強調をしたいところには ** で文字の前後を囲います。 **強調したい文字**

リンク

リンクの貼り方はいろんな書き方があるのですが個人的に一番使いやすそうなものを1つご紹介すると
[リンクテキスト](URL)
これだけ覚えておけば大丈夫です。

↓こんな感じでリンクを張れます。

Google

画像

画像を使う場合は先程のaltの後に()でURLを囲むだけです。
![代替テキスト](URL)
↓こんな感じで表示されます。

リナックス

画像デカ!Σ(゚∀゚ノ)ノ

画像には代替テキストを入れましょう。というマークダウン記法を開発した人の強い意志を感じますね。

ここで一つ思ったのですが、手元にある画像をブログで利用する場合はWordPressのメディアに画像をアップロードしてURLを取ってくる必要があります。せっかくローカル環境だけで完結させたいのにちょっと面倒ですね。![代替テキスト](ローカル画像パス)とかすると自動でアップロード・画像リンクの作成をやってくれると最高に嬉しいですよね。でも、現段階でjupy2wpの開発は止まっているのでアップデートは期待できません。

そこで考えたのが下記の方法です。

1.Pythonのプログラムで画像を読み込む
1.コードを実行してjupyter notebookに表示
1.読み込みに使ったPythonコードを消す

この方法ならjupyter notebookに表示されている画像をjupy2wpが勝手にアップロードしてくれます。
試しにやってみると

from PIL import Image
Image.open('download.jpg')#実行中のjupyter notebookの"ホームディレクトリからの相対パス"または"絶対パス"を指定

↑こんな感じで表示ができるので from から openまでのPythonを実行しているセルを消せばローカルの画像をWordPressにアクセスせずにアップロードできます。

リスト

・を使ったリストは – * + を使います。それぞれの記号の後は半角スペースを入れます。

– リスト
* リスト
+ リスト
どれを使っても下記のように表示されます。

  • リスト
  • リスト
  • リスト

番号を振りたいときは  1. を使います。

1. リスト を続けて3回書くと

  1. リスト
  2. リスト
  3. リスト

のように表示されます。

コード

コードを書くときは

1行空白の行を入れる
“`言語:ファイル名
print("Hello world!")
“`
1行空白の行を入れる

なのですが… jupyter notebook上でプログラムを書くのにわざわざマークダウンを使うのは恐らくターミナルで実行するようなコマンドくらいで、それ以外のコードはセルを「コード」モードに切り替え他方が早いです。もともと、そういう使い方を導入したいからjupy2wpを使っているわけですしね。

引用

引用はメールなどでも使うのでおなじみの> を使います。

これは引用です。

まとめ

jupy2wpのインストールと設定が簡単すぎて、ほとんどマークダウン記法の説明になってしまった感が否めませんね(笑)

マークダウン記法はjupyter notebookの中で実行すれば文法があっていればちゃんと機能するので、これでWordPressに投稿する前に文法チェックができます。アップロードした後でもWordPressの編集画面で変更することも可能なので安心です。

ぜひ皆さんも使ってみてくださいね(^^)

インストールはこの1行だけ!

pip install git+https://github.com/Pybonacci/jupy2wp.git nbconvert==4.2.0

実行もこの1行だけ!(メモ帳にいくつかパターンを作って保存しておくと使い勝手がいいですね!)

python -m jupy2wp.jupy2wp --xmlrpc-url サイトURL/xmlrpc.php --user ユーザー名 --password パスワード --nb 'ipynbのパス' --title 'タイトル' --categories カテゴリ1 カテゴリ2 --tags タグ1 タグ2 タグ3 --template basicx

それではまた。

追記

WordPressの追加CSSにスタイルを書いても本文中にスタイルが指定されているので上書きされて適応されないという問題。

そして、関数の()が背景と同化して殆ど見えないという問題に気づきました。

導入は自己判断でお願いしますm(__)m

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください