Skip to content

Repository files navigation

四大电影奖项获奖与提名查询站

奥斯卡金像奖 + 欧洲三大电影节(戛纳 / 威尼斯 / 柏林)的获奖与提名数据查询站。

在线访问https://dylan-byte-max.github.io/world-film-awards/

仓库原名 oscar-awards(起初只做奥斯卡),加入欧洲三大电影节后更名为 world-film-awards。 GitHub 会自动重定向仓库页、issues、star 与 git 操作,但不重定向 Pages 站点 URL, 因此旧地址 dylan-byte-max.github.io/oscar-awards/ 由一个独立的跳转仓库接管。

数据规模

奖项 覆盖范围 获奖 提名
奥斯卡金像奖 第 1–98 届(1929–2026) 2,478 10,580
戛纳国际电影节 第 1–79 届(1946–2026) 553
威尼斯国际电影节 1932–2026(86 届记录) 348
柏林国际电影节 第 1–76 届(1951–2026) 455
合计 3,834 10,580

奥斯卡细项:纯陪跑(提名未获奖)8,545 条、合并去重 11,023 条、涉及影片 5,359 部、入选者 7,597 位、奖项类别 69 个定义(56 个有实际记录,余下为历史废止奖项)、题材标签 324 种。

三大节细项:涉及影片 2,327 部(含奥斯卡)、51 个奖项 QID 有实际记录(映射表 56 个)、7 个奖项分组。

站点结构

顶部导航将五个区域并列,各自独立数据域:

区域 内容
奥斯卡金像奖 获奖 / 全部提名 / 获奖+提名 三态切换,五个查询视图
戛纳国际电影节 按届次 / 按奖项 / 本节检索 / 数据统计
威尼斯国际电影节 同上
柏林国际电影节 同上
综合数据查询 跨四大奖项按 8 个维度组合筛选 + 跨奖项交集分析

奥斯卡区

全局数据范围三态切换(切换后所有视图与统计同步生效)

  • 仅获奖 — 默认,只加载 553 KB
  • 全部提名 — 含得主的完整提名名单,首次切换时懒加载 2.3 MB
  • 获奖 + 提名 — 合并去重口径,用于做完整对照
视图 说明
按年份 选任意一届,看该届每个奖项的完整提名名单并高亮得主
按奖项 追溯单个奖项的历年序列(如「最佳影片」98 届)
按题材 两级归类:先点 19 个大类直接筛选,再点「细分」下钻到 324 个原始标签,计数随数据范围与时长档位动态变化
全库检索 关键词 + 结果类型 + 影片时长档位筛选,「仅陪跑」可一次捞出所有提名未获奖作品
数据统计 零获奖提名最多榜、提名总数榜、转化率最高/最低榜等 10 个章节

三大节各区

视图 说明
按届次查询 年份格子快速跳转(灰色虚线 = 该届暂无数据或未举办),按奖项分组展示
按奖项查询 单个奖项的历年获奖序列(如金棕榈 1946–2026),支持年份区间
本节检索 关键词 + 奖项类型 + 主题材 / 子题材两级联动 + 国家 + 影片时长六维筛选
数据统计 获奖最多的导演/国家、各十年记录密度等

各节配独立主色(戛纳金 / 威尼斯蓝 / 柏林红)以便快速辨识。

综合数据查询区

10 个筛选维度可任意组合:关键词、奖项范围、奖项类型、具体奖项、主题材子题材、国家/地区、年份从-至、只看最高奖、影片时长档位。

  • 只看最高奖 — 仅保留奥斯卡最佳影片 / 金棕榈 / 金狮 / 金熊,快速看四大奖项各年头名
  • 跨奖项交集分析 — 找出同时获得多个奖项认可的影片(如《寄生虫》= 戛纳金棕榈 + 奥斯卡最佳影片),共 98 部。它只吃奖项范围 / 题材 / 国家 / 年份这类「域」条件,不吃具体奖项、最高奖、关键词 —— 否则一勾「只看最高奖」,交集就只剩极少数同时拿两个最高奖的片,失去分析价值

所有表格支持点击表头排序(三态循环:升序 ▲ → 降序 ▼ → 取消)、导出 CSV(UTF-8 BOM,Excel 直接打开不乱码)。

数据来源与口径

