コマンドラインインターフェース (CLI)¶
概要¶
PyJVLinkは、JV-Linkサーバーと対話するためのコマンドラインインターフェース(CLI)を提供します。pyjvlinkコマンドを通じて、ターミナルから直接JV-Linkのデータにアクセスしたり、サーバーの状態を確認したりできます。
ローカルホスト(127.0.0.1 / localhost)に接続する場合、CLIは必要に応じてJVLinkServer.exeを自動起動します。リモートホストを指定する際は、接続先でサーバーが稼働していることを確認してください。
インストールとヘルプ¶
コマンド一覧¶
health - サーバーヘルスチェック¶
サーバーが正常に起動し、応答しているかを確認します。
出力例:
- 正常時:
- エラー時:
version - バージョン情報取得¶
JVLinkラッパーサーバー、API、およびJV-Linkコンポーネント自体のバージョン情報を表示します。
出力例:
query-stored - 蓄積系データクエリ¶
指定した条件で蓄積系データを検索し、取得します。
必須引数:
<dataspec>: データ種別ID(例:RACE,TOKU)。詳細はデータ種別を参照。<from_datetime>: 取得を開始する日時 (YYYYMMDDまたはYYYYMMDDHHMMSS形式)。<option>: クエリオプション (1: 蓄積,2: 今週,3: セットアップ,4: セットアップ(ダイアログなし))。
オプション引数:
--sid <SESSION_ID>: セッションID(デフォルト:"UNKNOWN")。--max-records <N>: 取得する最大レコード数(デフォルト:-1で全件取得)。--to-date <DATETIME>: 取得を終了する日時 (YYYYMMDDまたはYYYYMMDDHHMMSS形式)。--record-types <TYPE> [TYPE ...]: 取得するレコード種別をスペース区切りで指定(例:RA SE HR)。--auto-retry:JV-Data-0B-File-Damagedエラー時に自動でリトライします。--max-retries <N>: 自動リトライの最大回数。--retry-delay-ms <MS>: リトライ時の待機時間(ミリ秒)。--format <FORMAT>: 出力形式(json|raw、デフォルト:json)。
使用例:
# 2024年4月1日のレース情報を取得
pyjvlink query-stored RACE 20240401 1
# レコード種別をフィルタリング(レース情報と出走馬情報のみ)
pyjvlink query-stored RACE 20240401 1 --record-types RA SE
# 期間を指定し、最大100件まで取得
pyjvlink query-stored RACE 20240401 1 --to-date 20240407 --max-records 100
# 自動リトライを設定して実行
pyjvlink query-stored RACE 20240401 1 --auto-retry --max-retries 5
query-realtime - リアルタイム系データクエリ¶
リアルタイムで提供されるデータを取得します。
必須引数:
<dataspec>: データ種別ID(例:0B12,0B15)。詳細はデータ種別を参照。
オプション引数:
--key <KEY>: 必須。レースキーや開催日キーなど、データ種別に応じたキー。--format <FORMAT>: 出力形式(json|raw、デフォルト:json)。
使用例:
# 速報レース結果を取得 (キーを指定)
pyjvlink query-realtime 0B12 --key 202401070511
# 速報馬体重を開催日単位で取得
pyjvlink query-realtime 0B11 --key 20240107
出力形式¶
JSON形式(デフォルト)¶
取得したデータは、メタ情報とレコードのリストを含むJSONオブジェクトとして標準出力に書き出されます。
出力例:
{
"meta": {
"read_count": 1,
"download_count": 0,
"last_file_timestamp": "20240401123456"
},
"records": [
{
"type": "RA",
"data": {
"race_key": "20240401050301",
"race_name": "桜花賞",
"distance": 1600
}
}
]
}
Raw形式¶
--format raw を指定すると、JV-Linkから取得した生のレコード文字列がそのまま出力されます。
出力例:
環境変数¶
CLIの一部の動作は、環境変数で設定できます。
JVLINK_SERVER_HOST: 接続先ホスト名。既定値は127.0.0.1。JVLINK_SERVER_PORT: JVLinkラッパーサーバーのポート番号。JVLINK_HTTP_TIMEOUT: HTTPリクエスト全体のタイムアウト秒。JVLINK_STREAM_READ_TIMEOUT: ストリーミング読み取りタイムアウト秒。JVLINK_LOG_LEVEL: ログレベル (debug,info,warn,error)。JVLINK_SERVER_STREAM_HEARTBEAT_SEC: ストリーミング時に空行を定期送信する間隔(秒)。既定は30、0で無効。GITHUB_TOKEN: サーバー実行ファイルをダウンロードする際に使用するGitHubトークン。
エラーハンドリングと終了コード¶
CLIは、処理の成功または失敗を示す終了コードを返します。
0: 正常終了1: エラー(接続失敗、無効なパラメータ、データエラーなど)
エラーが発生した場合、詳細は標準エラー出力に表示されます。
エラー例:
$ pyjvlink query-stored INVALID_SPEC 20240401 1
[FAIL] Error: Unknown dataspec: 'INVALID_SPEC'. ...
$ echo $?
1
実装について¶
CLIは pyjvlink.cli モジュールで実装されており、Pythonの Client クラスを利用しています。CLIコマンドは、Client の対応メソッドを呼び出す薄いラッパーとして機能します。
例えば、以下のCLIコマンドは、
内部的には、以下のようなPythonコードを実行するのと同等です。