Base64, PyScriptとWordPress

HTML上でPythonを実行するPyScriptについて先日WordPressでの動作を検証したところ、いくつか気づいた不具合の中にインデントが正しく評価されずエラーになる問題があった。

WordPressでPyScriptを使ってみた

PyCon US 2022のキーノートでAnacondaからブラウザー上Python実行環境PyScriptが発表された。αバージョンだが、既にNumpy, Pandasなどの外部モジュールに対応しているとの…

セキュリティのためWordPressがwptexturize関数か何かでPythonコードを書き換えている可能性があるので、コードをbase64に変換してしまうことで無理やり回避できないか試してみた。

インデントなし例

print("Hello, World")

先ずはインデントなしの例。上のコードをbase64変換しpy-scriptタグのsrcにペーストした。最初の2行はPyScriptのJavaScriptコード読み込みのため。

<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css">
<script defer="" src="https://pyscript.net/alpha/pyscript.js"></script>
<py-script src="data:text/html;base64,cHJpbnQoIkhlbGxvLCB3b3JsZCEiKQ==">
</py-script>

実行結果

↑はい、Hellow World問題なし

インデントあり例

for i in range(5):
    print(i) 

続いて本命のインデントあり例。上のコードを用いる。うまくいけば0から4まで1行毎に表示されるはず。↓カスタムHTMLに貼り付けるコードはこちら。

<py-script src="data:text/html;base64,Zm9yIGkgaW4gcmFuZ2UoNSk6CiAgICBwcmludChpKSA=">
</py-script>

実行結果

今度はうまくいった。

コメントを残す

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