主体来自 Wikidata 结构化数据,经 QLever 镜像端点批量查询:

  • 获奖:P166(获奖)+ P1686(获奖作品)+ P805(颁奖礼)+ P585(时间点)
  • 提名:P1411(提名)+ 同套限定符(仅奥斯卡有效,见下)
  • 影片元数据:P136(题材)、P577(发行日期)、P495(原属国)、P57(导演)
  • 第 98 届奥斯卡由维基百科官方名单逐项核对补录

三大节与奥斯卡共用同一套影片元数据抓取口径(其中 515 个影片实体直接复用奥斯卡侧缓存),保证两边可直接横向对比。

抓取采用三阶段模式

Stage 1 只取 QID 关系(零 label 过滤)→ Stage 2 分语言批量补 label → Stage 3 补 P31 class。

两条实测教训写在这里,避免重犯:

  1. FILTER(LANG(?l)="en")强制条件会让《爱乐之城》这类在 Wikidata 上没有英文标签的影片整条消失;写成 OPTIONAL 又引发笛卡尔积超时。故拆成两阶段。
  2. QLever 的 CSV 输出不带语言标记,靠 isascii() 猜英文会让德/法/意语的 ASCII 名抢占英文位(Anatomie eines Falls 顶掉了真名 Anatomy of a Fall)。故按语言分多次独立查询。

届次如何确定(三大节与奥斯卡的关键差异)

奥斯卡每条记录都带权威的 P805 颁奖礼限定符,届次可直接读出。但三大节的 P805 覆盖率只有 4–14%,绝大多数记录仅有 P585 年份(覆盖约 90%)。

因此三大节以举办年份为唯一主键,再按各节「届次↔年份」映射表换算届次号。映射表由 Wikidata 各届实体的序数建立,并通过 6 项交叉验证(戛纳 2026 = 第 79 届 / 柏林 2026 = 第 76 届 / 威尼斯 2026 = 第 83 届等)。已剔除停办年份:

  • 戛纳:1948、1950(资金问题停办)
  • 威尼斯:1933、1943–1945、1973–1975、1977–1978(停办或停评)
  • 柏林:无停办

威尼斯届次号存在历史重排 — 1939 与 1946 都被标为「第 7 届」(1940–1942 三届在战时举办,战后不被完整承认)。本站以年份为唯一键规避冲突,届次号仅作展示。

年份口径

  • 三大节用举办年份(电影节实际举行的年份)
  • 奥斯卡用表彰年度(即影片年份,比颁奖年早一年)

两者语义接近(都 ≈ 影片面世年份),综合查询的「年份从/至」已统一到该口径。

获奖标记规则分两档(奥斯卡)

  • 表演类按「届次 + 奖项 + 影片 + 人名交集」匹配(同一影片可有多位演员竞逐同一奖项,如第 8 届《叛舰喋血记》三人同争最佳男主角)
  • 作品型奖项按「届次 + 奖项 + 影片」匹配(团队奖项在 Wikidata 中获奖与提名常署不同人,如第 92 届《1917》最佳视效获奖记 Guillaume Rocheron、提名记 Dominic Tuohy / Greg Butler,强求人名交集会把真实得主误判为陪跑)

题材归类口径(19 个大类)

Wikidata 的 P136 是众包字段,粒度完全不受控 —— 奥斯卡侧 324 个标签里,长尾 130 多个只有 1–2 条记录。全平铺出来是一片标签海,点开等于没有筛选意义。因此建了一层归类映射(genre_map.py),把 338 个标签(奥斯卡 324 ∪ 三大节 139)收敛为 19 个大类,原始标签一个不丢,可下钻。

  • 复合标签同时计入两个大类 — 「犯罪惊悚」既属犯罪也属惊悚悬疑。因此各大类计数之和大于记录总数;单个大类的计数已按记录去重(不去重的话恐怖大类会从实际 308 虚高到 737)。
  • 大类计数基于「未应用题材筛选」的范围 — 否则勾了犯罪之后,喜剧大类的数字会变成「犯罪片里的喜剧数」,无法横向比较。
  • 奇幻与科幻、恐怖与惊悚均不合并 — 在选片语境里这几组差别很大,受众不重叠。
  • 歌曲/配乐流派单独标注(重要) — 实测有约 80 个标签(民乐、放克、古典音乐、迪斯科、比波普等)100% 只出现在最佳原创歌曲、最佳原创配乐等奖项上,它们描述的是那首歌/那段配乐本身,而不是影片题材。这批标签归入「音乐歌舞」大类并在抽屉中以虚线框单独分段,避免把「放克 2」误读成「有 2 部放克电影」(实际是 2 首放克风格的获奖歌曲)。
  • 个别标签的主体是人而非影片 — 如「比波普」曾挂在最佳男主角上,查明该条目主体是爵士乐手德克斯特·戈登。这类上游噪声无法在抓取层剔除,只能靠分段标注提示口径。

