一键导入
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 职业分类
| 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.
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