diff options
| author | yyamashita <yyamashita@mosquit.one> | 2026-05-07 19:27:50 +0900 |
|---|---|---|
| committer | yyamashita <yyamashita@mosquit.one> | 2026-05-07 19:27:50 +0900 |
| commit | d5e975b601e70adf901c8e1eb7e61f0388941195 (patch) | |
| tree | f1778ff15b6540b44c354cb76c44aac795448c4a /app/scrapers/warp-kichijoji.ts | |
| parent | bffc2c74408ff7163cea0c0392dfc4b15c620a5f (diff) | |
Add 5 new venue scrapers; extract artist info for WARP, shibuya-o, MOON STEP, mod
New scrapers: Fever 下北沢, Nine Spices 下北沢, 西荻窪 JAM, mod 柴崎, 中野 MOON STEP
Artist extraction added/fixed:
- warp-kichijoji: parse div.w-flyer (clone + remove nested notes-wrapper)
- shibuya-o: rewrite to scrape each sub-venue; artist from li.p-scheduled-card__artist-item
- moon-step-nakano: parse 出演 section from WordPress API description HTML
- mod-shibasaki: fetch individual event pages in parallel; handle live:/出演:/・ bullet formats
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'app/scrapers/warp-kichijoji.ts')
| -rw-r--r-- | app/scrapers/warp-kichijoji.ts | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/app/scrapers/warp-kichijoji.ts b/app/scrapers/warp-kichijoji.ts index 8a828ea..8929fef 100644 --- a/app/scrapers/warp-kichijoji.ts +++ b/app/scrapers/warp-kichijoji.ts @@ -76,10 +76,28 @@ export const scraper: Scraper = { ? rawImg.replace(/^https?:\/\/sp-ao\.shortpixel\.ai\/client\/[^/]+\//, "") : null; + // Artists in <div class="w-flyer"> separated by <br> + // notes-wrapper and detail-texts are nested inside w-flyer — clone and strip them + const $wFlyer = $el.find("div.w-flyer").first().clone(); + $wFlyer.find("section.notes-wrapper, div.detail-texts").remove(); + $wFlyer.find("br").replaceWith("\n"); + const rawArtist = $wFlyer.text(); + const artistLines: string[] = []; + for (const raw of rawArtist.split("\n")) { + const l = raw.trim(); + if (!l) { + if (artistLines.length > 0) break; // stop at first blank line after artists + continue; + } + if (/^[■▼◼▶◆]|チケット|ticket|TICKET|予約|http|\d{1,2}:\d{2}|[¥¥]/i.test(l)) break; + artistLines.push(l); + } + const artist = artistLines.length > 0 ? artistLines.join(" / ") : null; + events.push({ venue_id: venue.id, title, - artist: null, + artist, date, open_time: isTime(openTime) ? openTime : null, start_time: isTime(startTime) ? startTime : null, |
