Add IMDb mirror (port 40015) - #33
Conversation
Adds sites/imdb/ — a Flask mirror of imdb.com built per the
.claude/skills/ six-phase contributor pipeline (clone-website,
design-tasks, evolve-env, harden-env, seed-database).
Catalog (scraped from imdb.com via Playwright, gitignored in
sites/imdb/scraped_data/; shipped as instance_seed/imdb.db +
static/images/ via HF dataset):
- 392 titles (Top 250 + Top TV 250 + Most Popular + Box Office)
- 3796 persons (cast / crew with real bios + headshots)
- 4280 real posters + headshots
- 19 canonical IMDb genres
Coverage:
- 22 routes: homepage / title detail / fullcredits / reviews /
rate / watchlist toggle / person detail / scored search /
advanced search (genre / year / rating / sort) /
4 charts (Top 250 / Top TV / Most Popular / Box Office) /
genre browse / news / auth (login / register / account)
- scored token-overlap search (not strict-AND), 18 stop words
- 4 benchmark users alice.j / bob.c / carol.d / david.k
@ test.com (password TestPass123!) — pre-seeded with
4-item watchlists, 3-5 ratings, one written review each
- 12 seeded news items + 12 featured reviews (high
helpful-count) across major titles
- 18 benchmark tasks in tasks.jsonl across 6 functional areas:
chart browse, title detail, person filmography, advanced
search, genre browse, user state — including 4 hard tasks
(>= 5 steps) and 2 disambiguation tasks (bob's SF/fantasy
watchlist subset; carol's crime film subset)
Data integrity:
- canonical-URL guard skips 65 IMDb-redirected tt_ids
(some unknown tt_ids returned the wrong page)
- garbage filter skips 1854 names that hit IMDb's 403/
error fallback during concurrent scraping
- html.unescape on all string fields; hero h1 preferred
over ld.name (which is sometimes original-language)
- lowercase substring match for box-office data-testid keys
HF asset PR:
https://huggingface.co/datasets/ChilleD/WebHarbor/discussions/23
Review — Add IMDb WebHarbor mirror (#33)Verdict: Request changes (critical — site crashes on every boot). Mechanical
Visual fidelity: FAIL (blocked)Templates resemble IMDb (screenshots Functional depth: FAIL (blocked)Top-250, title detail, search, ratings can't be exercised against an empty/crashing DB. Task quality: 0/20 verifiable (blocked)Tasks reference specific titles/people not present in the booted env → unsolvable as-is. Required before approval: (1) make seeding idempotent so boot/reset don't crash; |
Review —
|
|
I'm taking this contribution for environment, task-quality, and verifier review. I'll preserve @hqhq1025's original work, make any necessary fixes on a separate reviewer branch, and open a linked |
|
The reviewer-owned Draft is now available: #89 — Review: validate IMDb mirror, sourced seed and task grading. It preserves @hqhq1025's original contribution and commit history. The report includes the immutable HF candidate #57, source/before/after screenshots, recorded 22-site mechanical checks, and reproducible engineering validation. Task execution/scoring, visual scope confirmation and independent frozen-run review are still in progress; this is not a ready-for-merge verdict. |
Summary
sites/imdb/— a Flask mirror of imdb.com that fits WebHarbor's 16th port slot (40000+15 = 40015).claude/skills/six-phase pipeline (clone-website → design-tasks → evolve-env → harden-env → seed-database)Catalog
Routes (22)
/,/_health/title/<tt>,/title/<tt>/fullcredits,/title/<tt>/reviews,/title/<tt>/review(POST)/title/<tt>/rate(POST),/title/<tt>/watchlist(POST)/name/<nm>/find?q=&s=all|tt|nm,/search,/search/title?genre=&year_from=&year_to=&rating_min=&sort=/chart/top,/chart/toptv,/chart/moviemeter,/chart/boxoffice/genre/<slug>/list/watchlist,/list/ratings/news/login,/register,/logout,/accountBenchmark users (per skill convention)
alice.j/bob.c/carol.d/david.k@test.com, passwordTestPass123!— each pre-seeded with a 4-item watchlist, 3-5 ratings, and one written review.tasks.jsonl (18 tasks, 6 functional areas × 3)
Data integrity safeguards (added after live audit)
ld.urltt_id ≠ filename tt_id (IMDb redirects unknown tt_ids to a random valid page; without this guard, e.g. tt0245429 silently became Psycho)html.unescape()on all string fields; heroh1preferred overld.name(which is sometimes original-language:GisaengchungvsParasite)bo_grossdomestic,bo_cumulativeworldwidegross, ...)Paired HF PR
instance_seed/imdb.db+static/images/*shipped via:https://huggingface.co/datasets/ChilleD/WebHarbor/discussions/23
After that HF PR merges, bump
.assets-revisionto the merge SHA in a follow-up commit.Test plan
./scripts/build.shsucceeds (after./scripts/fetch_assets.shpulls HF assets)/healthreports all 16 sites alivePOST /reset/imdb→ md5sum ofinstance/imdb.dbmatchesinstance_seed/imdb.db(byte-identical)/reset-allfinishes under 10s (measured 1.3s on 26-site test image)/reviewspage