원클릭으로
stranger
Scraper conventions for Stranger cinema (stranger.jp) — Eigaland JSON API, Taiwan movie filter via countries field
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Scraper conventions for Stranger cinema (stranger.jp) — Eigaland JSON API, Taiwan movie filter via countries field
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Planning principles, model selection, and scope rules for the Architect agent
Implementation rules for database migrations, Python scrapers, and Next.js web for the Engineer agent
BaseScraper contract, field rules, and Peatix-specific conventions for the Scraper Expert agent
Scraper test execution rules, output validation criteria, and report format for the Tester agent
BaseScraper contract, field rules, and Peatix-specific conventions for the Scraper Expert agent
Platform rules and field mappings for the 誠品生活日本橋 (eslite spectrum Nihonbashi) scraper
| name | stranger |
| description | Scraper conventions for Stranger cinema (stranger.jp) — Eigaland JSON API, Taiwan movie filter via countries field |
| applyTo | scraper/sources/stranger.py |
| Property | Value |
|---|---|
| Site URL | https://stranger.jp/ |
| API / Rendering | Eigaland JSON API (no auth) |
| Auth | None required |
| Rate limit | Conservative: 0.3s between calls |
| Source name | stranger |
| Source ID format | stranger_{movieId} (MongoDB ObjectId string) |
| Venue | Stranger, 東京都墨田区菊川3丁目6-13 |
| Endpoint | Purpose |
|---|---|
GET /api/website/show/listByDomainAndDate?domain=stranger.jp&date=YYYY-MM-DD | Daily show list |
GET /api/website/movie/detail/{movieId}?domain=stranger.jp | Full movie detail |
| Event field | API source |
|---|---|
raw_title / name_ja | movieDetail.movieName |
start_date | Earliest date in 90-day window where movie appears |
end_date | Latest date in 90-day window where movie appears |
director | detail.directors joined with ", " |
raw_description | Decoded base64 detail.synopsis + slogan + cast etc. |
official_url | detail.officialPageUrl (movie's own website) |
source_url | https://stranger.jp/movie/{movieId} |
location_name | "Stranger" (fixed) |
location_address | "東京都墨田区菊川3丁目6-13" (fixed) |
movieDetail.countries array for "台湾" or "台灣".detail.synopsis is base64-encoded HTML. Decode via:
base64.b64decode(b64_str).decode("utf-8")html.parser.HTMLParserThe resulting plain text may contain non-breaking spaces; strip() each part.
One Event per movieId — not one per screening day. The scraper loops all 90 days to find min_date / max_date, then calls detail API once per unique movieId.
openDate in the list API is the movie's release date in Japan, not the screening date.listByDomainAndDate?date=...) as the screening date.start_date = earliest date the movie appears across the 90-day window.end_date = latest date the movie appears across the 90-day window.datetime with tzinfo=JST (required by dedup_events).| Symptom | Cause | Fix |
|---|---|---|
| No Taiwan events found | Film schedule not yet published | Normal; API only returns published shows |
director is empty list | No directors in API data | No fix needed — annotator will try to fill |
synopsis decode error | API returned non-base64 data | _decode_synopsis() returns "" gracefully |
91 events (one per day) | Bug: forgot to dedup by movieId | Ensure taiwan_movies dict deduplication in loop |
Add lessons learned here as they arise.