LoginSignup
0
2

Pythonで、地方競馬DATA ( UmaConn ) のデータを取得する。

Last updated at Posted at 2024-01-27

注意

公式に公開されている内容ではなく、個人的に調査まとめた内容となります。

やりたいこと

地方競馬DATAという、地方競馬の開催情報や結果を配信しているサービスがある。

このサービスでは「UmaConn」というソフトウェアを経由して地方競馬の開催データや、結果情報、出走馬情報を取得することができる。
地方競馬版の JV-LINK ( https://jra-van.jp/dlb/sdv/sdk.html )のような動きをしてくれるらしい。

しかし、使い方などは公開されていない。
このサービスから地方競馬のデータを取得したい。

結論から先にいうと

以下のコード、操作で読むことができる。
しかし、データのパースが必要なので、C#などで読み替えてSDKを使用して読んだほうが良さそう。

import win32com.client

NVLink1 = win32com.client.Dispatch("NVDTLabLib.NVLink")

return_code = NVLink1.NVInit("UNKNOWN")

# ここにデータを取得する処理を記述する

return_code = NVLink1.NVClose()

pywin32 ( https://pypi.org/project/pywin32/ ) を用いて、 地方競馬DATAのDLLをロードする。
Pythonは32bit版である必要があるので注意。

DLLは、UmaConnをインストールした際に 「 C:\Windows\SysWOW64\NVDTLab.dll 」
に配置されているのでそれを読み込むようにする。

あとは、JV-LINKと初期化をして、データをロードして、必要なデータを取り込んでいくことになる。

使用例

以下のように「JV-Linkインターフェース仕様書 ( https://jra-van.jp/dlb/sdv/sdk.html ) 」に書いてある「JV」を「NV」に置き換えると、大体似たことができる。

JRA Data Lab(JV-LINK)の場合

import win32com.client

JVLink1 = win32com.client.Dispatch("JVDTLab.JVLink")
return_code = JVLink1.JVInit("UNKNOWN")
dataspec = 'RACE'
fromtime = 20240126000000
option = 3
returnval = JVLink1.JVOpen(dataspec,fromtime,option, 0,0,'')
return_code = JVLink1.JVClose()

地方競馬DATA(UmaConn)の場合

# 注意:Pythonは32bit版である必要がある

import win32com.client
# 「NVDTLab」ではなく「NVDTLabLib」とする必要があることに注意
NVLink1 = win32com.client.Dispatch("NVDTLabLib.NVLink")
return_code = NVLink1.NVInit("UNKNOWN")
dataspec = 'RACE'
fromtime = 20240126000000 
option = 3
returnval = NVLink1.NVOpen(dataspec,fromtime,option, 0,0,'')

Pythonでやると読み込んだデータのパースなど大変なので、結局該当DLLを同様にC#などで読んで、JV-LINKのSDKと併用して操作するといいかもしれない。

参考にした記事・リポジトリ

Pythonから.NET Frameworkで動作するJV-LINKを操作する方法は下記の記事を参考にしました。

また、下記リポジトリがC#でJV-LINK、UmaConn両方のデータを読み込むアプリケーションとして大変参考になりました。

0
2
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
0
2