pythonを使ってNanoWalletで読み込めるQRコードを作ろうとしたら少し詰まったので備忘録として残しておきます.
pythonでQRコードを作成することができるAPIを探してみると
- qrcode
- pyqrcode
- pygooglechart
の3種類が見つかりました.
一番簡単そうなのはpygooglechart
かなと思ったのですが
公式で非推奨ということなので泣く泣く諦め今回はqrcode
を使用することにしました.
とりあえず必要なqrcodeをインストールします.
pip install qrcode
下準備は以上になります.
後はただQRコードを作成するだけなのですが,どうもNanoWalletで使わている言語がシングルクォーテーションとダブルクォーテーションで意味が違うみたいで読み込んでくれない(phpかな...)
pythonの場合ダブルクォーテーションで囲んでもQRコードにするとシングルクォーテーションになるみたいなのでここで少しつまりました...
あとはqrcode.make("ここにデータを記載")
だけでもQRコードは作成できるのですがこれだと上手く読み込めないみたいです.
シンプルに読み込めるQRコードを作成するコードは以下のようになります
nem_qr.py
#-*- codong: utf-8 -*-
import qrcode
address = "walletのアドレス"
mosaic = 1000000
send_amount = 100 * mosaic
message = "test"
wallet_name = "test"
if __name__ == '__main__':
qrdata = '{"v":2,"type":2,"data":{"addr":"' + address + '","amount":' + str(send_amount) + ',"msg":"' + message + '","name":"' + wallet_name + '"}}'
#qrdata = '{"v":2,"type":2,"data":{"addr":"walletのアドレス","amount":5000000,"msg":"test","name":"test"}}'
QR = qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=6,
border=4,
)
QR.add_data(qrdata)
QR.make(fit=True)
img = QR.make_image(fill_color="white", back_color="black")
img.save('qr.bmp')
1Nemを贈りたい場合は1000000倍しないとダメみたいです.