blob: f9daa5c0a75b78a9154fb7a16151050e4a5ada5c (
plain)
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
|
/**
* Resource route: /api/scrape
*
* POST (form action) — バックグラウンドでスクレイプ開始、202 を即時返却
* GET ?venue_id=xxx — 特定会場のみバックグラウンド開始
* GET (パラメータなし) — 全会場をバックグラウンド開始
*
* ステータス確認は /api/scrape-status?run_id=xxx
*/
import { redirect } from "react-router";
import type { Route } from "./+types/api.scrape";
import { startAllScrapersAsync, startScraperAsync } from "~/lib/scraper-runner.server";
export async function action({ request }: Route.ActionArgs) {
const formData = await request.formData();
const venueId = formData.get("venue_id");
const run_id = venueId
? startScraperAsync(String(venueId))
: startAllScrapersAsync();
const referer = request.headers.get("Referer");
if (referer) return redirect(referer);
return Response.json({ run_id, status: "started" }, { status: 202 });
}
export async function loader({ request }: Route.LoaderArgs) {
const url = new URL(request.url);
const venueId = url.searchParams.get("venue_id");
const run_id = venueId
? startScraperAsync(venueId)
: startAllScrapersAsync();
return Response.json({ run_id, status: "started" }, { status: 202 });
}
|