1000.スクリプト構造 - takobouzu/BOAT_RACE_DB GitHub Wiki
ディレクトリの命名規則は3桁の番号_機能概要名となっている。番号順に格納されているスクリプトを実行することで、ボートレース関連情報のダウンロード・データー編集・データーのデーターベース格納ができるようになっている。
000_sh
日次データー取込スクリプトが格納されているディレクトリ
000_get_data.sh
日次データー取込処理 毎日午前8時にcornでスケジューリング実行されるスクリプトで、BOATRACEオフィシャルサイトからボートレースデーターをダウンロードしてデーターベースに格納するまでの一連の処理の流れを記述しているシェルスクリプトである。このスクリプトから各サブスクリプトが起動される。
#【システム】BOAT_RACE_DB2
#【ファイル】000_get_dash.sh
#【機能仕様】ボートレースオフィシャルサイトから1日分のボートレース関連情報を取得してデータベースに格納する
#【引 数】なし
#【戻 り 値】なし
#【動作環境】macOS 11.1/Raspbian OS 10.4/python 3.9.1/sqlite3 3.32.3
#【来 歴】2021.02.01 ver 1.00
#インストールディレクトリ
BASE_DIR=/home/pi/BOAT_RACE_DB
#過去にボートレースオフィシャルサイトからダウンロードした、HMTLファイルを削除する
sh $BASE_DIR/200_html/delete.sh
#ボートレースオフィシャルサイトからレース一覧をダウンロードする
sh $BASE_DIR/100_get_race_list/001_get_race_list.sh
#ボートレースオフィシャルサイトからボートレース関連情報が格納されたHTMLファイルをダウンロードするスクリプトを生成する
python3 $BASE_DIR/110_make_sh/001_mk_sh.py
#ボートレース関連情報が格納されたHTMLファイルをダウンロードする。
sh $BASE_DIR/120_get_html_sh/001_tenken.sh
sh $BASE_DIR/120_get_html_sh/002_race_table.sh
sh $BASE_DIR/120_get_html_sh/003_result.sh
sh $BASE_DIR/120_get_html_sh/004_last_info.sh
sh $BASE_DIR/120_get_html_sh/005_odds_3t.sh
sh $BASE_DIR/120_get_html_sh/006_kiatu.sh
sh $BASE_DIR/120_get_html_sh/x01_race_table.sh
#ボートレース関連情報が格納されたHTMLファイルからDBインポート用のCSVファイルを作成する
python3 $BASE_DIR/130_html_to_csv/000_mkcsv_t_tenken.py
python3 $BASE_DIR/130_html_to_csv/100_mkcsv_t_race_t.py
python3 $BASE_DIR/130_html_to_csv/110_mkcsv_t_race_h.py
python3 $BASE_DIR/130_html_to_csv/130_mkcsv_t_race_d.py
python3 $BASE_DIR/130_html_to_csv/140_mkcsv_t_info_h.py
python3 $BASE_DIR/130_html_to_csv/150_mkcsv_t_info_d.py
python3 $BASE_DIR/130_html_to_csv/160_mkcsv_t_info_p.py
python3 $BASE_DIR/130_html_to_csv/170_mkcsv_t_result_h.py
python3 $BASE_DIR/130_html_to_csv/180_mkcsv_t_result_d.py
python3 $BASE_DIR/130_html_to_csv/190_mkcsv_t_result_odds.py
python3 $BASE_DIR/130_html_to_csv/200_mkcsv_t_odds.py
python3 $BASE_DIR/130_html_to_csv/300_mkcsv_x_race_t.py
python3 $BASE_DIR/130_html_to_csv/310_mkcsv_x_race_h.py
python3 $BASE_DIR/130_html_to_csv/320_mkcsv_x_race_d.py
#DBインポート用のCSVファイルをSQLite3にインポートする
sh $BASE_DIR/150_import_sh/db_import.sh
#ボート関連指数算出
sh $BASE_DIR/140_index/110_mk_index.sh
#ボート関連指数算出CSV インポート
sh $BASE_DIR/150_import_sh/index_import.sh
100_get_race_list
「本日のレース」をダウンロードするシェルが格納されているディレクトリ。
001_get_race_list.sh
BOATRACEオフィシャルサイトから「本日のレース」をダウンロードシェル。ダウンロードされた「本日のレース」が出走表・直前情報・オッズ・レース結果・最寄りのアメダスより気圧・湿度の定義を入手するための元情報となる。
成績用途に昨日の「本日のレース」、予想用途に今日の「本日のレース」をcurlコマンドでダウンロードする。
昨日と今日の日付を求めるdateコマンドはRaspbian OSとmacOSでオプションの記述が異なる。 他のlinux系OSを使う場合は、curlコマンドやdateコマンドの仕様が異なる可能性があるので注意が必要。
過去に遡ってデーターを取得してデーターベースを構築するには、このスクリプトを改造して、日付をインクリメントするようなループ処理でスクリプトを実行させることで可能である。 筆者の運用環境であるRaspberry Pi 4 Model B/8GB(Raspbian OS)では、「本日のレース」を元に出走表・直前情報・オッズ・レース結果・最寄りのアメダスより気圧・湿度など1日分の情報をダウンロードするのに30分要する。1年分のデーターをダウンロードするのに約8日程度要する。予想に必要なデーターは1年程度あれば十分である。
ダウンロードするデーターが掲載されているHTMLファイルのサンプルはこちら
#【システム】BOAT_RACE_DB2
#【ファイル】001_get_race_list.sh
#【機能仕様】成績用に昨日のレース一覧、予想用に当日のレース一覧をダウンロードする
#【動作環境】macOS 11.1/Raspbian OS 10.4/python 3.9.1/sqlite3 3.32.3
#【来 歴】2021.02.01 ver 1.00
#インストールディレクトリ
BASE_DIR=/home/pi/BOAT_RACE_DB
#成績用に昨日のレース一覧をダウンロード
#Mac OS
#YESTERDAY=`date -v -1d "+%Y%m%d"`
#Raspbian OS 10.4
YESTERDAY=`date --date '1 day ago' "+%Y%m%d"`
curl https://www.boatrace.jp/owpc/pc/race/index?hd=$YESTERDAY -o $BASE_DIR/200_html/yesterday/$YESTERDAY.html
#予想用に当日のレース一覧をダウンロード
#Mac OS
#TODAY=`date -v -0d "+%Y%m%d"` #Mac OS
#Raspbian OS 10.4
TODAY=`date --date '0 day ago' "+%Y%m%d"`
curl https://www.boatrace.jp/owpc/pc/race/index?hd=$TODAY -o $BASE_DIR/200_html/today/$TODAY.html
110_make_sh
データーダウンロードシェルを生成するスクリプトが格納されているディレクトリ。
001_mk_sh.py
「本日のレース」をスクレイピングして、下記のデーターのダウンロードシェルを自動生成するシェル。
名称 | 自動生成シェル名 |
---|---|
前検タイムデータ・ダウンロードシェル生成 | 001_tenken.sh |
出走表データ・ダウンロードシェル生成 | 002_race_table.sh |
成績データ・ダウンロードシェル生成 | 003_result.sh |
展示データ・ダウンロードシェル生成 | 004_last_info.sh |
三連単オッズ・ダウンロードシェル生成 | 005_odds_3t.sh |
気圧データ・ダウンロードシェル生成 | 006_kiatu.sh |
当日出走表データ・ダウンロードシェル生成 | x01_race_table.sh |
120_get_html_sh
自動生成されたデーターダウンロードシェルが格納されるディレクトリ
001_tenken.sh
「本日のレース」に掲載されているレース場において開催日が「初日」の場合に、前検タイムをダウンロードするシェル。
前検タイムでは抽選でモーターとボートが選手に支給され、実際に選手が試運転して展示と同じく周回タイムを計測する。1日あたりのデーターファイルのダウンロード数は2個から3個程度である。
ダウンロードするデーターが掲載されているHTMLファイルのサンプルはこちら
002_race_table.sh
「本日のレース」に掲載しているレース場・レース単位に「出走表」データーをダウンロードするシェル。
「出走表」には、レース情報(レース名・距離・安定板装着有無・進入固定有)、選手単位に登番・選手名・支部・勝率・2連対率などの情報が掲載されている。 1日あたり平均で15レース場でレースが施行されているので、180個程度のデーターファイルをダウンロードすることになる。
ダウンロードするデーターが掲載されているHTMLファイルのサンプルはこちら
003_result.sh
「本日のレース」に掲載しているレース場・レース単位に「レース結果」データーをダウンロードするシェル。 「レース結果」には決まり手(逃げ・差し・まくり・まくり差し・抜き・恵まれ)、水面情報(天候・波高・気温・水温・風速・風向)、出走選手単位に進入コース・ST・走破タイム・着順が掲載されている。 1日あたり平均で15レース場でレースが施行されているので、180個程度のデータファイルをダウンロードすることになる。 ダウンロードするデーターが掲載されているHTMLファイルのサンプルはこちら
004_last_info.sh
「本日のレース」に掲載しているレース場・レース単位に「直前情報」データーをダウンロードするシェル。 「直前情報」には水面情報(天候・波高・気温・水温・風速・風向)、出走選手単位にスタート展示のST、周回展示の展示タイム、部品交換情報が掲載されている。 1日あたり平均で15レース場でレースが施行されているので、180個程度のデータファイルをダウンロードすることになる。 ダウンロードするデーターが掲載されているHTMLファイルのサンプルはこちら
005_odds_3t.sh
「本日のレース」に掲載しているレース場・レース単位に「3連単オッズ」データーをダウンロードするシェル。 1日あたり平均で15レース場でレースが施行されているので、180ファイル程度の出走表データーをダウンロードすることになる。 ダウンロードするデーターが掲載されているHTMLファイルのサンプルはこちら
006_kiatu.sh
「本日のレース」に掲載しているレース場単位に、レース場の最寄りの気象庁アメダス拠点の10分単単位の気象データーをダウンロードするシェル。
1日あたり平均で15レース場でレースが施行されているので、15ファイル程度の出走表データーをダウンロードすることになる。
ダウンロードするデーターが掲載されているHTMLファイルのサンプルはこちら
x01_race_table.sh
1日あたり平均で15レース場でレースが施行されているので、180ファイル程度の出走表データーをダウンロードすることになる。 ダウンロードするデーターが掲載されているHTMLファイルのサンプルはこちら
130_html_to_csv
ダウンロードしたデーターファイルを編集して、データーベースのインポート用CSVファイルを生成するスクリプトを格納しているディレクトリ。
000_mkcsv_t_tenken.py
ダウンロードした「前検タイム」データーファイルから前検タイムテーブル(t_tenken)のインポート用CSVファイルを生成するスクリプト。
100_mkcsv_t_race_t.py
ダウンロードした「出走表」データーファイルから出走表タイトルテーブル(t_race_t)のインポート用CSVファイルを生成するスクリプト。
110_mkcsv_t_race_h.py
ダウンロードした「出走表」データーファイルから出走表ヘッダテーブル(t_race_h)のインポート用CSVファイルを生成するスクリプト。
130_mkcsv_t_race_d.py
ダウンロードした「出走表」データーファイルから出走表明細テーブル(t_race_d)のインポート用CSVファイルを生成するスクリプト。
140_mkcsv_t_info_h.py
ダウンロードした「直前情報」データーファイルから直前情報ヘッダテーブル(t_info_h)のインポート用CSVファイルを生成するスクリプト。
150_mkcsv_t_info_d.py
ダウンロードした「直前情報」データーファイルから直前情報明細テーブル(t_info_d)のインポート用CSVファイルを生成するスクリプト。
160_mkcsv_t_info_p.py
ダウンロードした「直前情報」データーファイルから交換部品テーブル(t_info_p)のインポート用CSVファイルを生成するスクリプト。
170_mkcsv_t_result_h.py
ダウンロードした「レース結果」データーファイルからレース結果ヘッダテーブル(t_result_h)のインポート用CSVファイルを生成するスクリプト。
180_mkcsv_t_result_d.py
ダウンロードした「レース結果」データーファイルからレース結果明細テーブル(t_result_d)のインポート用CSVファイルを生成するスクリプト。
190_mkcsv_t_result_odds.py
ダウンロードした「レース結果」データーファイルからレース結果オッズテーブル(t_result_odds)のインポート用CSVファイルを生成するスクリプト。
200_mkcsv_t_odds.py
ダウンロードした「3連単オッズ」データーファイルからオッズテーブル(t_odds)のインポート用CSVファイルを生成するスクリプト。
300_mkcsv_x_race_t.py
ダウンロードした予想用の「出走表」データーファイルから予想用出走表タイトルテーブル(x_race_t)のインポート用CSVファイルを生成するスクリプト。
310_mkcsv_x_race_h.py
ダウンロードした予想用の「出走表」データーファイルから予想用出走表ヘッダテーブル(x_race_h)のインポート用CSVファイルを生成するスクリプト。
320_mkcsv_x_race_d.py
ダウンロードした予想用「出走表」データーファイルから予想用出走表明細テーブル(x_race_d)のインポート用CSVファイルを生成するスクリプト。
140_index
ボートレース関連指数を算出して、データーベースのインポート用CSVファイルを生成するスクリプトを格納しているディレクトリ。
100_mk_index.py
ボートレース関連指数を算出して、データーベースのインポート用CSVファイルを生成するスクリプト。ボートレース関連指数の解説については、こちらを参照
110_mk_index.sh
ボートレース関連指数算出スクリプトを実行するシェル。
スクリプトのパラメータに算出開始日と算出終了日を設定する。通常運用では算出開始日・算出終了日に昨日の日付をYYYYMMDD形式で設定する。
過去に遡って算出する場合は、算出開始日と算出終了日付を設定する。 例.「python3 $BASE_DIR/140_index/100_mk_index.py 20200101 20201231」
筆者の運用環境であるRaspberry Pi 4 Model B/8GB(Raspbian OS)では1日分のボートレース関連指数を算出するのに40分程度要する。
#【システム】BOAT_RACE_DB2
#【ファイル】110_mk_index.sh
#【機能仕様】ボートレース関連指数算出スクリプトの起動
#【動作環境】macOS 11.1/Raspbian OS 10.4/python 3.9.1/sqlite3 3.32.3
#【来 歴】2021.02.01 ver 1.00
#インストールディレクトリ
BASE_DIR=/home/pi/BOAT_RACE_DB
#成績用に昨日のレース一覧をダウンロード
#Mac OS
#YESTERDAY=`date -v -1d "+%Y%m%d"`
#Raspbian OS 10.4
YESTERDAY=`date --date '1 day ago' "+%Y%m%d"`
python3 $BASE_DIR/140_index/100_mk_index.py $YESTERDAY $YESTERDAY
150_import_sh
データーベースのインポート用CSVファイルをデータベースに反映するためのシェルが格納されているディレクトリ。
db_import.sh
ボートレース関連指数CSVファイル以外の各インポート用CSVファイルをデーターベースを一括でインポートするシェル。
index_import.sh
ボートレース関連指数CSVファイルをデーターベースにインポートするシェル。