检索区的题材下拉:主题材 + 子题材两级联动

四处检索区(奥斯卡全库检索、戛纳/威尼斯/柏林本节检索、综合数据查询)原先是一个下拉塞下全部层级 —— 19 个 <optgroup> 各带一个整类选项加上全部子题材,本节 140 项 / 综合区 339 项,下拉条拉出屏幕外。现改为两个框:

  • 主题材只列 19 个大类(含条数与细分数),永远 20 行以内一屏装完
  • 子题材在选定主题材后才填充该大类下的细分,按当前范围内条数降序

三条不显眼但很要紧的规则:

规则 不这么做会怎样
主题材为空时子题材禁用并置空 让它列全部 338 项=把老问题原封不动搬到第二个框,等于没改
主题材变化时子题材必须重置 会留下「主=恐怖 + 子=喜剧剧情」这种跨类残留组合,筛出 0 条且用户完全看不出为什么
下拉里的条数随数据范围(仅获奖/获奖+提名)重算 筛选本身是对的、只有数字是旧的(如切到「获奖+提名」后剧情仍显示 1,545 而非 7,040),这种错几乎抓不到

判定值仍沿用 M:大类名 / 具体题材名两种编码,选了子题材以子为准(更细)、否则按整个大类筛,因此 genreMatcher 与下游的 CSV 导出、统计、时长缺口逻辑一行未改。交集分析也走同一套合成值 —— 只读主题材会让「犯罪 → 黑帮」在那里退化成整个犯罪大类。

禁用态给了明显的视觉降级(opacity:.45 + cursor:not-allowed):否则用户看到一个跟旁边一模一样的下拉却点不开,只会以为页面坏了。

综合区跨四大奖项检索,用的是 338 全集映射(早期误用奥斯卡侧 324 子集,导致三大节独有的 14 个标签落进「未归类」,已修)。实测当前 338 个标签全部有大类归属,「未归类」这个兜底选项不会出现,保留它只为防映射表回退。

影片时长口径(P2047

取自影片实体的 P2047(duration)。奥斯卡侧覆盖 11,620 / 12,883 条(90.2%),三大节侧 1,020 / 1,093 条(93.3%)。

分母是「有影片名的记录」,不是全部记录。 奥斯卡有 175 条、三大节有 263 条(193 条上游未标注影片 + 70 条荣誉奖颁给个人)本就没有影片可言,拿它们当分母会把三大节覆盖率从真实的 93.3% 算成 75.2%。

抓取与清洗踩到的四件事:

  1. 上游单位不统一 — 实测混有 minute 731 / second 5 / hour 1 三种。必须走 psv:P2047 + wikibase:quantityUnit 路径取单位再换算,否则标成「2」(小时)的条目会被当成 2 分钟。
  2. 一片多值占 5.5% — 932 条影片上游收录了多个版本(《现代启示录》147/183/202、《指环王1》178/208/228),差异最大 55 分钟、足以跨越档位。统一取最小值=院线公映版,即获奖时评审看到的版本;前端带虚线下划线,悬停可见全部版本。
  3. 歌曲不是影片 — 用 P31(instance of)区分:short film / animated short film 是影片,musical work / single / song / music track with vocals 是歌曲。最佳原创歌曲奖的条目主体是那首歌(2–5 分钟),共 38 条,标记为「歌曲」且不计入任何影片时长档位 —— 否则筛「30 分钟内」会捞出一堆歌,短片统计全部失真。
  4. 拦下 1 条上游误录 — 《洛奇》主题曲 Gonna Fly Now(第 49 届最佳原创歌曲提名)被标为 248 minute,实际约 2 分 48 秒,明显是把「2:48」误录了。无法反推正确值,故置空并计入缺失,不做猜测。只对歌曲类做「>20 分钟即视为误录」的上限校验 —— 影片侧极值已全部交叉核对且很干净(最长 480 分钟确为超长片、最短 2–3 分钟均标 short film)。

档位切法:半小时等宽切到 180 分钟,之后收口为「180 分钟以上」,共 7 档,另设「无时长数据」档。区间为左开右闭30 < m ≤ 60),即正好 60 分钟的片归「30–60 分钟」而非「60–90」,符合「一小时以内」的直觉。基于全量 5,319 部影片的实测分布:

