“豆瓣电影评级”插件开发始末

二月份在国内过了个年,捎带和同学去看了场非常精彩的电影《红海行动》。随着电影热度逐渐上升,在一片好评中,我注意到了一些不一样的声音,有些家长吐槽带自己家孩子也去看这部电影,导致孩子被一些少儿不宜的镜头吓到。电影中的残肢断臂、血肉横飞确实让大家了解了战争的残酷,从反战的角度来讲,这无疑是很成功的,但这些镜头会不可避免的给儿童留下些许阴影,从心理健康的角度来说是对儿童不利的。种种原因,电影分级制度在国内迟迟没有落地,而我们一直在追赶学习的美国从1968年就有了成熟的电影分级制度,在此我就不过多吐槽这个事了。所以我想如果有这样一款插件,在家长浏览一部电影的时候,能自动显示它在美国的评级,就会提醒家长考虑,自家的孩子是否适合看这样一部电影。虽然显示的是美国的评级,但我觉得多少也对我们有些借鉴作用,美国孩子成熟都早,他们都觉得一部电影不适合13岁以下的小孩了,何况我们,对吧?

从技术的角度来说,豆瓣是最容易的,因为豆瓣很贴心的在电影页面提供了该电影的 imdb 链接(如果有的话),这样我们就可以通过该链接去获取 imdb 网站上的评级。当然,更合适的网站应该是像猫眼电影这样的购票网站或者像优酷这样的视频网站,这个是后话了。imdb 提供了很多公开数据,可惜的是我没有找到评级信息,为了避免在插件中解析网页的麻烦,同时也为了避免万一 imdb 把插件封禁,我决定自己搭一个 API 服务器,数据库用的 PostgreSQL,其中存储电影的 imdb 编号和分级。后台写的很简单,用 flask 框架搭起 API 的简单结构,仅仅提供给一个 imdb 编号返回评级的功能,跑在 gunicorn 上,再配置 nginx 作为反向代理,整体主要还是运维的活,不擅此道,好在有篇现成的教程。至于说浏览器插件,那就更简单了,在网上随便找了个开源的改了改,再参考参考谷歌上的文档,使其能发送 http 请求,简单编辑一下 DOM,也就足够了。目前看来运行还算稳定,效果也还可以,在豆瓣的 imdb 链接下面自动加一行 mpaa 评级。

很惭愧,就做了点微小的工作,谢谢大家!

2018年4月17日更新

趁着今天风水好,对插件进行了一些更新,使之支持知乎电影页面的评级。看客可能诧异,知乎不是装逼的地方吗?什么时候有电影信息了?其实这个更新也是临时起意,在浏览电影《湮灭》时,发现页面上居然有 imdb 网站的评分,该标签还是一个 imdb 页面的链接,这就说明能从网页上找到电影的 imdb id ,那我自然就不客气了,加了一段有点类似于豆瓣电影页面的解析,同时为了不破坏原有页面的观感,只是提供一个评级的小标签,该标签指向百度百科的 MPAA 介绍页面,这样用户也能轻松了解每个符号代表什么意思。实际效果如图所示

同时因为插件也开始支持豆瓣之外的网站,继续叫“豆瓣电影评级”不合适,就更名为“MPAA 电影评级”。