e271da634e
Adds 274-lyrics-index.py and its output 274-lyrics-index.csv: every sung line resolved to its roster entry, with coordinates and timing. 98 lyric lines -> 99 rows. Columns are start/stop as mm:ss.xx and as seconds, the line as sung, the roster's full name for it, kind, km, lat/lon, and km_from/km_to for district headers. stop is the next timestamp in the file, spacer lines included, so every line has one. Four aliases cover the gap between sung and registered names: the three power stations are sung without their operator prefix, and モトツ橋にモトツシェルター names two facilities, so it emits two rows sharing one timing and one coordinate. 東に続く is typed as closing, no object. District headers resolve from the run of objects they introduce, not from 274-districts.json. Those bands are sampled along the road and so cannot describe a district the road does not enter: 宮下町 has no band at all, 本町東 exists only as 本町東一丁目, and 千栄's band sits at 107.25-107.75 while the station it introduces is at km 104.52, 666 m off the carriageway inside 千栄. Object names in the roster are unique, so no other disambiguation is needed. The script exits non-zero and names any line it cannot resolve. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
WIP songs
Unless explicitly noticed in the file, the 'WIP' status applies to the whole song as a musical capsule.
This means however it might not seem like, a song has its lyrics completed if the file doesn't say otherwise. Yes.