-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbundler.php
More file actions
52 lines (38 loc) · 1.98 KB
/
bundler.php
File metadata and controls
52 lines (38 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use BOA\Hub\ProgramSaver;
use Carbon\CarbonImmutable as Carbon;
// コマンドライン引数からバージョンを取得(デフォルトは v3)
$version = $argv[1] ?? 'v3';
// コマンドライン引数から日付を取得(デフォルトは 本日)
$date = Carbon::parse($argv[2] ?? 'today')->timezone('Asia/Tokyo');
$directoryName = $date->format('Y');
$fileName = $date->format('Ymd');
$programsJson = file_get_contents("https://boatraceopenapi.github.io/programs/{$version}/{$directoryName}/{$fileName}.json");
$programs = json_decode($programsJson, true)['programs'] ?? [];
$previewsJson = file_get_contents("https://boatraceopenapi.github.io/previews/{$version}/{$directoryName}/{$fileName}.json");
$previews = json_decode($previewsJson, true)['previews'] ?? [];
$resultsJson = file_get_contents("https://boatraceopenapi.github.io/results/{$version}/{$directoryName}/{$fileName}.json");
$results = json_decode($resultsJson, true)['results'] ?? [];
$newPrograms = array_map(function($program) use ($previews, $results) {
$program['preview'] = array_find($previews, fn($preview) =>
$preview['stadium_number'] === $program['stadium_number']
&& $preview['number'] === $program['number']
);
$program['result'] = array_find($results, fn($result) =>
$result['stadium_number'] === $program['stadium_number']
&& $result['number'] === $program['number']
);
return $program;
}, $programs);
// 出走表データが取得できなかった場合は処理終了
if (empty($newPrograms ?? [])) {
exit;
}
// 出走表データを JSON ファイルとして保存
// 日付付きの JSON ファイルとして保存(例: docs/v3/2026/20260322.json)
// 最新データとして today.json にも保存
$saver = new ProgramSaver();
$saver->save($newPrograms, "docs/{$version}/{$directoryName}/{$fileName}.json");
$saver->save($newPrograms, "docs/{$version}/today.json");