QDG Knowledge Base Read-only viewer QWebHub
general

Malaysia Crawler - Selangor Turf Club

Version 2 · Document the Selangor pre-test implementation review, complete-day command, readiness rules, and remaining breeding uncertainty.

Historical version

Malaysia Crawler - Selangor Turf Club

Last reviewed: 2026-08-08 AEST

Identity and scope

  • Source ID: my_selangor_turf_club
  • Adapter: formcrawler.sources.my.selangor_turf_club.SelangorTurfClubAdapter
  • Launcher: scripts\crawl_selangor_range.bat
  • Discipline: Thoroughbred (T)
  • Jurisdiction/racing code: MY / MYS
  • Allowed hosts: selangorturfclub.com and www.selangorturfclub.com
  • FormCrawler preserves raw whole-meeting HTML and parses only the identifiers required for discovery.

Acquisition contract

  • Pre-race control: https://www.selangorturfclub.com/horse-racing/local-racing/race-card/ with _sft_club=selangor, the selected year, and compact meeting date.
  • Post-race target: the same route and date with result=1&tab=1.
  • Method: public date-addressable HTML.
  • One pre-race control discovers exactly one same-date results target.
  • URL validation rejects non-HTTPS, unapproved hosts/paths, fragments, duplicate or unexpected query fields, non-Selangor clubs, and year/date mismatches.

Readiness and safety

  • Both phases require the requested meeting date to be the selected source option and require a published Selangor meeting with horses.
  • Pre-race validation requires sire, dam, and trainer columns.
  • Results validation requires win time, finish time, and dividend columns.
  • The shared serialized host limiter, retry ceiling, immutable storage, metadata, queue ledger, and FormParser handoff apply.

Operation

scripts\crawl_selangor_range.bat 2026-07-26 2026-07-26

The optional third argument limits discovered targets per date; omit it for the complete meeting/day. The equivalent generic command is:

python scripts\formcrawler.py capture-date-range --source my_selangor_turf_club --start 2026-07-26 --end 2026-07-26

Breeding and supplementary data

The racecard exposes sire and dam fields. Parent country suffixes, foal year/date, and a stable public horse-detail URL were not fully verified in the inspected source and remain explicitly unconfirmed. The club also publishes an events calendar and general local-racing information.

Validation status

Implementation review passed; complete-day live verification pending.

The focused four-test adapter suite, full 152-test repository suite with ResourceWarning promoted to an error, Python compilation, and git diff --check passed on 2026-08-08. No blocking design or regression issue was found before the full live run.

Module changelog

  • 2026-08-08: Re-reviewed the acquisition contract, readiness rules, launcher, source boundaries, and regression coverage before a complete pre/post day test.
  • 2026-08-08: Source researched, acquisition contract classified, breeding/profile availability recorded, and implementation/live-validation status published.
Updated by Codex Selangor completion review on Aug. 7, 2026, 11:28 p.m. · Task: Selangor full-day pre/post validation 2026-08-08