档位 条数 占比 说明
≤30 939 17.7% 短片奖(动画/实景/纪录短片)
30–60 213 4.0%
60–90 666 12.5%
90–120 2,282 42.9% 标准商业长片,最大档
120–150 950 17.9%
150–180 196 3.7%
>180 73 1.4%

150 分钟以上合计仅 5.1%,再往细切每档只剩几十条,筛出来没有实际意义,所以在 180 收口。档位定义由 dur_buckets.py 一份产出、两侧共用,避免两边切法不一致 —— 那种不一致的表现是「同样选 60–90,两个区结果不同」,极难排查。

排序必须走数值分支sv() 的兜底是 (r[k]||"").toLowerCase(),时长若落到那里会按字符串排("9" > "142"),结果完全错乱且不报任何错。缺失值统一给 Infinity(三大节侧给 null 走「空值恒排末尾」分支),点「时长 ▲」看最短的片时不会先翻过一千多条「—」。

覆盖率不要用「取前 N 条」估计:第一轮探测时用 sorted(qids)[:300] 得 93.7%,属有偏抽样 —— QID 小意味着条目建得早、通常更知名、元数据更全。改随机抽样(n=800)后为 86.1%,全量实测 88.0%。

已知局限

奥斯卡

  1. 上游提名收录不全(最需注意) — Wikidata 的 P1411 数据对部分影片存在漏录,且不可通过抓取手段弥补。实测:《All About Eve》第 23 届实际 14 项提名仅录 12 项、《Oppenheimer》第 96 届实际 13 项仅录 10 项、《爱乐之城》第 89 届实际 14 项仅录 13 项。提名数应视为下限,绝对数值可能偏低,相对排序仍具参考价值。
  2. 获奖侧已复验完整 — Titanic 11/11、指环王:王者无敌 11/11、Oppenheimer 7/7、爱乐之城 6/6 均与权威名单一致。
  3. 无提名环节的奖项 — 荣誉奖(95)、科学技术奖(57)、人道主义奖(44)、托尔伯格纪念奖(21)共约 217 条不设提名,仅出现在获奖数据中。
  4. 提名库未覆盖的获奖条目 共 443 条,除上述 217 条外主要是最佳原创歌曲(107)与最佳纪录长片(56)的提名缺口。做「某片提名 vs 获奖」完整对照时建议用「获奖 + 提名」范围。
  5. 无英文标签的影片 — 9 部影片在 Wikidata 上没有英文标签(《爱乐之城》《阿甘正传》《玩具总动员》《钢铁侠》《捍卫战士:独行侠》等),影片列直接显示简体中文名。
  6. 统计按「片名 + 年份」识别影片 — 同名翻拍片(如 1937/1954/1976/2018 四版《A Star Is Born》)分列显示,不会被合并而虚增提名数。
  7. 时长缺失约 10% — 1,263 条有影片名的记录无 P2047 时长,多为早期届次与短片类奖项。按时长档位筛选时这批记录不会出现,各查询区提示条会实时标出缺口数,也可选「无时长数据」档单独查看。

