2021年のJRA重賞カレンダーの作成

最終更新時間:2020年12月27日 10時46分01秒

calendar.png

 JRAは例年Googleカレンダーなどに登録できる開催日程や重賞日程をまとめたicsファイルを提供している(こちらのページ参照)。
 しかし、2020/12/27現在、2021年の開催日程のicsファイルはすでに提供されているが、重賞日程の方はまだ提供されていない。これは、一部の重賞の格付けがまだ確定していないためだと思われる。先のページには、

注記:	重賞スケジュールファイルは2021年1月中旬にアップ予定です。

とあるため、もう二、三週間待てばいいのだが、私としては、年明けには金杯の開催日程をどうしてもGoogleカレンダーに表示しておきたい!
 そこで、すでにJRAから提供されている格付け未確定の情報を含む2021年の重賞レース一覧のページのデータを元に、勝手にicsファイルを作成して、Googleカレンダーに登録してみた。
 以下のスクリプト(makevcal.pl)を実行し、

./makevcal.pl > grace.ics

 作成されたicsファイルをGoogleカレンダーにインポートするだけ。

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTML::TableExtract;
use Time::Piece;
use Time::Seconds;
use utf8;
binmode(STDOUT, ":utf8");

my $url = 'https://www.jra.go.jp/datafile/seiseki/replay/2021/jyusyo.html';
my $ua = LWP::UserAgent->new();
$ua->agent('Mozilla/4.0 (compatible; MSIE 6.0\'; Windows NT 5.0;)');
my $res = $ua->get($url);
my $html = $res->decoded_content;

my $te = HTML::TableExtract->new();
$te->parse($html);
my ($ts) = $te->first_table_found();

print("BEGIN:VCALENDAR\n");
print("VERSIONS:2.0\n");
print("X-WR-CALNAME:JRAGRADERACE2021\n");
print("X-WR-TIMEZONE:Asia/Tokyo\n");

#[0] \ "1月5日火曜",
#[1] \ "G恵羯涯眷",
#[2] \ "中山",
#[3] \ "4歳以上",
#[4] \ "芝2,000メートル",

for my $row ($ts->rows) {
    my $date = $row->[0];
    my $desc = $row->[1];
    my $location = $row->[2];
    my $age = $row->[3];
    my $course = $row->[4];

    next if ($date eq "月日");

    $date =~ m/(\d+)月(\d+)日/;
    my $mon = $1;
    my $day = $2;
    $date = sprintf("2021%02d%02d", $mon, $day);
    my $d = Time::Piece->strptime($date, '%Y%m%d');

    print("BEGIN:VEVENT\n");
    printf("DTSTART;VALUE=DATE:%s\n", $d->strftime("%Y%m%d"));
    $d += ONE_DAY;
    printf("DTEND;VALUE=DATE:%s\n", $d->strftime("%Y%m%d"));
    
    $desc =~ m/(G(||)|重賞)(.*)/;
    my $grade = $1;
    my $name = $3;
    $grade =~ s//I/;
    $grade =~ s//II/;
    $grade =~ s//III/;

    printf("SUMMARY:%s(%s)\n", $name, $grade);
    printf("LOCATION:%s競馬場\n", $location);
    printf("DESCRIPTION:%s %s\n", $age, $course);
    print("END:VEVENT\n");
}

print("END:VCALENDAR\n");

 注意点としては、上述の通り、2020/12/27時点では、格付け未確定の重賞があること。2021年の重賞レース一覧のページには、以下のような注意書きが添えられている。

注記:	葵SはG軍壁嫂柔礎
注記:	東スポ杯2歳SはG恭壁嫂柔礎

 多分、申請通りの格付けになるんだろうが、過去には申請が通らなかったこともあるらしく、油断できない。
 上記の重賞の格付けが確定したら、新たにicsファイルを作り直すか、JRAが提供するicsファイルをゲットするかして、Googleカレンダーにインポートし直すか、Googleカレンダー上で、2021/05/29(土)の葵S(「重賞」を「GIII」へ?)と、2021/11/20(土)の東スポ杯2歳S(「GIII」を「GII」へ?)の情報を手で修正してください。
 いや、それなら二、三週間待てよ、って話ですが。