2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python ココフォリアClipBoardAPI用データ作成クラス

Last updated at Posted at 2023-03-28

ココフォリアのコマを外部から入力する手段としてClipboard APIが提供されているのですが
まいかいこのClipboard APIのフォーマットに合わせた辞書形式のデータを手打ちしており、結構面倒だったので
最低限このデータは絶対入力するものをある程度簡単にまとめてクラス化しました。

使用方法としては下記クラスをインスタンス化したら頭にset_が付いている各メソッドから
データを書き込んでいき、データの書き込みが終わったところでtxt_outで出力という流れです

ステータスとパラメータは辞書を格納した配列を入力するのでそこだけ注意が必要です。
なぜかココフォリアのドキュメントは英語でしか解説されていないので少しばかりてこずりました。

python cocofolia_api.py

import json


class ClipApi:
    # ココフォリアClipboard APIのテンプレートをインスタンス化
    def __init__(self):
        self.data = {
            "kind": "character",
            "data": {
                "name": "no-name",
                "memo": "",
                "initiative": 0,
                "status": [{'label': 'HP', 'value': '4', 'max': '4'},
                           {'label': 'AP', 'value': '4', 'max': '4'}],
                "params": [{'label': '持ち物', 'value': '財布'},
                           {'label': '性格', 'value': 'ツンデレ'}],
                "active": True,
                "secret": False,
                "invisible": False,
                "hideStatus": False,
                "color": "#ffffff",
                "commands": "",
            }
        }
        

    # キャラクター名
    def set_name(self, name: str):
        self.data['data']['name'] = name

    # メモ(改行がそのまま反映されるので文字列でデータを用意する)
    def set_memo(self, memo: str):
        self.data['data']['memo'] = memo

    # イニシアティブ(整数型でないとデータが反映されないので注意する)
    def set_initiative(self, inis: int):
        self.data['data']['initiative'] = inis

    # ステータス(次の形の配列を用意するキーは固定なのでほかのキーは使用しない
    #   {'label': 'ラベル名', 'value': '現在値', 'max': '最大値'})
    def set_status(self, status: []):
        self.data['data']['status'] = status

    # パラメータ(次の形の配列を用意するキーは固定なのでほかのキーは使用しない
    #   {'label': 'ラベル名', 'value': '値'})
    def set_params(self, params: []):
        self.data['data']['params'] = params
    # チャットパレット(改行込みの文字列でデータを用意する。1行ごとにコマンドとして認識されるので改行文字列でOK)
    def set_commands(self, commands: str):
        self.data['data']['commands'] = commands
    # ステータスを非公開にする
    def set_secret(self, secret: bool):
        self.data['data']['secret'] = secret
    # 発言時キャラクターを表示しない
    def set_invisible(self, invisible: bool):
        self.data['data']['invisible'] = invisible
    # 盤面キャラクター一覧に表示しない
    def set_hide_status(self, hide_status: bool):
        self.data['data']['hideStatus'] = hide_status
    # キャラクター表示文字色の設定
    def set_color(self, color: str):
        self.data['data']['color'] = color
    # 入力されたデータをClipBoardAPIの対応書式で文字列出力
    def txt_out(self):
        return json.dumps(self.data, indent=4)

ステータスとパラメータは辞書を格納した配列を入力するのでそこだけ注意が必要です。

#※ネクロニカのデータでのサンプルです
 # ステータスのサンプル
 [{'label': 'たからものへの未練', 'value': '3', 'max': '4'},
  {'label': 'PC1への未練', 'value': '3', 'max': '4'},
  {'label': 'PC2への未練', 'value': '3', 'max': '4'}
  ]
 # パラメータのサンプル
 [ {'label': 'ポジション', 'value': 'アリス'},
   {'label': 'メインクラス', 'value': 'ステーシー'},
   {'label': 'サブクラス', 'value': 'ステーシー'},
   {'label': '武装', 'value': '2'},
   {'label': '変異', 'value': '2'},
   {'label': '改造', 'value': '1'}
  ]

なぜかココフォリアのドキュメントは英語でしか解説されていないので少しばかりてこずりました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?