boatrace / support
Boatrace Support
Requires
- php: ^8.4
- boatrace/core: ^0.1.0
- boatrace/types: ^0.1.0
- symfony/browser-kit: ^8.0
- symfony/console: ^8.0
- symfony/css-selector: ^8.0
- symfony/dom-crawler: ^8.0
- symfony/http-client: ^8.0
Requires (Dev)
- phpunit/phpunit: ^13.2
- vimeo/psalm: ^6.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-11 18:02:42 UTC
README
Boatrace Support は、boatrace/* パッケージ群が共有する汎用モジュール(HTTP ブラウザ、呼び出し間隔の制御、値の変換・正規化、XPath 抽出など)を提供する PHP ライブラリです。ボートレース固有の知識は持ちません。
boatrace/scraper や boatrace/scraper-boatcast が依存しているため、通常は個別にインストールする必要はありません。
📦 Requirements
- php: ^8.4
- boatrace/core: ^0.1
- boatrace/types: ^0.1
- symfony/browser-kit: ^8.0
- symfony/console: ^8.0
- symfony/css-selector: ^8.0
- symfony/dom-crawler: ^8.0
- symfony/http-client: ^8.0
💾 Installation
composer require boatrace/support
⚡ Usage
すべてのモジュールは静的に呼び出せます。戻り値はレスポンスオブジェクトで、値は getValue() で取り出します。
<?php require __DIR__ . '/vendor/autoload.php'; use Boatrace\Support\Converter\Converter; use Boatrace\Support\Throttler\Throttler; use Boatrace\Support\Trimmer\Trimmer; $value = Trimmer::trimOrNull(' 福岡 ')->getValue(); // 福岡 $value = Converter::toInt('22')->getValue(); // 22 Throttler::setMinCallIntervalSeconds(2.0); Throttler::throttle();
モジュール一覧
| モジュール | メソッド | 説明 |
|---|---|---|
Browser |
create($serverParameters = []) |
ブラウザらしいヘッダを備えた HttpBrowser を生成します。トランスポート例外と 423 / 425 / 429 / 5xx は自動で再試行します |
Throttler |
getMinCallIntervalSeconds()setMinCallIntervalSeconds($seconds)throttle() |
呼び出し間隔を制御します。既定は 1.0 秒で、0.5〜1.5 倍のゆらぎが付きます。プロセス全体で共有されます |
Trimmer |
trimOrNull($value, $characters = null)ltrimOrNull(...)rtrimOrNull(...) |
mb_trim 系で全角空白を含めて trim します。null は null のまま返します |
Converter |
toInt($value)toFloat($value)toString($value)toKana($value)toDayNumber($value)toCamelCaseKeys($value)toEnumOrNull($resolver) など |
型変換です。null は null のまま返します。*Strict は null を受け付けず、*OrReturn は変換できなければ入力をそのまま返します |
Normalizer |
normalize($value, $options = []) |
文字列中の空白・数字を整え、数値文字列は int / float にします。配列は再帰的に処理します |
Filter |
byXPath($crawler, $xpath)byXPathAsAttribute($crawler, $xpath, $attribute)byXPathAsPattern($crawler, $xpath, $attribute, $pattern) |
Crawler から XPath で文字列や属性値を抽出します。見つからなければ null を返します |
Validator |
between($value, $minimum, $maximum, $name = '$value') |
範囲を検証します。範囲外なら ValueError を投げ、null は null のまま返します |
Progress |
isEnabled()setEnabled($enabled)start($totalSteps, $message = null)advance($step = 1)finish($message = null) |
コンソールにプログレスバーを表示します。既定は無効です |
Timing |
parse($value) |
Server-Timing ヘッダを指標ごとの dur / desc に分解します |
Tsv |
parse($value) |
TSV 文字列を行・列の配列にします。壊れた入力は空配列を返します |
Json |
decode($value) |
JSON 文字列を配列にします。壊れた入力は null を返します |
Browser
boatrace.jp は Akamai の背後にあり、ブラウザらしくないリクエストは拒否ではなく 8〜10 秒待たされた上で 200 が返ります。Browser::create() が返す HttpBrowser は、User-Agent / Sec-CH-UA / Sec-Fetch-* / Accept-Language をあらかじめ備えています。
use Boatrace\Support\Browser\Browser; $httpBrowser = Browser::create()->getValue(); $crawler = $httpBrowser->request('GET', 'https://www.boatrace.jp/owpc/pc/race/index');
遅延したかどうかは Server-Timing ヘッダの edge に現れます。監視したい場合は Boatrace\Types\Contracts\Browser\BrowserObserver を実装し、boatrace/core の CoreContainer::addDefinitions() で定義を差し替えます。閾値や通知先はライブラリでは持ちません。
📄 License
Boatrace Support は MIT license の元で公開されています。