NEMのモザイクのメッセージをpython3で制御してみる


NEMのモザイクのメッセージをpython3で制御してみる

NIS1のjson は以下のような構造です


 {
        "transaction":
        {   
        "timeStamp": 
        "amount": int(1*1000000),
        "fee": int(0.5*1000000),
        "recipient":str1,
        "type": type$,
        "deadline": timestanp$+3600,
        "message":
        {
            "payload": message2,
            "type": 1
        },
            "version":verson$ 
            "signer": "", #publickey
            "mosaics":[
            {
                "mosaicId":{
                    "namespaceId": namespace,
                    "name": mosaic
                },
                "quantity": 10
            }

(データの部分省略してます。幾つか変数で対応できる部分は変数を書いてます)

python3から変数でデータを入力すると便利な部分

"recipient":str1,
"message": "payload": message2, 
"mosaicId":{  "namespaceId": namespace,  "name": mosaic

このなかでmessage欄はせっかくあるのにあまり使われません

もっとも使われたのはネムぐまさんのF-1000イベントではないでしょうか

tweeterとnemlogで案内をされていました
https://nemlog.nem.social/blog/30886

tipをして絵を仕上げるという面白い企画

tipは専用アプリからracoonwalletに接続して行う仕組みになってました。
(たぶんネムグマさんが記事にされると思います)

私も最初は携帯でチップしていたのですが、仕事中に携帯触れないのと数が打てないので、python3でメッセージを作りながらtipしていました。

途中ブルーハーツの題名が並んだのをねむぐまさんがtweetしたときに、そういうふうに連続したメッセージをつなげて読めるのならそれ用にtipしようと思ってpython3のプログラムを作ってみました

複数回 message を入れ替えてnem投げるだけなのですが

jsonから受けてアドレスを読み取り(今回は必要ないです汎用プログラム流用のため)

message2という変数に毎回 list a から1行分ずつデータを読み込んでトランザクションを送ります

 
    with open('fushicho.json', 'r') as f:
        data4 = json.load(f)
        data5 = data4['data']
        a = ["不 死 鳥","Phoenix","  る","て づ","っ い","も て り","め れ よ","ゆ ま う","  う の","    ほ ","Phoenix","不 死 鳥"
        for i in range(1,13):
            str1 = '{}'.format(data5[1]['address']) 

str1とmessage2にデータを代入してjsonを作成しサーバーに送ります

結果が入出金履歴に表されるメッセージを積み上げたデータになります

いくつも同様のプログラムを使ってtipするのが非常に楽しかったです
ありがとうございました

bingo

messageをつかってなにかできないかってことでビンゴカードを作成してモザイクで配るというのを試してみました

データ取得

jsonから、nemlogのギルドの方のメッセージをjsonにしているのでそれを読み込みます

その上でモザイクのメッセージに1枚のビンゴカードを作成して送ります

jsonの例  guildadd.json

{
"data": [
{
"name": "えっさん",
"address": "NAAXHJM65OKDFSYGWXXXXXXXXXXXXXXXXXXXXXX"
},
{
"name": "YUTO",
"address": "NCYKI7M6EITPEYLHXXXXXXXXXXXXXXXXXXXXXXx"
},
{
"name": "matsuno",
"address": "NDFSJHCY7ZY3ELWAXXXXXXXXXXXXXXXXXXXXXXx"
},
{
"name": "うぇんじにあ",
"address": "NBO6YSQF3XO45JVOXXXXXXXXXXXXXXXXXXXXXXx"
},
{
"name": "nem好き",
"address": "NCVKQZJ4ACLC4XXXXXXXXXXXXXXXXXXXXXXXXX"
},
{
"name": "ZEMZEM",
"address": "NC2E5LZH6HQXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
},
{
"name": "ボー太郎",
"address": "NBMDXPTFOYMXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
]
}

カード作成  "recipient":str1, で全員分をアドレスを入力しつつパラメータを作成する

    with open('guildadd.json', 'r') as f:
        data4 = json.load(f)
        data5 = data4['data']

        for n in range(1,7):
            str1 = '{}'.format(data5[n-1]['address']) 受けてのアドレス
            name1 = '{}'.format(data5[n-1]['name']) 相手の名前
            m = str(n).zfill(4)  カード番号の作成
            f = list(range(1,75)) 75までの数字でビンゴの要素を作る
            g = random.sample(f,24) 24マス分の数字をえらぶ
            message = (name1+m)
            no = ', '.join(map(str, g))
            message2 = message+" "+no
            print(message2)

            mkdata-fromjason  #トランザクション用のデータを作成するルーチン(関数)を呼ぶ

#実際に送られたモザイクのメッセージ
データの意味は 名前 カードNO 24個のビンゴの数字

えっさん0001 28, 37, 41, 57, 50, 3, 4, 45, 59, 74, 35, 68, 24, 18, 14, 6, 20, 19, 15, 10, 29, 55, 30, 63

YUTO0002 65, 2, 56, 4, 68, 28, 8, 14, 11, 1, 23, 58, 17, 74, 67, 33, 62, 45, 32, 31, 26, 16, 25, 29

matsuno0003 19, 63, 26, 15, 21, 14, 1, 37, 4, 31, 7, 41, 72, 42, 55, 3, 2, 51, 65, 46, 22, 56, 66, 33

うぇんじにあ0004 69, 26, 44, 30, 73, 40, 24, 57, 60, 35, 15, 45, 43, 10, 4, 11, 7, 3, 33, 32, 14, 63, 20, 12

nem好き0005 25, 37, 60, 59, 65, 8, 35, 69, 31, 62, 64, 28, 46, 54, 53, 38, 7, 66, 41, 73, 36, 67, 40, 29

ZEMZEM0006 37, 4, 67, 64, 74, 60, 33, 22, 7, 62, 51, 11, 28, 53, 20, 42, 18, 70, 66, 16, 35, 68, 57, 58

WEBで見るとカードになるとか面白そうなんですがWEB不得意なので実現しそうにないです
ローテクの上に印刷してbingoカードにするのが良さそうです

まだできていない部分
モザイクのメッセージを読んでカード形式で表示する