三大节

  1. 193 条记录(14%)上游未标注获奖影片 — Wikidata 上这些奖项只挂在人身上(P166 记在导演/演员实体),没有 P1686 指向影片。本站标为不完整并淡色弱化显示,不猜测、不回填。分布:戛纳 69 / 柏林 68 / 威尼斯 56。
  2. 为什么不自动把人回挂到影片 — 曾尝试「若该届该奖恰有一部影片就把人回挂上去」,结果张冠李戴:Werner Herzog 2025 年拿的是终身成就金狮,却被上游错标成金狮奖,回挂后显示成了另一部影片(Jim Jarmusch 执导)的获奖人。现要求人与影片存在独立关联证据(该人须是该片 P57 导演)才合并,宁可留 193 条不完整记录也不伪造归属。
  3. 荣誉类记录本就没有影片 — 共 263 条影片列为「—」,其中荣誉类(终身成就金狮/金熊、荣誉金棕榈等)属正常,不计入上面的「不完整」标记。同届同奖多人共获很常见(如 1995 年终身成就金狮 4 人同获),本站合并为一条多人记录,不拆成 4 条。
  4. 没有「入围/提名」维度 — 三大节的 P1411 在 Wikidata 上几乎为空,主竞赛入围片单没有结构化收录。要补齐需从维基百科逐届抓取约 230 个页面且页面结构历年不一致,尚未实现
  5. 个别届次上游确实缺记录 — 如柏林 2024、2026 的金熊奖在 Wikidata 上无条目,年份格子中会灰显并标注「暂无数据」(虚线边框)。这是上游缺口,不是筛选错误。
  6. 题材与中文片名覆盖不全 — 1,077 条(79%)有 P136 题材标注,1,046 条(77%)有中文片名。按题材筛选时无标注记录不会出现。
  7. 奖项映射为人工核定的白名单 — 三节共核定 56 个奖项(戛纳 16 / 威尼斯 13 / 柏林 27),其中 51 个 QID 在上游有实际记录;余下 5 个(威尼斯 FAI 基金会奖、柏林银熊奖杰出艺术贡献 / 普世评审团奖 / 水晶熊奖 / 蓝天使奖)Wikidata 暂无条目。未被映射的冷门/已废止奖项也不会出现 —— 白名单机制避免噪声条目混入,代价是极冷门奖项可能被漏掉。
  8. 同一奖项存在多个 QID — 柏林「银熊奖评审团奖」在 Wikidata 上有两个实体(Q321207 用到 2021、Q105786956 自 2022 起,系柏林 2022 年奖项体系改制后新建),年份不重叠、实为同一奖项。站内与 Excel 汇总表均按「电影节 + 奖项名」聚合而非按 QID,故 51 个 QID 对应 50 行汇总。

文件结构

index.html                          页面骨架与样式(含五个 zone)
app.js                              奥斯卡区交互逻辑
fest.js                             三大节 + 综合查询逻辑
build/genre_map.py                  题材归类映射表(338 标签 → 19 大类,构建期消费)
build/dur_buckets.py                时长档位定义(奥斯卡侧与三大节侧共用一份,构建期消费)
data/base.json          46 KB       奥斯卡届次/奖项/题材/大类/分组元信息
data/wins.json         553 KB       奥斯卡获奖记录(默认加载)
data/noms.json         2.3 MB       奥斯卡提名记录(懒加载)
data/fests_base.json    45 KB       三大节元信息 + 届次映射 + 两份大类表(本节 / 全集)
data/fests.json        314 KB       三大节获奖记录
四大电影奖项获奖与提名名单_全量数据.xlsx    Excel 工作簿(9 张表)
四大电影奖项获奖与提名名单_单文件版.html    双击即开,无需服务器

fest.jsapp.js 完全解耦(两边数据语义差异大,强行共用会让两边都变形),仅通过 festInit() 一处挂钩。

数据分片 + 字段缩写压缩:

  • 奥斯卡:n(届次)、c(奖项)、t(类型)、f(影片)、z(中文名)、y(年份)、g(题材)、k(国家)、d(导演)、p(入选者)、w(是否获奖)、i(获奖是否已被提名库覆盖)、u(时长分钟)、us(=1 表示歌曲时长)、ua(多版本全部值)
  • 三大节:s(所属节)、n(届次)、y(举办年份)、c(奖项中文名)、q(奖项 QID)、gp(分组)、f(影片)、z(中文片名)、fy(影片年份)、g(题材)、k(国家)、d(导演)、p(获奖人)、i(IMDb ID)、x(完整度标记)、u(时长分钟)、us/ua(同奥斯卡侧)

离线交付物

  • Excel 工作簿 — 获奖 / 提名(含得主)/ 陪跑 / 按奖项汇总 / 按影片汇总 / 数据说明,金蓝双色标记,全表支持筛选
  • 单文件版 HTML — 数据内联,双击直接打开,file:// 协议下无 CORS 问题

本地预览

python3 -m http.server 8011
# 打开 http://localhost:8011

直接双击 index.html 会因浏览器 CORS 策略无法加载 data/*.json,请改用单文件版或本地服务器。

About

世界四大电影奖项获奖与提名查询站 — 奥斯卡 98 届 / 戛纳 / 威尼斯 / 柏林,共 12,379 条记录(奥斯卡获奖 2,478 + 提名 10,580 去重后 11,023,三大节获奖 1,356),支持按年份·奖项·题材·国家检索与跨奖项交集分析

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages